Skip to content

Commit 0b9f6cf

Browse files
committed
Feat: Add v1 upgradeExecutor setters
1 parent 7bb31d2 commit 0b9f6cf

File tree

3 files changed

+88
-1
lines changed

3 files changed

+88
-1
lines changed

src/actions/buildAddExecutor.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { Address, Chain, PrepareTransactionRequestParameters, PublicClient, Transport } from 'viem';
2+
import { upgradeExecutorABI } from '../contracts/UpgradeExecutor';
3+
import {
4+
ActionParameters,
5+
PrepareTransactionRequestReturnTypeWithChainId,
6+
WithAccount,
7+
} from '../types/Actions';
8+
import { Prettify } from '../types/utils';
9+
import { UPGRADE_EXECUTOR_ROLE_EXECUTOR } from '../upgradeExecutorEncodeFunctionData';
10+
import { prepareUpgradeExecutorCallParameters } from '../prepareUpgradeExecutorCallParameters';
11+
12+
export type BuildAddExecutorParameters<Curried extends boolean = false> = Prettify<
13+
WithAccount<
14+
ActionParameters<
15+
{
16+
address: Address;
17+
},
18+
'upgradeExecutor',
19+
Curried
20+
>
21+
>
22+
>;
23+
24+
export type BuildAddExecutorReturnType = PrepareTransactionRequestReturnTypeWithChainId;
25+
26+
export async function buildAddExecutor<TChain extends Chain>(
27+
client: PublicClient<Transport, TChain>,
28+
{ account, upgradeExecutor: upgradeExecutorAddress, params }: BuildAddExecutorParameters,
29+
): Promise<BuildAddExecutorReturnType> {
30+
const request = await client.prepareTransactionRequest({
31+
chain: client.chain as Chain | undefined,
32+
account,
33+
...prepareUpgradeExecutorCallParameters({
34+
to: upgradeExecutorAddress,
35+
upgradeExecutor: upgradeExecutorAddress,
36+
args: [UPGRADE_EXECUTOR_ROLE_EXECUTOR, params.address],
37+
abi: upgradeExecutorABI,
38+
functionName: 'grantRole',
39+
}),
40+
} satisfies PrepareTransactionRequestParameters);
41+
42+
return { ...request, chainId: client.chain.id };
43+
}

src/actions/buildRemoveExecutor.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { Address, Chain, PrepareTransactionRequestParameters, PublicClient, Transport } from 'viem';
2+
import { upgradeExecutorABI } from '../contracts/UpgradeExecutor';
3+
import {
4+
ActionParameters,
5+
PrepareTransactionRequestReturnTypeWithChainId,
6+
WithAccount,
7+
} from '../types/Actions';
8+
import { Prettify } from '../types/utils';
9+
import { UPGRADE_EXECUTOR_ROLE_EXECUTOR } from '../upgradeExecutorEncodeFunctionData';
10+
import { prepareUpgradeExecutorCallParameters } from '../prepareUpgradeExecutorCallParameters';
11+
12+
export type BuildRemoveExecutorParameters<Curried extends boolean = false> = Prettify<
13+
WithAccount<
14+
ActionParameters<
15+
{
16+
address: Address;
17+
},
18+
'upgradeExecutor',
19+
Curried
20+
>
21+
>
22+
>;
23+
24+
export type BuildRemoveExecutorReturnType = PrepareTransactionRequestReturnTypeWithChainId;
25+
26+
export async function buildRemoveExecutor<TChain extends Chain>(
27+
client: PublicClient<Transport, TChain>,
28+
{ account, upgradeExecutor: upgradeExecutorAddress, params }: BuildRemoveExecutorParameters,
29+
): Promise<BuildRemoveExecutorReturnType> {
30+
const request = await client.prepareTransactionRequest({
31+
chain: client.chain as Chain | undefined,
32+
account,
33+
...prepareUpgradeExecutorCallParameters({
34+
to: upgradeExecutorAddress,
35+
upgradeExecutor: upgradeExecutorAddress,
36+
args: [UPGRADE_EXECUTOR_ROLE_EXECUTOR, params.address],
37+
abi: upgradeExecutorABI,
38+
functionName: 'revokeRole',
39+
}),
40+
} satisfies PrepareTransactionRequestParameters);
41+
42+
return { ...request, chainId: client.chain.id };
43+
}

src/prepareUpgradeExecutorCallParameters.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ import {
1010
upgradeExecutorEncodeFunctionData,
1111
UpgradeExecutorFunctionName,
1212
} from './upgradeExecutorEncodeFunctionData';
13+
import { upgradeExecutorABI } from './contracts/UpgradeExecutor';
1314

14-
type ABIs = typeof sequencerInboxABI | typeof arbOwnerABI;
15+
type ABIs = typeof sequencerInboxABI | typeof arbOwnerABI | typeof upgradeExecutorABI;
1516
type FunctionName<TAbi extends ABIs> = GetFunctionName<TAbi>;
1617

1718
type EncodeFunctionDataParameters<

0 commit comments

Comments
 (0)