Skip to content

Orchestration API

The Agoric Orchestration API enables developers to seamlessly manage and interact with accounts across multiple blockchain networks, simplifying the complexities of cross-chain operations.

See Orchestration API Spec

Orchestrator Interface

The Orchestrator interface provides a set of high-level methods to manage and interact with interchain accounts. Below are the primary methods:

getChain

Retrieves the chain information and provides access to chain-specific methods. See getChain.

javascript
const chain = await orchestrator.getChain('chainName')

makeLocalAccount

Creates a new LocalChainAccount. See makeLocalAccount.

javascript
const localAccount = await orchestrator.makeLocalAccount()

getBrandInfo

Returns information about a denom, including the equivalent local Brand, the chain where the denom is held, and the chain that issues the corresponding asset. See getBrandInfo.

javascript
const brandInfo = orchestrator.getBrandInfo('denom')

asAmount

Converts a denom amount to an Amount with a brand. See asAmount.

javascript
const amount = orchestrator.asAmount({ denom: 'uatom', value: 1000n })

OrchestrationAccount

An OrchestrationAccount is a type alias that combines the OrchestrationAccountI interface with additional methods. Below are the primary methods available:

getAddress

Retrieves the address of the account on the remote chain. See getAddress.

javascript
const address = await orchestrationAccount.getAddress()

getBalances

Returns an array of amounts for every balance in the account. See getBalances.

javascript
const balances = await orchestrationAccount.getBalances()

getBalance

Retrieves the balance of a specific denom for the account. See getBalance.

javascript
const balance = await orchestrationAccount.getBalance('uatom')

send

Transfers an amount to another account on the same chain. The promise settles when the transfer is complete. See send.

javascript
await orchestrationAccount.send(receiverAddress, amount)

transfer

Transfers an amount to another account, typically on another chain. The promise settles when the transfer is complete. See transfer.

javascript
await orchestrationAccount.transfer(amount, destinationAddress)

transferSteps

Transfers an amount to another account in multiple steps. The promise settles when the entire path of the transfer is complete. See transferSteps.

javascript
await orchestrationAccount.transferSteps(amount, transferMsg)

deposit

Deposits payment from Zoe to the account. For remote accounts, an IBC Transfer will be executed to transfer funds there.

javascript
await orchestrationAccount.deposit(payment)