Skip to content

Commit 086ac41

Browse files
committed
Feat: Add v1 SequencerInbox setters
Closes FS-535
1 parent 6501586 commit 086ac41

File tree

5 files changed

+215
-0
lines changed

5 files changed

+215
-0
lines changed

src/actions/invalidateKeysetHash.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import {
2+
Chain,
3+
Hex,
4+
PrepareTransactionRequestParameters,
5+
PrepareTransactionRequestReturnType,
6+
PublicClient,
7+
Transport,
8+
encodeFunctionData,
9+
} from 'viem';
10+
import { sequencerInbox } from '../contracts';
11+
import { ActionParameters, WithAccount } from '../types/Actions';
12+
import { Prettify } from '../types/utils';
13+
14+
export type InvalidateKeysetHashParameters<Curried extends boolean = false> = Prettify<
15+
WithAccount<
16+
ActionParameters<
17+
{
18+
keysetHash: Hex;
19+
},
20+
'sequencerInbox',
21+
Curried
22+
>
23+
>
24+
>;
25+
26+
export type InvalidateKeysetHashReturnType = PrepareTransactionRequestReturnType;
27+
28+
function sequencerInboxFunctionData({ keysetHash }: InvalidateKeysetHashParameters) {
29+
return encodeFunctionData({
30+
abi: sequencerInbox.abi,
31+
functionName: 'invalidateKeysetHash',
32+
args: [keysetHash],
33+
});
34+
}
35+
36+
export async function invalidateKeysetHash<TChain extends Chain | undefined>(
37+
client: PublicClient<Transport, TChain>,
38+
args: InvalidateKeysetHashParameters,
39+
): Promise<InvalidateKeysetHashReturnType> {
40+
const data = sequencerInboxFunctionData(args);
41+
42+
return client.prepareTransactionRequest({
43+
to: args.sequencerInbox,
44+
value: BigInt(0),
45+
chain: client.chain,
46+
data,
47+
account: args.account,
48+
} satisfies PrepareTransactionRequestParameters);
49+
}

src/actions/setIsbatchPoster.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import {
2+
Address,
3+
Chain,
4+
PrepareTransactionRequestParameters,
5+
PrepareTransactionRequestReturnType,
6+
PublicClient,
7+
Transport,
8+
encodeFunctionData,
9+
} from 'viem';
10+
import { sequencerInbox } from '../contracts';
11+
import { ActionParameters, WithAccount } from '../types/Actions';
12+
import { Prettify } from '../types/utils';
13+
14+
type Args = {
15+
batchPoster: Address;
16+
};
17+
18+
export type SetIsBatchPosterParameters<Curried extends boolean = false> = Prettify<
19+
WithAccount<ActionParameters<Args, 'sequencerInbox', Curried>>
20+
>;
21+
22+
export type SetIsBatchPosterReturnType = PrepareTransactionRequestReturnType;
23+
24+
function sequencerInboxFunctionData({
25+
batchPoster,
26+
enable,
27+
}: SetIsBatchPosterParameters & { enable: boolean }) {
28+
return encodeFunctionData({
29+
abi: sequencerInbox.abi,
30+
functionName: 'setIsBatchPoster',
31+
args: [batchPoster, enable],
32+
});
33+
}
34+
35+
async function setIsBatchPoster<TChain extends Chain | undefined>(
36+
client: PublicClient<Transport, TChain>,
37+
args: SetIsBatchPosterParameters & { enable: boolean },
38+
): Promise<SetIsBatchPosterReturnType> {
39+
const data = sequencerInboxFunctionData(args);
40+
return client.prepareTransactionRequest({
41+
to: args.sequencerInbox,
42+
value: BigInt(0),
43+
chain: client.chain,
44+
data,
45+
account: args.account,
46+
} satisfies PrepareTransactionRequestParameters);
47+
}
48+
49+
export async function enableBatchPoster<TChain extends Chain | undefined>(
50+
client: PublicClient<Transport, TChain>,
51+
args: SetIsBatchPosterParameters,
52+
): Promise<SetIsBatchPosterReturnType> {
53+
return setIsBatchPoster(client, {
54+
...args,
55+
enable: true,
56+
});
57+
}
58+
59+
export async function disableBatchPoster<TChain extends Chain | undefined>(
60+
client: PublicClient<Transport, TChain>,
61+
args: SetIsBatchPosterParameters,
62+
): Promise<SetIsBatchPosterReturnType> {
63+
return setIsBatchPoster(client, {
64+
...args,
65+
enable: false,
66+
});
67+
}

