Skip to main content

5. API Modules

Complete reference for all API modules in the Amadeus Protocol SDK.

Overview

The SDK provides access to various API modules through the AmadeusSDK instance:

import { AmadeusSDK } from '@amadeus-protocol/sdk'

const sdk = new AmadeusSDK()

// Access API modules
sdk.chain // Chain API
sdk.wallet // Wallet API
sdk.transaction // Transaction API
sdk.contract // Contract API
sdk.epoch // Epoch API
sdk.peer // Peer API
sdk.proof // Proof API

Chain API

Query blockchain data including chain tip, statistics, entries, and transaction events.

getTip()

Get the current chain tip (latest entry).

const { entry } = await sdk.chain.getTip()

console.log('Height:', entry.height)
console.log('Hash:', entry.hash)
console.log('Timestamp:', entry.timestamp)

Returns: Promise<GetTipResponse> with chain entry

getStats()

Get chain statistics.

const { stats } = await sdk.chain.getStats()

console.log('Total entries:', stats.total_entries)
console.log('Total transactions:', stats.total_transactions)
console.log('Current height:', stats.height)
console.log('Circulating supply:', stats.circulating)

Returns: Promise<GetStatsResponse> with chain statistics

getByHeight(height: number)

Get entries at a specific height.

const { entries } = await sdk.chain.getByHeight(1000)

entries.forEach((entry) => {
console.log('Entry hash:', entry.hash)
console.log('Height:', entry.height)
})

Parameters:

  • height (number): Chain height

Returns: Promise<GetByHeightResponse> with array of entries

getByHash(hash: string)

Get entries by hash.

const { entry } = await sdk.chain.getByHash('5Kd3N...')

console.log('Entry:', entry)

Parameters:

  • hash (string): Entry hash (Base58 encoded)

Returns: Promise<GetByHashResponse> with chain entry

getTransactionEventsByAccount(address: string, filters?: TransactionFilters)

Get transaction events for an account.

const events = await sdk.chain.getTransactionEventsByAccount('5Kd3N...', {
limit: 10,
sort: 'desc',
type: 'sent' // or 'recv'
})

events.txs.forEach((event) => {
console.log('Type:', event.type)
console.log('Amount:', event.amount)
console.log('Symbol:', event.symbol)
console.log('Timestamp:', event.timestamp)
})

Parameters:

  • address (string): Account address (Base58 encoded)
  • filters (optional): Transaction filters

Returns: Promise<GetTransactionEventsByAccountResponse> with transaction events

Wallet API

Query wallet balances and transaction information.

getBalance(address: string, symbol?: string)

Get balance for a specific address and token symbol.

const balance = await sdk.wallet.getBalance('5Kd3N...', 'AMA')

console.log('Balance (float):', balance.balance.float)
console.log('Balance (flat):', balance.balance.flat)
console.log('Symbol:', balance.balance.symbol)

Parameters:

  • address (string): Wallet address (Base58 encoded)
  • symbol (string, optional): Token symbol (default: 'AMA')

Returns: Promise<WalletBalance> with token balance

getAllBalances(address: string)

Get all token balances for an address.

const { balances } = await sdk.wallet.getAllBalances('5Kd3N...')

Object.entries(balances).forEach(([symbol, balance]) => {
console.log(`${symbol}: ${balance.float}`)
})

Parameters:

  • address (string): Wallet address (Base58 encoded)

Returns: Promise<GetAllBalancesResponse> with all balances

getTransactions(address: string, query?: GetWalletTransactionsQuery)

Get transactions for a wallet address.

const { txs, cursor } = await sdk.wallet.getTransactions('5Kd3N...', {
limit: 10,
sort: 'desc',
contract: 'Coin',
function: 'transfer'
})

txs.forEach((tx) => {
console.log('Hash:', tx.hash)
console.log('Action:', tx.tx.action)
})

Parameters:

  • address (string): Wallet address (Base58 encoded)
  • query (optional): Query parameters (limit, sort, contract, function, type, cursor)

