Common Structures

common-structuresoverviewcommon_structures

The objects are in the request or response of multiple Komodo DeFi SDK methods have been grouped into the following sections:

  • Activation Common Structures: Details on activation modes, parameters, and server configurations for various coin types.
  • Enums: Enumerated values used across multiple methods, such as swap types, order statuses, and key policies.
  • Lightning Common Structures: Objects for Lightning Network operations, including channel and payment configurations.
  • NFT Common Structures: Structures for non-fungible token (NFT) operations, filters, and metadata.
  • Order Common Structures: Structures for orderbook entries, order data, and related parameters.
  • Swap Common Structures: Objects and events related to atomic swaps, including event types and swap status.
    • Maker Events: Step-by-step events and outcomes for atomic swaps from the maker’s perspective.
    • Taker Events: Step-by-step events and outcomes for atomic swaps from the taker’s perspective.
  • Wallet Common Structures: Structures for wallet operations, address derivation, balances, and key management.

Structures which are used in more than one section are listed below:

EventStreamConfig

The EventStreamConfig object defines which events will be streamed to the client:

Parameter Type Required Description
access_control_allow_origin string Defines CORS whitelist. Use "*" to allow from any origin.
worker_path string WASM only. Path to a custom worker.js file.

Configurable events, and how to enable them, is detailed in the streaming methods doc

An example of the event stream output can then be viewed in https://github.com/KomodoPlatform/komodo-defi-framework/blob/main/examples/sse/index.html?id=CLIENT_ID

The CLIENT_ID value used in the url must match the client_id value used when enabling streaming events. In the case of a single client only, defining the client_id is not required (it will default to 0).

Show Example
{
    "access_control_allow_origin": "*",
    "worker_path": "index.js"
}

FilterCriteria

The ‘FilterCriteria’ object allows you to filter the results based on specific parameters.

Parameter Type Required Description
numer string (numeric) The numerator of the fractional value.
denom string (numeric) The denominator of the fractional value.
Show Example

Example

{
  "filter": {
    "status": "completed",
    "date_from": "2024-01-01T00:00:00Z",
    "date_to": "2024-07-01T00:00:00Z",
    "my_coin": "BTC",
    "other_coin": "ETH",
    "from_timestamp": 1672531200,
    "to_timestamp": 1704067200
  }
}

FractionalValue

The FractionalValue object includes a numerator and denominator values for a given price or amount:

Parameter Type Required Description
decimal numeric string A decimal number as a string.
rational object A standard RationalValue object.
fraction object A standard FractionalValue object.
Show Example
{
    "numer": "4561782244811",
    "denom": "4000000"
}

NumericFormatsValue

The NumericFormatsValue returns a price or amount in three different formats: fraction, rational, and decimal.

Parameter Type Required Default Description
from_uuid string (or null) null Skips records until this UUID, excluding the record with this UUID. Convenient for infinite scrolling implementations.
limit number Limits the number of returned swaps.
page_number number Returns limit swaps from the selected page. This parameter is ignored if from_uuid is set.
Show Example
{
  "decimal": "0.0001",
  "rational": [
    [1, [1]],
    [1, [10000]]
  ],
  "fraction": {
    "numer": "1",
    "denom": "10000"
  }
}

PagingOptions

The PagingOptions object includes options of page selection to consult when looking for recent swaps:

Parameter Type Required Default Description
PageNumber integer 1 Offset for paginated results
FromId integer Ignores any results prior to this UUID
Show Examples

Example

{
  "paging_options": {
    "from_uuid": null,
    "limit": 10,
    "page_number": 1
  }
}

Pagination

For requests which return many results, pagination offsets may be applied. ** Use either value, not both. **

Parameter Type Required Default Description
stream_interval_seconds float 10/5 Optional, defaults to 10/5. Interval in seconds between streaming event update requests. Defaults to 10 for stream::balance::enable and 5 for stream::network::enable/stream::heartbeat::enable
always_send boolean false stream::network::enable only. If true, network data will always be sent every stream_interval_seconds, even when there is no change. If false, network data will be sent regardless.
Show Example

Example

{
    "PageNumber": 1
}
{
    "FromId": 4
}

RationalValue

The Komodo DeFi SDK now offers the num-rational crate feature which allows for higher precision numeric values to represent order volumes and prices in a unique format as explained below:

Show Examples
[
  [1, [0, 1]],
  [1, [1]]
]

In the above unique format, the first item [1,[0,1]] is the numerator and the second item [1,[1]] is the denominator.

