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.