cosmic-interchain-cli
Version:
A command-line utility for Cosmic Wire's interchain messaging protocol
36 lines • 1.78 kB
JavaScript
import { EV5GnosisSafeTxSubmitter, EV5ImpersonatedAccountTxSubmitter, EV5InterchainAccountTxTransformer, EV5JsonRpcTxSubmitter, TxSubmitterBuilder, TxSubmitterType, TxTransformerType, } from '@hyperlane-xyz/sdk';
export async function getSubmitterBuilder({ submissionStrategy, multiProvider, }) {
const submitter = await getSubmitter(multiProvider, submissionStrategy.submitter);
const transformers = await getTransformers(multiProvider, submissionStrategy.transforms ?? []);
return new TxSubmitterBuilder(submitter, transformers);
}
async function getSubmitter(multiProvider, submitterMetadata) {
switch (submitterMetadata.type) {
case TxSubmitterType.JSON_RPC:
return new EV5JsonRpcTxSubmitter(multiProvider);
case TxSubmitterType.IMPERSONATED_ACCOUNT:
return new EV5ImpersonatedAccountTxSubmitter(multiProvider, {
...submitterMetadata,
});
case TxSubmitterType.GNOSIS_SAFE:
return EV5GnosisSafeTxSubmitter.create(multiProvider, {
...submitterMetadata,
});
default:
throw new Error(`Invalid TxSubmitterType.`);
}
}
async function getTransformers(multiProvider, transformersMetadata) {
return Promise.all(transformersMetadata.map((transformerMetadata) => getTransformer(multiProvider, transformerMetadata)));
}
async function getTransformer(multiProvider, transformerMetadata) {
switch (transformerMetadata.type) {
case TxTransformerType.INTERCHAIN_ACCOUNT:
return new EV5InterchainAccountTxTransformer(multiProvider, {
...transformerMetadata,
});
default:
throw new Error('Invalid TxTransformerType.');
}
}
//# sourceMappingURL=submit.js.map