# IOTA Client Library - Node.js binding Node.js binding to the IOTA client library. ## Installation - Using NPM: ```bash $ npm i @iota/client ``` - Using yarn: ```bash $ yarn add @iota/client ``` ## Requirements One of the following Node.js version: '12.x', '14.x', '16.x' If there is no prebuilt binary available for your system you need `Rust` and `Cargo`, to build it yourself. Install them [here](https://doc.rust-lang.org/cargo/getting-started/installation.html). ## Getting Started After you linked the library, you can create a `Client` instance and interface with it. ```javascript const { ClientBuilder } = require('@iota/client') const client = new ClientBuilder() .node('https://api.lb-0.h.chrysalis-devnet.iota.cafe') .build() client.getInfo().then(console.log).catch(console.error) ``` Connecting to a MQTT broker using raw ip doesn't work with TCP. This is a limitation of rustls. ## API Reference ### ClientBuilder #### node(url): ClientBuilder Adds an IOTA node to the client pool. | Param | Type | Description | | ----- | ------------------- | ----------- | | url | string | A node URL | **Returns** the client builder instance for chained calls. #### nodeAuth(url, authOptions): ClientBuilder Adds an IOTA node with authentication to the client pool. | Param | Type | Description | | ----------- | -------------------------------------------- | -------------------------------- | | url | string | A node URL | | authOptions | [NodeAuthOptions](#nodeauthoptions) | Options for node authentication | **Returns** the client builder instance for chained calls. #### primaryNode(url, [, authOptions]): ClientBuilder Add a node to always connect first to with optional authentication. | Param | Type | Description | | ----------- | ------------------------------------------------ | -------------------------------- | | url | string | A node URL | | authOptions | [NodeAuthOptions](#nodeauthoptions) | Options for node authentication | **Returns** the client builder instance for chained calls. #### primaryPowNode(url, [, authOptions]): ClientBuilder Add a node to always connect first to when using remote PoW with optional authentication. Will overwrite the primary node for this case. | Param | Type | Description | | ----------- | ------------------------------------------------ | -------------------------------- | | url | string | A node URL | | authOptions | [NodeAuthOptions](#nodeauthoptions) | Options for node authentication | **Returns** the client builder instance for chained calls. #### permanode(url, [, authOptions]): ClientBuilder Add a permanode. | Param | Type | Description | | ----------- | ------------------------------------------------ | -------------------------------- | | url | string | A node URL | | authOptions | [NodeAuthOptions](#nodeauthoptions) | Options for node authentication | **Returns** the client builder instance for chained calls. #### nodes(urls): ClientBuilder Adds a list of IOTA nodes to the client pool. | Param | Type | Description | | ----- | --------------------- | --------------------- | | url | string[] | An array of node URLs | **Returns** the client builder instance for chained calls. #### nodePoolUrls(urls): ClientBuilder Adds a list of IOTA nodes from node pool URLs to the client pool. | Param | Type | Description | | ----- | --------------------- | -------------------------- | | url | string[] | An array of node pool URLs | **Returns** the client builder instance for chained calls. #### network(networkName): ClientBuilder Set a network to get default nodes for it. Can be "testnet" or "mainnet". Nodes that don't belong to this network are ignored. | Param | Type | Description | | ----------- | ------------------- | ----------- | | networkName | string | The network | **Returns** the client builder instance for chained calls. #### quorum(enabled): ClientBuilder Defines how many of nodes will be queried at the same time to check for quorum. | Param | Type | Description | | -------- | -------------------- | -------------------------------------- | | enabled | boolean | Define if quourm should be used or not | **Returns** the client builder instance for chained calls. #### quorumSize(size): ClientBuilder Defines how many of nodes will be queried at the same time to check for quorum. | Param | Type | Description | | ----- | ------------------- | ---------------------------------------- | | size | number | The number of nodes that will be queried | **Returns** the client builder instance for chained calls. #### quorumThreshold(threshold): ClientBuilder Defines the minimum amount of nodes from the quorum pool that need to agree if we want to consider the result true. | Param | Type | Description | | --------- | ------------------- | ----------------------- | | threshold | number | Minimum amount of nodes | **Returns** the client builder instance for chained calls. #### brokerOptions(options): ClientBuilder Sets the options for the MQTT connection with the node. | Param | Type | Description | | ------- | -------------------------------------------- | ----------------------- | | options | [BrokerOptions](#brokeroptions) | The MQTT broker options | **Returns** the client builder instance for chained calls. #### nodeSyncInterval(interval): ClientBuilder Sets the node syncing interval. | Param | Type | Description | | -------- | ------------------- | ----------------------------------------- | | interval | number | The interval for the node syncing process | **Returns** the client builder instance for chained calls. #### disableNodeSync(): ClientBuilder Disables the node syncing process. Every node will be considered healthy and ready to use. **Returns** the client builder instance for chained calls. #### offlineMode(): ClientBuilder Allows creating the client without nodes for offline address generation or signing. **Returns** the client builder instance for chained calls. #### requestTimeout(timeoutMs): ClientBuilder Sets the default HTTP request timeout. | Param | Type | Description | | ------- | ------------------- | --------------------------- | | timeout | number | The timeout in milliseconds | **Returns** the client builder instance for chained calls. #### apiTimeout(api, timeoutMs): ClientBuilder Sets the HTTP request timeout for the specified API. | Param | Type | Description | | ------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | | api | 'GetHealth' \| 'GetInfo' \| 'GetTips' \| 'PostMessage' \| 'PostMessageWithRemotePow' \| 'GetOutput' \| 'GetMilestone' | The API to set the request timeout | | timeout | number | The timeout in milliseconds | **Returns** the client builder instance for chained calls. #### localPow(local): ClientBuilder Sets the PoW type. | Param | Type | Description | | ----- | -------------------- | ---------------------------------------------------------- | | local | boolean | Flag determining if PoW should be done locally or remotely | **Returns** the client builder instance for chained calls. #### build(): Client Builds the client instance. **Returns** a [Client](#client) instance. ### Client #### networkInfo(): NetworkInfo Gets the cached network info. **Returns** a [NetworkInfo](#networkinfo) instance. #### subscriber(): TopicSubscriber Gets a handle to the MQTT topic subscriber. **Returns** a [TopicSubscriber](#topicsubscriber) instance. #### message(): MessageSender Initiates the builder to send messages. **Returns** a [MessageSender](#messagesender) instance. #### getUnspentAddress(seed): UnspentAddressGetter Get a valid unspent address. | Param | Type | Description | | ----- | ------------------- | ------------------------------ | | seed | string | The hex-encoded seed to search | **Returns** a [UnspentAddressGetter](#unspentaddressgetter) instance. #### getAddresses(seed): AddressGetter Find addresses from the seed regardless of their validity. | Param | Type | Description | | ----- | ------------------- | ------------------------------ | | seed | string | The hex-encoded seed to search | **Returns** a [AddressGetter](#addressgetter) instance. #### findMessages(indexationKeys, messageIds): Promise Finds all messages associated with the given indexation keys and message ids. | Param | Type | Description | | -------------- | --------------------- | --------------------------------------- | | indexationKeys | string[] | The list of indexations keys too search | | messageIds | string[] | The list of message ids to search | **Returns** a promise resolving to the list of the found messages. #### getBalance(seed: string): BalanceGetter Get balance on a given seed | Param | Type | Description | | ----- | ------------------- | ------------------------------ | | seed | string | The hex-encoded seed to search | **Returns** a [BalanceGetter](#balancegetter) instance. #### getAddressBalances(addresses): Promise Get the balance in iotas for the given addresses. | Param | Type | Description | | --------- | --------------------- | ------------------------------- | | addresses | string[] | The list of addresses to search | **Returns** A promise resolving to the list of `{ address, balance }` pairs. #### generateMnemonic() Returns a random generated Bip39 mnemonic with the English word list. **Returns** A String #### mnemonicToHexSeed(mnemonic) Returns the seed hex encoded. | Param | Type | Description | | ------- | --------------------- | ----------------------------------------------------- | | mnemonic | string | Bip39 mnemonic with words from the English word list. | **Returns** A String #### bech32ToHex(bech32) Returns a parsed hex String from bech32. | Param | Type | Description | | ------- | ------------------- | ------------------------- | | bech32 | string | The address Bech32 string | **Returns** A String #### hexToBech32(hex, bech32_hrp (optional)) Returns a parsed bech32 address String from a hex encoded address. | Param | Type | Description | | ---------- | ------------------- | ------------------------------ | | address | string | The hex encoded address string | | bech32_hrp | string | The Bech32 hrp string | **Returns** A String #### hexPublicKeyToBech32Address(hex, bech32_hrp (optional)) Returns a parsed bech32 address String from a hex encoded public key. | Param | Type | Description | | ----------- | ------------------- | -------------------------- | | publicKey | string | The hex encoded public key | | bech32_hrp | string | The Bech32 hrp string | **Returns** A String #### isAddressValid(address: string): boolean Checks if a given address is valid. | Param | Type | Description | | --------- | --------------------- | ------------------------------- | | address | string | The address Bech32 string | **Returns** A boolean. #### getMessageId(message: string): boolean Returns the message id from a message. | Param | Type | Description | | ------- | ------------------- | -------------- | | message | string | The message id | **Returns** the message id. #### retry(messageId: string): Promise Retries (promotes or reattaches) the message associated with the given id. | Param | Type | Description | | --------- | ------------------- | ------------------------------ | | messageId | string | The id of the message to retry | **Returns** A promise resolving to the new [Message](#message) instance. #### retryUntilIncluded(messageId: string[, interval: int, maxAttempts: int]): Promise Retries (promotes or reattaches) the message associated with the given id until it's included in the Tangle. Default interval is 5 seconds and max_attempts is 10. | Param | Type | Description | | --------------------- | ------------------- | ------------------------------------------------------ | | messageId | string | The id of the message to retry | | [options.interval] | int | The interval in seconds in which we retry the message. | | [options.maxAttempts] | int | The maximum of attempts we retry the message. | **Returns** the message ids and [Message](#message) of reattached messages. #### consolidateFunds(seed: string, accountIndex: int, startIndex: int, endIndex: int): Promise Function to consolidate all funds from a range of addresses to the address with the lowest index in that range | Param | Type | Description | | ------------ | ------------------- | --------------------------------------------------------------------- | | seed | string | The seed | | accountIndex | int | The account index. | | startIndex | int | The lowest address index, funds will be consolidated to this address. | | endIndex | int | The address index until which funds will be consolidated | **Returns** the address to which the funds got consolidated, if any were available. #### getInfo(): Promise Gets information about the node. **Returns** a promise resolving to the [NodeInfoWrapper](#nodeinfowrapper) object. #### getTips(): Promise<[string, string]> Gets two non-lazy tips. **Returns** a promise resolving to an array of length 2 containing the message ids of the tips. #### postMessage(message): Promise Submits a message. | Param | Type | Description | | ------- | -------------------------------------- | --------------------- | | message | [MessageDto](#messagedto) | The message to submit | **Returns** the message identifier. #### getMessage(): MessageFinder Gets a message from its identifier. **Returns** an instance of the [MessageFinder](#messagefinder) for choices of response. #### getOutput(outputId): Promise Gets the UTXO outputs associated with the given output id. | Param | Type | Description | | -------- | ------------------- | ------------------------------ | | outputId | string | The id of the output to search | **Returns** a promise resolving to the associated [OutputMetadata](#outputmetadata). #### findOutputs(outputIds, addresses): Promise Gets the UTXO outputs associated with the given output ids and addresses. | Param | Type | Description | | --------- | --------------------- | -------------------------------- | | addresses | string[] | The list of addresses to search | | outputIds | string[] | The list of output ids to search | **Returns** a promise resolving to a list of [OutputMetadata](#outputmetadata). #### findInputs(addresses, amount): Promise Function to find inputs from addresses for a provided amount (useful for offline signing) | Param | Type | Description | | --------- | --------------------- | -------------------------------- | | addresses | string[] | The list of addresses to search | | amount | number | The balance to search inputs for | **Returns** a promise resolving to a list of outputIds: string[]. #### getAddressOutputs(address[, options]): Promise Gets the UTXO outputs associated with the given address. | Param | Type | Description | | ---------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------- | | address | string | The address Bech32 string | | [options.includeSpent] | boolean | Whether the query should include spent outputs or not | | [options.outputType] | 'SignatureLockedSingle' \| 'SignatureLockedDustAllowance' | The output type filter | **Returns** a promise resolving to a list of output ids. #### getAddressBalance(address): Promise Gets the balance of the given address. | Param | Type | Description | | ------- | ------------------- | ------------------------- | | address | string | The address Bech32 string | #### getMilestone(index): Promise Gets the milestone by the given index. | Param | Type | Description | | ----- | ------------------- | -------------------------- | | index | number | The index of the milestone | **Returns** a promise resolving to the [MilestoneMetadata](#milestonemetadata). #### getMilestoneUtxoChanges(index): Promise Gets the utxo changes by the given milestone index. | Param | Type | Description | | ----- | ------------------- | -------------------------- | | index | number | The index of the milestone | **Returns** a promise resolving to the [MilestoneUTXOChanges](#MilestoneUTXOChanges). #### getReceipts(): Promise Get all receipts. **Returns** a promise resolving to the [Receipts](#Receipts). #### getReceiptsMigratedAt(index): Promise Get all receipts for a given milestone index | Param | Type | Description | | ----- | ------------------- | -------------------------- | | index | number | The index of the milestone | **Returns** a promise resolving to the [Receipts](#Receipts). #### getTreasury(): Promise Get the treasury amount. **Returns** a promise resolving to the [Treasury](#Treasury). #### getIncludedMessage(transactionId): Promise Get the included message of a transaction. | Param | Type | Description | | ------------- | ------------------- | -------------------------- | | transactionId | string | The id of the transaction | **Returns** A promise resolving to the new [Message](#message) instance. #### reattach(messageId): Promise Reattaches the message associated with the given id. | Param | Type | Description | | --------- | ------------------- | --------------------------------- | | messageId | string | The id of the message to reattach | **Returns** A promise resolving to the new [Message](#message) instance. #### promote(messageId): Promise Promotes the message associated with the given id. | Param | Type | Description | | --------- | ------------------- | -------------------------------- | | messageId | string | The id of the message to promote | **Returns** A promise resolving to the new [Message](#message) instance. ### NetworkInfo | Field | Type | Description | | ----------- | -------------------- | ------------------------------------- | | network | string | The network | | networkId | number | The network hashed | | bech32HRP | string | Bech32 HRP for this network | | minPoWScore | number | The network's minimum score for PoW | | localPow | boolean | Whether we are using local PoW or not | ### TopicSubscriber Possible topics: ```bash milestones/latest milestones/confirmed messages messages/referenced messages/indexation/{index} messages/{messageId}/metadata transactions/{transactionId}/included-message outputs/{outputId} addresses/{address}/outputs addresses/ed25519/{address}/outputs ``` #### topic(topic): TopicSubscriber Adds a topic to this manager instance. | Param | Type | Description | | ----- | ------------------- | ------------ | | topic | string | A MQTT topic | **Returns** the topic subscriber instance for chained calls. #### topics(topic): TopicSubscriber Adds a list of topics to this manager instance. | Param | Type | Description | | ------ | --------------------- | ----------------------- | | topics | string[] | An array of MQTT topics | **Returns** the topic subscriber instance for chained calls. #### subscribe(cb): TopicSubscriber Subscribe to the provided topics. | Param | Type | Description | | ----- | --------------------- | ---------------------------------------------------------------- | | cb | function | The topic handler callback in the form of `(err, message) => {}` | **Returns** the topic subscriber instance for chained calls. #### unsubscribe(cb: Callback): TopicSubscriber Unsubscribes from the provided topics. | Param | Type | Description | | ----- | --------------------- | ------------------------------------------------------------------------------------------ | | cb | function | A callback executed when the unsubscribe is finished in the form of `(err, message) => {}` | **Returns** the topic subscriber instance for chained calls. ### MessageSender Builder to create and submit messages to the Tangle. #### index(index): MessageSender Sets the message indexation. This field is required for indexation payloads. | Param | Type | Description | | ----- | ------------------- | -------------- | | index | string | number[] | Uint8Array | The indexation | **Returns** the message submit instance for chained calls. #### data(data): MessageSender Sets the indexation data. | Param | Type | Description | | ----- | ----------------------- | ------------------ | | data | string | Uint8Array | The message's data | **Returns** the message submit instance for chained calls. #### seed(seed): MessageSender Sets the transaction account seed. This field is required for transaction payloads. | Param | Type | Description | | ----- | ------------------- | -------------------------------------------- | | seed | string | The hex-encoded seed of the account to spend | **Returns** the message submit instance for chained calls. #### parents(messageId): MessageSender Sets 1-8 custom parent message ids. | Param | Type | Description | | --------- | --------------------- | ----------------------- | | messageId | string[] | The parents message ids | **Returns** the message submit instance for chained calls. #### accountIndex(index): MessageSender Sets the account index. This field is required for transactions. | Param | Type | Description | | ----- | ------------------- | ----------------- | | index | number | The account index | **Returns** the message submit instance for chained calls. #### input(transactionId, index): MessageSender Adds an output to the transaction. | Param | Type | Description | | ------------- | ------------------- | ------------------ | | transactionId | string | The transaction id | | index | number | The input index | **Returns** the message submit instance for chained calls. #### inputRange(start, end): MessageSender Defines the range in which to search for addresses fro custom inputs. | Param | Type | Description | | ----- | ------------------- | --------------- | | start | number | The start index | | end | number | The end index | **Returns** the message submit instance for chained calls. #### output(address, amount): MessageSender Adds an output to the transaction. | Param | Type | Description | | ------- | ------------------- | ------------------ | | address | string | The output address | | amount | number | The output amount | **Returns** the message submit instance for chained calls. #### dustAllowanceOutput(address, amount): MessageSender Adds a dust allowance output to the transaction. | Param | Type | Description | | ------- | ------------------- | ------------------ | | address | string | The output address | | amount | number | The output amount | **Returns** the message submit instance for chained calls. #### initialAddressIndex(index): MessageSender Sets the initial address index to search for balance. Defaults to 0 if the function isn't called. | Param | Type | Description | | ----- | ------------------- | ------------------------- | | index | number | The initial address index | **Returns** the message submit instance for chained calls. #### prepareTransaction(index): Promise Prepares a transaction with the provided inputs. **Returns** prepared transaction data that can be signed offline. #### signTransaction(preparedTransactionData: PreparedTransactionData, seed: string[, startIndex: number, endIndex: number]): Promise Sets the initial address index to search for balance. Defaults to 0 if the function isn't called. | Param | Type | Description | | ----------------------- | ------------------------------------ | ----------------------------------------------------------- | | preparedTransactionData | PreparedTransactionData | The prepared transaction data from prepareTransaction() | | seed | string | The seed | | startIndex | number | Start index to find the addresses for signing, default is 0 | | endIndex | number | End index to find the addresses for signing, default is 100 | **Returns** the signed transaction payload. #### finishMessage(Payload): Promise Creates a message with the provided payload. | Param | Type | Description | | ------- | -------------------- | ----------------- | | payload | Payload | A message payload | **Returns** a promise resolving to the MessageWrapper. #### submit(): Promise Submits the message. **Returns** a promise resolving to the MessageWrapper. ### UnspentAddressGetter Gets a valid unspent address associated with the seed. #### accountIndex(index): UnspentAddressGetter Sets the account index. This field is required. | Param | Type | Description | | ----- | ------------------- | ----------------- | | index | number | The account index | **Returns** the address getter instance for chained calls. #### initialAddressIndex(index): UnspentAddressGetter Sets the initial address index. Defaults to 0 if the function isn't called. | Param | Type | Description | | ----- | ------------------- | ------------------------- | | index | number | The initial address index | **Returns** the address getter instance for chained calls. #### get(): Promise<[Address, number]> Performs the operation. **Returns** a promise resolving to the [Address](#address) instance and its index. ### AddressGetter Generates addresses with a given seed. #### accountIndex(index): AddressGetter Sets the account index. This field is required. | Param | Type | Description | | ----- | ------------------- | ----------------- | | index | number | The account index | **Returns** the address finder instance for chained calls. #### range(start, end): AddressGetter Defines the range of addresses to get. Defaults to `0..20` if the function isn't called. | Param | Type | Description | | ----- | ------------------- | ----------------------- | | start | number | The first address index | | end | number | The last address index | **Returns** the address finder instance for chained calls. #### includeInternal(): AddressGetter Defines that public and internal address will be returned instead of only public addresses. **Returns** the address finder instance for chained calls. #### bech32Hrp(bech32Hrp): AddressGetter Defines the bech32Hrp for the bech32 encoded addresses, required when generating addresses offline(with disableNodeSync()). | Param | Type | Description | | --------- | ------------------- | ------------------------------- | | bech32Hrp | string | The bech32Hrp for the addresses | **Returns** the address finder instance for chained calls. #### get(): Address[] | [Address, bool][] Performs the operation. **Returns** an array of public [Address](#address) instances or an array of arrays with an Address and a bool, where the bool defines whether it's an internal address or not. ### BalanceGetter Gets balance on a given seed. #### accountIndex(index): BalanceGetter Sets the account index. This field is required. | Param | Type | Description | | ----- | ------------------- | ----------------- | | index | number | The account index | **Returns** the balance getter instance for chained calls. #### initialAddressIndex(index): BalanceGetter Sets the initial address index. Defaults to 0 if the function isn't called. | Param | Type | Description | | ----- | ------------------- | ------------------------- | | index | number | The initial address index | **Returns** the balance getter instance for chained calls. #### gapLimit(amount): BalanceGetter Sets the gapLimit to specify how many addresses will be checked each round. If gapLimit amount of addresses in a row have no balance the BalanceGetter will return. Defaults to 20 if the function isn't called. | Param | Type | Description | | -------- | ------------------- | ------------------------- | | gapLimit | number | The initial address index | **Returns** the balance getter instance for chained calls. #### get(): Promise Performs the operation. **Returns** a promise resolving to the account balance. ### MessageFinder Gets a message by indexation key or identifier. #### initialAddressIndex(index): Promise | Param | Type | Description | | ----- | ------------------- | ------------------ | | index | string | The indexation key | Gets a list of message identifiers associated with the given indexation key. **Returns** a promise resolving to the list of associated ids. #### data(id): Promise Gets the message object associated with the given identifier. | Param | Type | Description | | ----- | ------------------- | ---------------------- | | id | string | The message identifier | **Returns** a [Message](#message) object. #### raw(id): Promise Gets the message raw data. | Param | Type | Description | | ----- | ------------------- | ---------------------- | | id | string | The message identifier | **Returns** the message raw data as string. #### children(id): Promise Gets the children of the given message. | Param | Type | Description | | ----- | ------------------- | ---------------------- | | id | string | The message identifier | **Returns** the list of message ids of the message children. #### metadata(id): Promise Gets the metadata of the given message. | Param | Type | Description | | ----- | ------------------- | ---------------------- | | id | string | The message identifier | **Returns** a [MessageMetadata](#messagemetadata) object. ### BrokerOptions All fields are optional. | Field | Type | Description | | ----------------------- | -------------------- | ----------------------------------------------------------------------------------------------------- | | automaticDisconnect | boolean | Whether the MQTT broker should be automatically disconnected when all topics are unsubscribed or not. | | timeout | number | MQTT connection timeout in secods | | useWs | boolean | Defines if websockets should be used (true) or TCP (false) | | maxReconnectionAttempts | number | Defines the maximum reconnection attempts before it returns an error | | port | number | Defines the port to be used for the MQTT connection | ### NodeAuthOptions | Field | Type | Description | | ----------------- | ------------------- | ------------------------------------------ | | jwt | string | Optional JSON Web Token. | | basicAuthName | string | Optional name for basic authentication | | basicAuthPassword | string | Optional password for basic authentication | ### Address | Field | Type | Description | | ----- | ---------------------- | -------------------------- | | data | string | Address as a Bech32 string | ### Message | Field | Type | Description | | --------- | -------------------------------- | ------------------------------------- | | networkId | number | Network identifier | | parents | string[] | Message ids of the message references | | payload | [Payload](#payload) \| null | Message payload | | nonce | number | Message nonce | ### MessageWrapper | Field | Type | Description | | --------- | -------------------- | -------------- | | message | Message | Message | | messageId | string | The message id | #### Payload | Field | Type | Description | | ----- | ---------------------------------------------------------------------- | ------------ | | data | TransactionPayload \| IndexationPayload \| MilestonePayload \| ReceiptPayload | Payload data | ##### TransactionPayload | Field | Type | Description | | ------------- | -------------------------------------- | ------------------- | | type | number | Payload type | | essence | TransactionPayloadEssence | Transaction essence | | unlock_blocks | UnlockBlock[] | Unlock blocks | - TransactionPayloadEssence | Field | Type | Description | | ------- | --------------------------------- | -------------------- | | type | number | Essence type | | inputs | Input[] | Inputs | | outputs | Output[] | Outputs | | payload | Payload \| undefined | Payload for chaining | - Input | Field | Type | Description | | ----- | ------------------- | ------------------------ | | type | number | Input type identifier | | data | string | The associated output id | - Output | Field | Type | Description | | ----- | ------------------------------------------------ | ---------------------- | | type | number | Output type identifier | | data | { address: string, amount: number } | The output definition | - UnlockBlock | Field | Type | Description | | ----- | ---------------------------------- | --------------------------------------------------------------------- | | type | number | Unlock block type identifier | | data | Ed25519SignatureUnlockBlock \| ReferenceUnlockBlock | Unlock block data (signature type or reference index) | - Ed25519SignatureUnlockBlock | Field | Type | Description | | ---------- | --------------------- | ---------------------- | | type | number | Unlock type identifier | | public_key | string | Ed25519 public key | | signature | string | Ed25519 signature | - ReferenceUnlockBlock | Field | Type | Description | | --------- | -------------------- | ------------------------------------------------ | | type | number | Unlock block type identifier | | reference | number | Represents the index of a previous unlock block. | ##### IndexationPayload | Field | Type | Description | | ----- | ------------------- | ----------------------------- | | type | number | Payload type | | index | string | Indexation key | | data | string | Indexation data as byte array | ##### MilestonePayload | Field | Type | Description | | -------------------------- | ------------------------------------------ | ------------------------------------------------------ | | type | number | Payload type identifier | | index | number | Milestone index | | timestamp | number | Timestamp | | parentMessageIds | string[] | Message ids of the messages the milestone references | | inclusionMerkleProof | string | Merkle proof | | nextPoWScore | number | Next PoW score | | nextPoWScoreMilestoneIndex | number | Milestone index at which the nextPoWScore will be used | | publicKeys | string[] | public keys | | receipt | [Payload](#payload)\| null | Optional receipt payload | | signatures | string[] | Milestone signatures | ### MessageDto | Field | Type | Description | | ------- | -------------------------------------- | ----------------------------------------------------------------------- | | parents | string[] \| undefined | Message ids of the messages it references. `getTips` is used by default | | payload | [PayloadDto](#payloaddto) | Message payload | #### PayloadDto | Field | Type | Description | | ----- | ---------------------------------------------------------- | ------------ | | data | TransactionPayloadDto \| IndexationPayloadDto | Payload data | ##### TransactionPayloadDto | Field | Type | Description | | ------------ | ----------------------------------------- | ------------------- | | essence | TransactionPayloadEssenceDto | Transaction essence | | unlockBlocks | UnlockBlockDto[] | Unlock blocks | - TransactionPayloadEssenceDto | Field | Type | Description | | ------- | ------------------------------------ | -------------------- | | inputs | string[] | Inputs | | outputs | Output[] | Outputs | | payload | PayloadDto \| undefined | Payload for chaining | - OutputDto | Field | Type | Description | | ------- | ------------------- | -------------- | | address | string | Output address | | amount | amount | Output amount | - UnlockBlockDto | Field | Type | Description | | ----- | ------------------------------------------------------------------------------------ | ----------------------------------------------------- | | data | Ed25519SignatureUnlockBlockDto \| number | Unlock block data (signature type or reference index) | - Ed25519SignatureUnlockBlockDto | Field | Type | Description | | --------- | --------------------- | ------------------ | | publicKey | number[] | Ed25519 public key | | signature | number[] | Ed25519 signature | ##### IndexationPayloadDto | Field | Type | Description | | ----- | ------------------- | --------------- | | index | string | Indexation key | | data | string | Indexation data | ##### AddressBalance | Field | Type | Description | | ------------ | -------------------- | ---------------------- | | address | string | Bech32 encoded address | | balance | number | Address balance | | dustAllowed | boolean | Dust allowed | ### MessageMetadata | Field | Type | Description | | -------------------------- | --------------------------------- | --------------------------------------------------------- | | messageId | string | Message identifier | | parents | string[] | Message id of the messages it references | | isSolid | boolean | Message solid state | | shouldPromote | boolean \| undefined | Indicates whether the message should be promoted or not | | shouldReattach | boolean \| undefined | Indicates whether the message should be reattached or not | | referencedByMilestoneIndex | number \| undefined | Index of the milestone that references this message | | ledgerInclusionState | string \| undefined | Ledger inclusion state | ### NodeInfoWrapper | Field | Type | Description | | -------- | --------------------- | ----------- | | url | string | Node url | | nodeinfo | NodeInfo | NodeInfo | ### NodeInfo | Field | Type | Description | | --------------------------- | --------------------- | ------------------------------------------------- | | name | string | Node name | | version | string | Node version | | isHealthy | boolean | Node health status | | networkId | string | Node network identifier | | bech32HRP | string | Bech32 HRP for this network | | minPoWScore | number | Min PoW score | | messagesPerSecond | number | Network stats: Messages per second in the network | | referencedMessagesPerSecond | number | Network stats: Referenced messages per second | | referencedRate | number | Network stats: referenced rate | | latestMilestoneTimestamp | number | Timestamp of the latest milestone | | latestMilestoneIndex | number | Index of the latest milestone | | confirmedMilestoneIndex | number | Index of the confirmed milestone | | pruningIndex | number | Pruning index | | features | string[] | List of node features | ### OutputMetadata | Field | Type | Description | | ------------- | -------------------- | ------------------------------------------------ | | messageId | string | Id of the message associated with the output | | transactionId | string | Id of the transaction associated with the output | | outputIndex | number | Output index | | isSpent | boolean | Output spent state | | address | string | Output address | | amount | number | Output amount | ### MilestoneMetadata | Field | Type | Description | | -------------- | ------------------- | ----------------------------------------------- | | milestoneIndex | number | Milestone index | | messageId | string | Id of the message associated with the milestone | | timestamp | number | Milestone timestamp | ### MilestoneUTXOChanges | Field | Type | Description | | --------------- | --------------------- | ---------------------------------- | | index | number | Milestone index | | createdOutputs | string[] | OutputIds from new created outputs | | consumedOutputs | string[] | OutputIds from consumed outputs | ### Receipts | Field | Type | Description | | --------------- | -------------------- | --------------- | | receipt | receipt | Receipt | | milestoneIndex | number | Milestone index | ### Treasury | Field | Type | Description | | ----------- | ------------------- | ------------ | | milestoneId | string | Milestone id | | amount | number | Amount |