On this page

latest contributor to this doc

Last Edit:

@smk762

Komodo DeFi SDK Common Structures

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

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

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

ParameterTypeDescription
decimalnumeric stringA decimal number as a string.
rationalobjectA standard RationalValue object.
fractionobjectA standard FractionalValue object.

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

ParameterTypeDescription
numerstring (numeric)The numerator of the fractional value.
denomstring (numeric)The denominator of the fractional value.

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

ParameterTypeDescription
PageNumberintegerOptional, defaults to 1. Offset for paginated results
FromIdintegerOptional. Ignores any results prior to this UUID

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:

[
  [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

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

ParameterTypeDescription
stream_interval_secondsfloatInterval in seconds between streaming event update requests. Defaults to 10 for stream::balance::enable and 5 for stream::network::enable/stream::heartbeat::enable
always_sendbooleanstream::network::enable only. Optional, defaults to false. 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.

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

ParameterTypeDescription
access_control_allow_originstringDefines CORS whitelist. Use "*" to allow from any origin.
worker_pathstringWASM 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).

ParameterTypeDescription
statestringcurrent state of sync; possible values: NotEnabled, NotStarted, InProgress, Error, Finished
additional_infoobjectA standard SyncStatusExtended object. Additional info that helps to track the progress; present for InProgress and Error states only.

ParameterTypeDescription
blocks_leftnumberpresent for ETH/ERC20 coins only; displays the number of blocks left to be processed for InProgress state
transactions_leftnumberpresent for UTXO coins only; displays the number of transactions left to be processed for InProgress state
codenumberdisplays the error code for Error state
messagenumberdisplays the error message for Error state

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

ParameterTypeDescription
statusstringStatus of the transactions (e.g., "completed")
date_fromstring`Start date in ISO 8601 format
date_tostringEnd date in ISO 8601 format
my_coinstringCoin being used by you for the swap/trade.
other_coinstringCoin you are trading against
from_timestampnumberStart timestamp in UNIX format
to_timestampnumberEnd timestamp in UNIX format

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

ParameterTypeDescription
from_uuidstring (or null)Skips records until this UUID, excluding the record with this UUID. Convenient for infinite scrolling implementations.
limitnumberLimits the number of returned swaps.
page_numbernumberReturns limit swaps from the selected page. This parameter is ignored if from_uuid is set.

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

ParameterTypeDescription
chainslist of stringsA list of chain IDs. For EIP155, refer to https://chainid.network/. For Cosmos, refer to https://cosmos.directory/
methodslist of stringsA 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
eventslist of stringsA 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

The WcSession object contains details of active WalletConnect sessions.

ParameterTypeDescription
topicstringThe session topic hex string, used to identify the session for communications with the external wallet/dapp.
metadataobjectArbitrary data returned from the external wallet/dapp on connection.
pairing_topicstringThe pairing topic hex string, used for the initial external wallet/dapp connection.
namespacesobjectContains the same two WcConnNs objects for Cosmos/EIP155 which were input when initialising the connection via wc_new_connection.
expiryintegerA timestamp in unix epoch format indicating when the connection will expire if not otherwise closed.

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.