diff --git a/src/actions/addSequencerL2Batch.ts b/src/actions/addSequencerL2Batch.ts deleted file mode 100644 index 37477077..00000000 --- a/src/actions/addSequencerL2Batch.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - Chain, - GetFunctionArgs, - PrepareTransactionRequestParameters, - PrepareTransactionRequestReturnType, - PublicClient, - Transport, - encodeFunctionData, -} from 'viem'; -import { sequencerInbox } from '../contracts'; -import { WithContractAddress, ActionParameters, WithAccount } from '../types/Actions'; -import { Prettify } from '../types/utils'; - -type Args = GetFunctionArgs; -type SequencerInboxABI = typeof sequencerInbox.abi; -type BuildAddSequencerL2BatchParameters = Prettify< - WithAccount> ->; -export type BuildAddSequencerL2BatchActionParameters = Prettify< - WithAccount> ->; - -export type BuildAddSequencerL2BatchReturnType = PrepareTransactionRequestReturnType; - -function sequencerInboxFunctionData({ args }: BuildAddSequencerL2BatchParameters) { - return encodeFunctionData({ - abi: sequencerInbox.abi, - functionName: 'addSequencerL2Batch', - args, - }); -} - -export async function buildAddSequencerL2Batch( - client: PublicClient, - args: BuildAddSequencerL2BatchParameters, -): Promise { - const data = sequencerInboxFunctionData(args); - - return client.prepareTransactionRequest({ - to: args.sequencerInbox, - value: BigInt(0), - chain: client.chain, - data, - account: args.account, - } satisfies PrepareTransactionRequestParameters); -} diff --git a/src/actions/invalidateKeysetHash.ts b/src/actions/invalidateKeysetHash.ts new file mode 100644 index 00000000..f4c50f1c --- /dev/null +++ b/src/actions/invalidateKeysetHash.ts @@ -0,0 +1,49 @@ +import { + Chain, + Hex, + PrepareTransactionRequestParameters, + PrepareTransactionRequestReturnType, + PublicClient, + Transport, + encodeFunctionData, +} from 'viem'; +import { sequencerInbox } from '../contracts'; +import { ActionParameters, WithAccount } from '../types/Actions'; +import { Prettify } from '../types/utils'; + +export type InvalidateKeysetHashActionParameters = Prettify< + WithAccount< + ActionParameters< + { + keysetHash: Hex; + }, + 'sequencerInbox', + Curried + > + > +>; + +export type InvalidateKeysetHashReturnType = PrepareTransactionRequestReturnType; + +function sequencerInboxFunctionData({ keysetHash }: InvalidateKeysetHashActionParameters) { + return encodeFunctionData({ + abi: sequencerInbox.abi, + functionName: 'invalidateKeysetHash', + args: [keysetHash], + }); +} + +export async function invalidateKeysetHash( + client: PublicClient, + args: InvalidateKeysetHashActionParameters, +): Promise { + const data = sequencerInboxFunctionData(args); + + return client.prepareTransactionRequest({ + to: args.sequencerInbox, + value: BigInt(0), + chain: client.chain, + data, + account: args.account, + } satisfies PrepareTransactionRequestParameters); +} diff --git a/src/actions/setIsbatchPoster.ts b/src/actions/setIsbatchPoster.ts new file mode 100644 index 00000000..20834ecb --- /dev/null +++ b/src/actions/setIsbatchPoster.ts @@ -0,0 +1,67 @@ +import { + Address, + Chain, + PrepareTransactionRequestParameters, + PrepareTransactionRequestReturnType, + PublicClient, + Transport, + encodeFunctionData, +} from 'viem'; +import { sequencerInbox } from '../contracts'; +import { WithContractAddress, ActionParameters, WithAccount } from '../types/Actions'; +import { Prettify } from '../types/utils'; + +type Args = { + batchPoster: Address; +}; + +type SetIsBatchPosterParameters = Prettify< + WithAccount> +>; +export type SetIsBatchPosterActionParameters = Prettify< + WithAccount> +>; + +export type SetIsBatchPosterReturnType = PrepareTransactionRequestReturnType; + +function sequencerInboxFunctionData({ batchPoster, enable }: SetIsBatchPosterParameters) { + return encodeFunctionData({ + abi: sequencerInbox.abi, + functionName: 'setIsBatchPoster', + args: [batchPoster, enable], + }); +} + +async function setIsBatchPoster( + client: PublicClient, + args: SetIsBatchPosterParameters, +): Promise { + const data = sequencerInboxFunctionData(args); + return client.prepareTransactionRequest({ + to: args.sequencerInbox, + value: BigInt(0), + chain: client.chain, + data, + account: args.account, + } satisfies PrepareTransactionRequestParameters); +} + +export async function enableBatchPoster( + client: PublicClient, + args: SetIsBatchPosterActionParameters, +): Promise { + return setIsBatchPoster(client, { + ...args, + enable: true, + }); +} + +export async function disableBatchPoster( + client: PublicClient, + args: SetIsBatchPosterActionParameters, +): Promise { + return setIsBatchPoster(client, { + ...args, + enable: false, + }); +} diff --git a/src/actions/setKeyset.ts b/src/actions/setKeyset.ts new file mode 100644 index 00000000..5d874b14 --- /dev/null +++ b/src/actions/setKeyset.ts @@ -0,0 +1,49 @@ +import { + Chain, + Hex, + PrepareTransactionRequestParameters, + PrepareTransactionRequestReturnType, + PublicClient, + Transport, + encodeFunctionData, +} from 'viem'; +import { sequencerInbox } from '../contracts'; +import { ActionParameters, WithAccount } from '../types/Actions'; +import { Prettify } from '../types/utils'; + +export type SetKeysetParameters = Prettify< + WithAccount< + ActionParameters< + { + keyset: Hex; + }, + 'sequencerInbox', + Curried + > + > +>; + +export type SetKeysetReturnType = PrepareTransactionRequestReturnType; + +function sequencerInboxFunctionData({ keyset }: SetKeysetParameters) { + return encodeFunctionData({ + abi: sequencerInbox.abi, + functionName: 'setValidKeyset', + args: [keyset], + }); +} + +export async function SetMaxTimeVariation( + client: PublicClient, + args: SetKeysetParameters, +): Promise { + const data = sequencerInboxFunctionData(args); + + return client.prepareTransactionRequest({ + to: args.sequencerInbox, + value: BigInt(0), + chain: client.chain, + data, + account: args.account, + } satisfies PrepareTransactionRequestParameters); +} diff --git a/src/actions/setMaxTimeVariation.ts b/src/actions/setMaxTimeVariation.ts new file mode 100644 index 00000000..c4c9e841 --- /dev/null +++ b/src/actions/setMaxTimeVariation.ts @@ -0,0 +1,46 @@ +import { + Chain, + PrepareTransactionRequestParameters, + PrepareTransactionRequestReturnType, + PublicClient, + Transport, + encodeFunctionData, +} from 'viem'; +import { sequencerInbox } from '../contracts'; +import { ActionParameters, WithAccount } from '../types/Actions'; +import { Prettify } from '../types/utils'; + +type Args = { + delayBlocks: bigint; + futureBlocks: bigint; + delaySeconds: bigint; + futureSeconds: bigint; +}; +export type SetMaxTimeVariationActionParameters = Prettify< + WithAccount> +>; + +export type SetMaxTimeVariationReturnType = PrepareTransactionRequestReturnType; + +function sequencerInboxFunctionData(args: SetMaxTimeVariationActionParameters) { + return encodeFunctionData({ + abi: sequencerInbox.abi, + functionName: 'setMaxTimeVariation', + args: [args], + }); +} + +export async function SetMaxTimeVariation( + client: PublicClient, + args: SetMaxTimeVariationActionParameters, +): Promise { + const data = sequencerInboxFunctionData(args); + + return client.prepareTransactionRequest({ + to: args.sequencerInbox, + value: BigInt(0), + chain: client.chain, + data, + account: args.account, + } satisfies PrepareTransactionRequestParameters); +}