SDK Actions
A number of SDK methods return actions
. These actions can be one of two types:
ActionType.TRANSACTION
- an action that is executed when a transaction is sent to the blockchainActionType.SIGNABLE
- an action that is executed when a message is signed and submitted through a subsequent SDK call
Actions are returned in order, so it is safe to iterate over them. The following code block is an example of how one might execute all actions:
import { providers } from 'ethers';
import { orderbook } from '@imtbl/sdk';
// Sign and submit all transaction actions. Collect and return all signatures from signable actions.
export async function actionAll(
actions: orderbook.Action[],
provider: providers.Web3Provider,
): Promise<string[]> {
const signer = await provider.getSigner()
const signatures: string[] = [];
for (const action of actions) {
if (action.type === orderbook.ActionType.TRANSACTION) {
const transaction = await action.buildTransaction();
const signedTx = await signer.sendTransaction(transaction);
await signedTx.wait();
}
if (action.type === orderbook.ActionType.SIGNABLE) {
const signature = await signer._signTypedData(
action.message.domain,
action.message.types,
action.message.value,
);
signatures.push(signature);
}
}
return signatures;
}