The numerator and denominator are BigInteger numbers represented as a sign and a uint32 array (where numbers are 32-bit parts of big integer in little-endian order).

[1,[0,1]] represents +0000000000000000000000000000000010000000000000000000000000000000 = 4294967296

[-1,[1,1]] represents -1000000000000000000000000000000010000000000000000000000000000000 = -4294967297

StreamingConfig

You can optionally apply more detailed configuration to event streaming methods.

Parameter Type Required Default Description
estimate_every float 15 Interval in seconds between fee estimate updates.
estimate_type string Simple If set to Provider, users must set the gas_api setting in their MM2.json file to source recommended fee values from third party providers Infura or Blocknative Used in get_eth_estimated_fee_per_gas only.
Show Examples

Example

{
    "stream_interval_seconds": 33.3
}
Show Examples

StreamingFeeConfig

Parameter Type Required Description
state string Current state of sync; possible values: NotEnabled, NotStarted, InProgress, Error, Finished
additional_info object A standard SyncStatusExtended object. Additional info that helps to track the progress; present for InProgress and Error states only.

Example (stream::fee_estimator::enable)

{
    "estimate_every": 33.3,
    "estimate_type": "Provider"
}

SyncStatus

Parameter Type Required Description
blocks_left number Present for ETH/ERC20 coins only; displays the number of blocks left to be processed for InProgress state
transactions_left number Present for UTXO coins only; displays the number of transactions left to be processed for InProgress state
code number Displays the error code for Error state
message number Displays the error message for Error state

SyncStatusExtended

Parameter Type Required Description
chains list of strings A list of chain IDs. For EIP155, refer to https://chainid.network/. For Cosmos, refer to https://cosmos.directory/
methods list of strings A list of approved methods, usable while connected. For EIP155, refer to https://docs.reown.com/advanced/multichain/rpc-reference/ethereum-rpc. For Cosmos, refer to https://docs.reown.com/advanced/multichain/rpc-reference/cosmos-rpc
events list of strings A list of events to track during the connection. For EIP155, refer to https://docs.reown.com/advanced/providers/ethereum#events. For Cosmos, refer to https://tutorials.cosmos.network/academy/2-cosmos-concepts/10-events.html
Show Example

Example

{
    "sync_status": {
      "state": "NotStarted"
    }
}
{
    "sync_status": {
      "additional_info": {
        "transactions_left": 126
      },
      "state": "InProgress"
    }
}
{
    "sync_status": {
      "state": "Finished"
    }
}

WcConnNs

The WcConnNs object contains details of approved chains, methods and events while connected via WalletConnect.

Parameter Type Required Description
topic string The session topic hex string, used to identify the session for communications with the external wallet/dapp.
metadata object Arbitrary data returned from the external wallet/dapp on connection.
pairing_topic string The pairing topic hex string, used for the initial external wallet/dapp connection.
namespaces object Contains the same two WcConnNs objects for Cosmos/EIP155 which were input when initialising the connection via wc_new_connection.
expiry integer A timestamp in unix epoch format indicating when the connection will expire if not otherwise closed.
Show Examples

EIP155 Example

{
	"chains": [
		"eip155:1",      // ETH
		"eip155:56",     // BNB
		"eip155:137",    // POLYGON
		"eip155:43114"   // AVAX
	],
	"methods": [
		"eth_sendTransaction",
		"eth_signTransaction",
		"personal_sign"
	],
	"events": [
		"accountsChanged",
		"chainChanged"
	]
}

Cosmos Example

{
	"chains": [
		"cosmos:cosmoshub-4",
		"cosmos:osmosis-1",
		"cosmos:irishub-1"
	],
	"methods": [
	  	"cosmos_signDirect",
		  "cosmos_signAmino",
		  "cosmos_getAccounts"
	],
	"events": []
}

WcSession

The WcSession object contains details of active WalletConnect sessions.

Parameter Type Required Description
error string A human-readable error message.
error_path string The path in the code where the error occurred.
error_trace string A stack trace of the error.
error_type string The type of the error.
error_data object Additional data related to the error.

Within each session object, there are a some values which are required as input in other WalletConnect methods:

  • pairing_topic: Only used when initally connecting with external wallets/dapps.
  • topic: Once connected, this is use for communications with the connected external wallet/dapp.

ErrorResponse

Parameter Type Required Description
error string A human-readable error message.
error_path string The path in the code where the error occurred.
error_trace string A stack trace of the error.
error_type string The type of the error.
error_data object Additional data related to the error.