@axiom-crypto/keystore-sdk
Version:
Keystore Rollup SDK
51 lines • 2.1 kB
JavaScript
import { TransactionType, } from "../types";
import AxiomKeystoreRollupAbi from "./abi/AxiomKeystoreRollup.json";
import { writeContract } from "viem/actions";
const abi = AxiomKeystoreRollupAbi.abi;
async function initiateL1Transaction(client, // eslint-disable-line @typescript-eslint/no-explicit-any
parameters) {
const { bridgeAddress, txClient } = parameters;
const value = await (async () => {
switch (txClient.txType) {
case TransactionType.Deposit:
return ((await client.l1InitiatedFee({ bridgeAddress, txType: TransactionType.Deposit })) +
txClient.amt);
case TransactionType.Withdraw:
return client.l1InitiatedFee({ bridgeAddress, txType: TransactionType.Withdraw });
case TransactionType.Update:
return client.l1InitiatedFee({ bridgeAddress, txType: TransactionType.Update });
default:
throw new Error(`Unsupported transaction type`);
}
})();
return await writeContract(client, {
account: client.account,
chain: client.chain,
address: bridgeAddress,
abi,
functionName: "initiateL1Transaction",
args: [txClient.l1InitiatedTransaction()],
value,
});
}
async function finalizeWithdrawal(client, // eslint-disable-line @typescript-eslint/no-explicit-any
parameters) {
const { bridgeAddress, batchIndex, outputRootPreimage, withdrawalArgs, proof, isLeft } = parameters;
return await writeContract(client, {
account: client.account,
chain: client.chain,
address: bridgeAddress,
abi,
functionName: "finalizeWithdrawal",
args: [batchIndex, outputRootPreimage, withdrawalArgs, proof, isLeft],
});
}
export function walletActionsL1() {
return (client) => {
return {
initiateL1Transaction: (parameters) => initiateL1Transaction(client, parameters),
finalizeWithdrawal: (parameters) => finalizeWithdrawal(client, parameters),
};
};
}
//# sourceMappingURL=walletL1.js.map