-
Notifications
You must be signed in to change notification settings - Fork 0
/
submitCalldata.ts
34 lines (31 loc) · 1.17 KB
/
submitCalldata.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { ethers } from "ethers";
import ENTRYPOINT from "./EntryPoint";
import saveAccount from "./saveAccount";
import submitUserOperationViaBundler from "./submitUserOperationViaBundler";
import Monad from "./Monad";
import getInitCode from "./getInitCode";
import { loadAccount } from "./loaders";
import getNonce from "./getNonce";
import { fillUserOpDefaults, lamportSignUserOp } from "./UserOperation";
import { bytes } from "./SolidityTypes";
const submitCalldata = async (_accountName: string, calldata: bytes) => {
const account = await loadAccount(_accountName.toLowerCase())
const initCode = await getInitCode(account);
const userOp = Monad.of({
sender: account.counterfactual,
initCode: initCode,
callData: calldata,
nonce: await getNonce(account),
})
.bind(fillUserOpDefaults)
.bind((uo: any) => lamportSignUserOp(
uo,
ethers.Wallet.fromMnemonic(account.ecdsaSecret, account.ecdsaPath),
ENTRYPOINT,
account.network,
account.keys
))
await submitUserOperationViaBundler(userOp.unwrap(), account)
saveAccount(account)
}
export default submitCalldata