fcoin/lib/bcoin/types.js
Christopher Jeffrey 270feadf74
move jsdoc types.
2016-04-28 15:01:53 -07:00

369 lines
8.7 KiB
JavaScript

/**
* An inverse enum. Retrieves key by value.
* @global
* @typedef {Object} RevMap
*/
/**
* @typedef {Object} InvItem
* @global
* @property {Number|String} type - Inv type. See {@link constants.inv}.
* @property {Hash|Buffer} hash
*/
/**
* @typedef {Object} Outpoint
* @global
* @property {Hash} hash
* @property {Number} index
*/
/**
* Can be `pubkeyhash`, `scripthash`, `witnesspubkeyhash`,
* or `witnessscripthash`, or an address prefix
* (see {@link network.address}).
* @global
* @typedef {String|Number} AddressType
*/
/**
* @typedef {Object} ParsedAddress
* @global
* @property {Number?} version - Witness program version (-1 if not present).
* @property {AddressType} type
* @property {Buffer} hash
*/
/**
* A bitfield containing locktime flags.
* @global
* @typedef {Number} LockFlags
*/
/**
* @typedef {Object} Seed
* @global
* @property {String} host
* @property {Number} port
*/
/**
* @typedef {EventEmitter} BroadcastPromise
* @global
* @emits BroadcastPromise#ack
* @emits BroadcastPromise#timeout
* @emits BroadcastPromise#reject
*/
/**
* @typedef {Object} ParsedURI
* @global
* @property {Base58Address} address
* @property {BN?} amount? - Amount in satoshis.
* @property {String?} label
* @property {String?} message
* @property {String?} request - Payment request URL.
*/
/**
* Wallet ID
* @global
* @typedef {String} WalletID
*/
/**
* Base58 string.
* @global
* @typedef {String} Base58String
*/
/**
* Base58 address.
* @global
* @typedef {String} Base58Address
*/
/**
* Hex-string hash.
* @global
* @typedef {String} Hash
*/
/**
* Reversed hex-string hash (uint256le).
* @global
* @typedef {String} ReversedHash
*/
/**
* Signature hash type. One of `all`, `single`, `none`, or
* one of {@link constants.hashType}.
* @global
* @typedef {String|Number} SighashType
*/
/**
* Wallet balance.
* @global
* @typedef {Object} Balance
* @property {BN} confirmed
* @property {BN} unconfirmed
* @property {BN} total
*/
/**
* A big number (bn.js)
* @global
* @typedef {Object} BN
*/
/**
* A bitfield containing script verify flags.
* @global
* @typedef {Number} VerifyFlags
*/
/**
* @typedef {Object} Program
* @property {Number} version - Ranges from 0 to 16.
* @property {String|null} type - Null if malformed. `unknown` if unknown
* version (treated as anyone-can-spend). Otherwise one of `witnesspubkeyhash`
* or `witnessscripthash`.
* @property {Buffer} data - Usually the hash.
*/
/**
* @typedef {Object} Orphan
* @property {Hash} hash - Orphan TX hash.
* @property {Number} index - Orphan input index.
*/
/**
* @typedef {Object} SubmitOrderPacket
* @global
* @property {Hash} hash
* @property {NakedTX} tx
* @property {Number} _size
*/
/**
* @typedef {Object} ReplyPacket
* @global
* @property {Hash} hash
* @property {Number} code
* @property {Buffer} publicKey
* @property {Number} _size
*/
/**
* @typedef {Object} FilterLoadPacket
* @global
* @see Bloom
* @property {Buffer} filter - Serialized bloom filter.
* @property {Number} n - Number of hash functions.
* @property {Number} tweak - Bloom filter seed.
* @property {String|Number} update (See {@link constants.filterFlags}).
* @property {Number} _size
*/
/**
* @typedef {Object} FilterAddPacket
* @global
* @see Bloom
* @property {Buffer} data - Data to add to filter.
* @property {Number} _size
*/
/**
* @typedef {Object} GetUTXOsPacket
* @global
* @property {Boolean} mempool - Check mempool.
* @property {Outpoint[]} prevout - Outpoints.
* @property {Number} _size
*/
/**
* @typedef {Object} NakedCoin
* @global
* @property {Number} version - Transaction version.
* @property {Number} height - Transaction height (-1 if unconfirmed).
* @property {BN} value - Output value in satoshis.
* @property {Script} script - Output script.
* @property {Boolean} coinbase - Whether the containing
* transaction is a coinbase.
* @property {Hash} hash - Transaction hash.
* @property {Number} index - Output index.
*/
/**
* @typedef {Object} UTXOsPacket
* @global
* @property {Array?} data.hits - Hits (array of
* 1s and 0s representing a bit mask).
* @property {Buffer?} data.map - Hit map.
* @property {Object} data.height - Chain height.
* @property {Hash} data.tip - Chain tip hash.
* @property {NakedCoin[]} data.coins
* @property {Number} _size
*/
/**
* @typedef {Object} PingPacket
* @global
* @property {BN} nonce
* @property {Number} _size
*/
/**
* @typedef {Object} NetworkAddress
* @global
* @property {Number?} ts - Timestamp.
* @property {Number?} services - Service bits.
* @property {Buffer?} ipv4 - IPv4 address.
* @property {Buffer?} ipv6 - IPv6 address.
* @property {Number?} port - Port.
* @property {Boolean?} network - Whether network services are enabled.
* @property {Boolean?} getutxo - Whether peer supports getutxos.
* @property {Boolean?} bloom - Whether peer supports serving FILTERED_BLOCKs.
* @property {Boolean?} witness - Whether peer supports segwit.
* @property {Number} _size
*/
/**
* @typedef {Object} VersionPacket
* @global
* @property {Number} version - Protocol version.
* @property {Number} services - Service bits.
* @property {Number} ts - Timestamp of discovery.
* @property {NetworkAddress} local - Our address.
* @property {NetworkAddress} remote - Their address.
* @property {BN} nonce
* @property {String} agent - User agent string.
* @property {Number} height - Chain height.
* @property {Boolean} relay - Whether transactions
* should be relayed immediately.
* @property {Number} _size
*/
/**
* @typedef {Object} GetBlocksPacket
* @global
* @property {Number} version - Protocol version.
* @property {Hash[]} locator - Chain locator.
* @property {Hash} stop - Hash to stop at.
* @property {Number} _size
*/
/**
* @typedef {Object} NakedBlock
* @global
* @property {Number} version - Transaction version. Note that BCoin reads
* versions as unsigned even though they are signed at the protocol level.
* This value will never be negative.
* @property {Hash} prevBlock
* @property {Hash} merkleRoot
* @property {Number} ts
* @property {Number} bits
* @property {Number} nonce
* @property {Number} height
* @property {Number} totalTX
* @property {NakedTX[]?} txs - Only present on blocks.
* @property {Hash[]?} hashes - Only present on merkleblocks.
* @property {Buffer?} flags - Only present on merkleblocks.
* @property {Number?} coinbaseHeight - Only present on compactblocks.
* @property {Number} _size
*/
/**
* @typedef {Object} NakedInput
* @global
* @property {Outpoint} prevout
* @property {NakedScript} script - Input script.
* @property {Number} sequence - nSequence.
* @property {NakedWitness} witness - Witness.
* @property {Number} _size
*/
/**
* @typedef {Object} NakedOutput
* @global
* @property {BN} value - Value in satoshis.
* @property {NakedScript} script - Output script.
* @property {Number} _size
*/
/**
* @typedef {Object} NakedCoin
* @global
* @property {Number} version - Transaction version.
* @property {Number} height - Transaction height (-1 if unconfirmed).
* @property {BN} value - Output value in satoshis.
* @property {Script} script - Output script.
* @property {Boolean} coinbase - Whether the containing
* transaction is a coinbase.
* @property {Hash} hash - Transaction hash.
* @property {Number} index - Output index.
* @property {Number} _size
*/
/**
* @typedef {Object} NakedTX
* @global
* @property {Number} version
* @property {Number} flag
* @property {NakedInput[]} inputs
* @property {NakedOutput[]} outputs
* @property {Number} locktime
* @property {Number} _size
*/
/**
* @typedef {Object} NakedScript
* @global
* @property {Buffer} raw - Raw code.
* @property {Array} code - Parsed code.
* @property {Number} _size
*/
/**
* @typedef {Object} NakedWitness
* @global
* @param {Buffer[]} items - Stack items.
* @property {Number} _size
*/
/**
* @typedef {Object} RejectPacket
* @global
* @param {(Number|String)?} ccode - Code
* (see {@link constants.reject}).
* @param {String?} msg - Message.
* @param {String?} reason - Reason.
* @param {(Hash|Buffer)?} data - Transaction or block hash.
* @property {Number} _size
*/
/**
* @typedef {Object} AlertPacket
* @global
* @property {Number} version
* @property {Number} relayUntil
* @property {Number} expiration
* @property {Number} id
* @property {Number} cancel
* @property {Number[]} cancels
* @property {Number} minVer
* @property {Number} maxVer
* @property {String[]} subVers
* @property {Number} priority
* @property {String} comment
* @property {String} statusBar
* @property {String?} reserved
* @property {Buffer?} payload - Payload.
* @property {Buffer?} signature - Payload signature.
* @property {Buffer?} key - Private key to sign with.
* @property {Number} _size
*/