Returns: Promise<GetWalletTransactionsResponse> with transactions and cursor

Transaction API

Submit transactions and query transaction data.

submit(txPacked: Uint8Array | string)

Submit a transaction to the network.

const result = await sdk.transaction.submit(txPacked)

if (result.error === 'ok') {
console.log('Transaction hash:', result.hash)
} else {
console.error('Error:', result.error)
}

Parameters:

  • txPacked (Uint8Array | string): Packed transaction as Uint8Array or Base58 string

Returns: Promise<SubmitTransactionResponse> with submission result

submitAndWait(txPacked: Uint8Array | string)

Submit a transaction and wait for confirmation.

try {
const result = await sdk.transaction.submitAndWait(txPacked)

if (result.error === 'ok') {
console.log('Hash:', result.hash)
console.log('Entry hash:', result.metadata?.entry_hash)
console.log('Receipt:', result.receipt)
}
} catch (error) {
console.error('Transaction failed or timed out:', error)
}

Parameters:

  • txPacked (Uint8Array | string): Packed transaction

Returns: Promise<SubmitAndWaitTransactionResponse> with confirmation result

get(txHash: string)

Get a transaction by hash.

const tx = await sdk.transaction.get('5Kd3N...')

console.log('Transaction:', tx.hash)
console.log('Signer:', tx.tx.signer)
console.log('Action:', tx.tx.action)
console.log('Receipt:', tx.receipt)

Parameters:

  • txHash (string): Transaction hash (Base58 encoded)

Returns: Promise<Transaction> with transaction data

getTransactionsInEntry(entryHash: string)

Get all transactions in a specific entry.

const { txs } = await sdk.transaction.getTransactionsInEntry('5Kd3N...')

txs.forEach((tx) => {
console.log('Transaction:', tx.hash)
})

Parameters:

  • entryHash (string): Entry hash (Base58 encoded)

Returns: Promise<GetTransactionsInEntryResponse> with transactions

Contract API

Interact with smart contracts and query contract data.

get(key: Uint8Array | string)

Get contract data by key.

const data = await sdk.contract.get(keyBytes)
// or
const data = await sdk.contract.get('5Kd3N...') // Base58 encoded key

console.log('Contract data:', data)

Parameters:

  • key (Uint8Array | string): Contract key as Uint8Array or Base58 string

Returns: Promise<ContractDataValue> with contract data

getPrefix(key: Uint8Array | string)

Get contract data by key prefix.

const data = await sdk.contract.getPrefix(keyPrefix)

data.forEach((item) => {
console.log('Key:', item.key)
console.log('Value:', item.value)
})

Parameters:

  • key (Uint8Array | string): Contract key prefix

Returns: Promise<ContractDataValue[]> with array of key-value pairs

validateBytecode(bytecode: Uint8Array | ArrayBuffer)

Validate contract bytecode.

const result = await sdk.contract.validateBytecode(wasmBytecode)

if (result.error === 'ok') {
console.log('Bytecode is valid')
} else {
console.error('Validation error:', result.error)
}

Parameters:

  • bytecode (Uint8Array | ArrayBuffer): Contract bytecode to validate

Returns: Promise<ValidateBytecodeResponse> with validation result

getRichlist()

Get contract richlist (token holders).

const { richlist } = await sdk.contract.getRichlist()

richlist.forEach((entry) => {
console.log('Address:', entry.address)
console.log('Balance:', entry.balance)
console.log('Rank:', entry.rank)
})

Returns: Promise<GetRichlistResponse> with richlist entries

Epoch API

Query epoch and validator data.

getScore(publicKey?: string)

Get epoch score(s).

// Get score for specific validator
const score = await sdk.epoch.getScore('5Kd3N...')
console.log('Score:', score.score)

// Get all scores
const allScores = await sdk.epoch.getScore()
allScores.forEach(([address, score]) => {
console.log(`${address}: ${score}`)
})