src/actions/setKeyset.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import {
2+
Chain,
3+
Hex,
4+
PrepareTransactionRequestParameters,
5+
PrepareTransactionRequestReturnType,
6+
PublicClient,
7+
Transport,
8+
encodeFunctionData,
9+
} from 'viem';
10+
import { sequencerInbox } from '../contracts';
11+
import { ActionParameters, WithAccount } from '../types/Actions';
12+
import { Prettify } from '../types/utils';
13+
14+
export type SetKeysetParameters<Curried extends boolean = false> = Prettify<
15+
WithAccount<
16+
ActionParameters<
17+
{
18+
keyset: Hex;
19+
},
20+
'sequencerInbox',
21+
Curried
22+
>
23+
>
24+
>;
25+
26+
export type SetKeysetReturnType = PrepareTransactionRequestReturnType;
27+
28+
function sequencerInboxFunctionData({ keyset }: SetKeysetParameters) {
29+
return encodeFunctionData({
30+
abi: sequencerInbox.abi,
31+
functionName: 'setValidKeyset',
32+
args: [keyset],
33+
});
34+
}
35+
36+
export async function setKeyset<TChain extends Chain | undefined>(
37+
client: PublicClient<Transport, TChain>,
38+
args: SetKeysetParameters,
39+
): Promise<SetKeysetReturnType> {
40+
const data = sequencerInboxFunctionData(args);
41+
42+
return client.prepareTransactionRequest({
43+
to: args.sequencerInbox,
44+
value: BigInt(0),
45+
chain: client.chain,
46+
data,
47+
account: args.account,
48+
} satisfies PrepareTransactionRequestParameters);
49+
}

src/actions/setMaxTimeVariation.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import {
2+
Chain,
3+
PrepareTransactionRequestParameters,
4+
PrepareTransactionRequestReturnType,
5+
PublicClient,
6+
Transport,
7+
encodeFunctionData,
8+
} from 'viem';
9+
import { sequencerInbox } from '../contracts';
10+
import { ActionParameters, WithAccount } from '../types/Actions';
11+
import { Prettify } from '../types/utils';
12+
13+
type Args = {
14+
delayBlocks: bigint;
15+
futureBlocks: bigint;
16+
delaySeconds: bigint;
17+
futureSeconds: bigint;
18+
};
19+
export type SetMaxTimeVariationParameters<Curried extends boolean = false> = Prettify<
20+
WithAccount<ActionParameters<Args, 'sequencerInbox', Curried>>
21+
>;
22+
23+
export type SetMaxTimeVariationReturnType = PrepareTransactionRequestReturnType;
24+
25+
function sequencerInboxFunctionData(args: SetMaxTimeVariationParameters) {
26+
return encodeFunctionData({
27+
abi: sequencerInbox.abi,
28+
functionName: 'setMaxTimeVariation',
29+
args: [args],
30+
});
31+
}
32+
33+
export async function setMaxTimeVariation<TChain extends Chain | undefined>(
34+
client: PublicClient<Transport, TChain>,
35+
args: SetMaxTimeVariationParameters,
36+
): Promise<SetMaxTimeVariationReturnType> {
37+
const data = sequencerInboxFunctionData(args);
38+
39+
return client.prepareTransactionRequest({
40+
to: args.sequencerInbox,
41+
value: BigInt(0),
42+
chain: client.chain,
43+
data,
44+
account: args.account,
45+
} satisfies PrepareTransactionRequestParameters);
46+
}

src/types/Actions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,7 @@ export type ActionParameters<Args, ContractName extends string, Curried extends
2020
[key in ContractName]?: Address;
2121
}
2222
>;
23+
24+
export type WithAccount<Args> = Args & {
25+
account: Address;
26+
};

0 commit comments

Comments
 (0)