import { Env, Handler, InternalHandler, KeplrError, Message, } from "@keplr-wallet/router"; import { BackgroundTxExecutorService } from "./service"; import { RecordAndExecuteTxsMsg, ResumeTxMsg, GetTxExecutionMsg, } from "./messages"; export const getHandler: (service: BackgroundTxExecutorService) => Handler = ( service: BackgroundTxExecutorService ) => { return (env: Env, msg: Message) => { switch (msg.constructor) { case RecordAndExecuteTxsMsg: return handleRecordAndExecuteTxsMsg(service)( env, msg as RecordAndExecuteTxsMsg ); case GetTxExecutionMsg: return handleGetTxExecutionMsg(service)(env, msg as GetTxExecutionMsg); case ResumeTxMsg: return handleResumeTxMsg(service)(env, msg as ResumeTxMsg); default: throw new KeplrError("direct-tx-executor", 100, "Unknown msg type"); } }; }; const handleRecordAndExecuteTxsMsg: ( service: BackgroundTxExecutorService ) => InternalHandler = (service) => { return (env, msg) => { return service.recordAndExecuteTxs( env, msg.vaultId, msg.executionType, msg.txs, msg.executableChainIds, msg.historyData, msg.historyTxIndex ); }; }; const handleResumeTxMsg: ( service: BackgroundTxExecutorService ) => InternalHandler = (service) => { return async (env, msg) => { return await service.resumeTx( env, msg.id, msg.txIndex, msg.signedTx, msg.ibcSwapData ); }; }; const handleGetTxExecutionMsg: ( service: BackgroundTxExecutorService ) => InternalHandler = (service) => { return (_env, msg) => { return service.getTxExecution(msg.id); }; };