Parameters:

  • publicKey (string, optional): Validator public key (Base58 encoded)

Returns: Promise<EpochScore | EpochScore[]> with score(s)

getAllScores()

Get all epoch scores.

const scores = await sdk.epoch.getAllScores()

scores.forEach(([address, score]) => {
console.log(`${address}: ${score}`)
})

Returns: Promise<EpochScore[]> with all scores

getTopValidators(limit: number)

Get top validators by score.

const topValidators = await sdk.epoch.getTopValidators(10)

topValidators.forEach(([address, score]) => {
console.log(`${address}: ${score}`)
})

Parameters:

  • limit (number): Number of top validators to return

Returns: Promise<EpochScore[]> with top validators

getEmissionAddress()

Get the current emission address.

const { emission_address } = await sdk.epoch.getEmissionAddress()

if (emission_address) {
console.log('Emission address:', emission_address)
} else {
console.log('No emission address set')
}

Returns: Promise<GetEmissionAddressResponse> with emission address

getSolInEpoch(epoch: number, solutionHash: string)

Check if a solution is in a specific epoch.

const result = await sdk.epoch.getSolInEpoch(100, '5Kd3N...')

if (result.error === 'ok') {
console.log('Solution found in epoch')
} else if (result.error === 'sol_not_found') {
console.log('Solution not found')
} else {
console.log('Invalid epoch')
}

Parameters:

  • epoch (number): Epoch number
  • solutionHash (string): Solution hash (Base58 encoded)

Returns: Promise<GetSolInEpochResponse> with check result

Peer API

Query network peer information.

getNodes()

Get all network nodes.

const nodes = await sdk.peer.getNodes()

nodes.forEach((node) => {
console.log('Public Key:', node.pk)
console.log('Version:', node.version)
console.log('Height:', node.temporal_height)
console.log('Online:', node.online)
})

Returns: Promise<PeerInfo[]> with node information

getTrainers()

Get all trainers.

const trainers = await sdk.peer.getTrainers()

trainers.forEach((trainer) => {
console.log('Trainer:', trainer.pk)
console.log('Is Trainer:', trainer.is_trainer)
})

Returns: Promise<PeerInfo[]> with trainer information

getRemovedTrainers()

Get removed trainers.

const removed = await sdk.peer.getRemovedTrainers()

removed.forEach((trainer) => {
console.log('Removed trainer:', trainer.pk)
})

Returns: Promise<PeerInfo[]> with removed trainer information

getANRs()

Get ANR (Autonomous Network Registry) entries.

const anrs = await sdk.peer.getANRs()

anrs.forEach((anr) => {
console.log('Public Key:', anr.pk)
console.log('IP:', anr.ip4)
console.log('Port:', anr.port)
console.log('Version:', anr.version)
})

Returns: Promise<ANRInfo[]> with ANR information

getANRByPk(publicKey: string)

Get ANR entry by public key.

const anr = await sdk.peer.getANRByPk('5Kd3N...')

console.log('ANR:', anr)

Parameters:

  • publicKey (string): Public key (Base58 encoded)

Returns: Promise<ANRInfo> with ANR information

Proof API

Query validator proofs.

getValidators(entryHash: string)

Get validator proof for an entry.

const proof = await sdk.proof.getValidators('5Kd3N...')

console.log('Key:', proof.key)
console.log('Value:', proof.value)
console.log('Validators:', proof.validators)
console.log('Proof:', proof.proof)

Parameters:

  • entryHash (string): Entry hash (Base58 encoded)

Returns: Promise<ProofValidators> with validator proof

Error Handling

All API methods throw AmadeusSDKError on failure:

import { AmadeusSDKError } from '@amadeus-protocol/sdk'

try {
const balance = await sdk.wallet.getBalance(address, 'AMA')
} catch (error) {
if (error instanceof AmadeusSDKError) {
console.error('SDK Error:', error.message)
console.error('Status:', error.status)
console.error('Response:', error.response)
}
}

Next Steps