Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add v1 RollupAdminLogic setters #133

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions src/actions/setConfirmPeriodBlocks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import {
Chain,
PrepareTransactionRequestParameters,
PrepareTransactionRequestReturnType,
PublicClient,
Transport,
encodeFunctionData,
} from 'viem';
import { rollupAdminLogic } from '../contracts';
import { WithAccount, WithContractAddress } from '../types/Actions';
import { Prettify } from '../types/utils';
import { getRollupAddress } from '../getRollupAddress';

export type SetConfirmPeriodBlocksParameters<Curried extends boolean = false> = Prettify<
WithAccount<WithContractAddress<{ newPeriod: bigint }, 'rollupAdminLogic', Curried>>
>;

export type SetConfirmPeriodBlocksReturnType = PrepareTransactionRequestReturnType;

function rollupAdminLogicFunctionData({ newPeriod }: SetConfirmPeriodBlocksParameters) {
return encodeFunctionData({
abi: rollupAdminLogic.abi,
functionName: 'setConfirmPeriodBlocks',
args: [newPeriod],
});
}

export async function setConfirmPeriodBlocks<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetConfirmPeriodBlocksParameters,
): Promise<SetConfirmPeriodBlocksReturnType> {
const data = rollupAdminLogicFunctionData(args);
const rollupAdminLogicAddresss = await getRollupAddress(client, args);
return client.prepareTransactionRequest({
to: rollupAdminLogicAddresss,
value: BigInt(0),
chain: client.chain,
data,
account: args.account,
} satisfies PrepareTransactionRequestParameters);
}
43 changes: 43 additions & 0 deletions src/actions/setExtraChallengeTimeBlocks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import {
Chain,
PrepareTransactionRequestParameters,
PrepareTransactionRequestReturnType,
PublicClient,
Transport,
encodeFunctionData,
} from 'viem';
import { rollupAdminLogic } from '../contracts';
import { WithAccount, WithContractAddress } from '../types/Actions';
import { Prettify } from '../types/utils';
import { getRollupAddress } from '../getRollupAddress';

export type SetExtraChallengeTimeBlocksParameters<Curried extends boolean = false> = Prettify<
WithAccount<WithContractAddress<{ newExtraTimeBlocks: bigint }, 'rollupAdminLogic', Curried>>
>;

export type SetExtraChallengeTimeBlocksReturnType = PrepareTransactionRequestReturnType;

function rollupAdminLogicFunctionData({
newExtraTimeBlocks,
}: SetExtraChallengeTimeBlocksParameters) {
return encodeFunctionData({
abi: rollupAdminLogic.abi,
functionName: 'setExtraChallengeTimeBlocks',
args: [newExtraTimeBlocks],
});
}

export async function setExtraChallengeTimeBlocks<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetExtraChallengeTimeBlocksParameters,
): Promise<SetExtraChallengeTimeBlocksReturnType> {
const data = rollupAdminLogicFunctionData(args);
const rollupAdminLogicAddresss = await getRollupAddress(client, args);
return client.prepareTransactionRequest({
to: rollupAdminLogicAddresss,
value: BigInt(0),
chain: client.chain,
data,
account: args.account,
} satisfies PrepareTransactionRequestParameters);
}
41 changes: 41 additions & 0 deletions src/actions/setMinimumAssertionPeriod.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import {
Chain,
PrepareTransactionRequestParameters,
PrepareTransactionRequestReturnType,
PublicClient,
Transport,
encodeFunctionData,
} from 'viem';
import { rollupAdminLogic } from '../contracts';
import { WithAccount, WithContractAddress } from '../types/Actions';
import { Prettify } from '../types/utils';
import { getRollupAddress } from '../getRollupAddress';

export type SetMinimumAssertionPeriodParameters<Curried extends boolean = false> = Prettify<
WithAccount<WithContractAddress<{ newPeriod: bigint }, 'rollupAdminLogic', Curried>>
>;

export type SetMinimumAssertionPeriodReturnType = PrepareTransactionRequestReturnType;

function rollupAdminLogicFunctionData({ newPeriod }: SetMinimumAssertionPeriodParameters) {
return encodeFunctionData({
abi: rollupAdminLogic.abi,
functionName: 'setMinimumAssertionPeriod',
args: [newPeriod],
});
}

export async function setMinimumAssertionPeriod<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetMinimumAssertionPeriodParameters,
): Promise<SetMinimumAssertionPeriodReturnType> {
const data = rollupAdminLogicFunctionData(args);
const rollupAdminLogicAddresss = await getRollupAddress(client, args);
return client.prepareTransactionRequest({
to: rollupAdminLogicAddresss,
value: BigInt(0),
chain: client.chain,
data,
account: args.account,
} satisfies PrepareTransactionRequestParameters);
}
53 changes: 53 additions & 0 deletions src/actions/setValidator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import {
Address,
Chain,
PrepareTransactionRequestParameters,
PrepareTransactionRequestReturnType,
PublicClient,
Transport,
encodeFunctionData,
} from 'viem';
import { rollupAdminLogic } from '../contracts';
import { WithAccount, WithContractAddress } from '../types/Actions';
import { Prettify } from '../types/utils';
import { getRollupAddress } from '../getRollupAddress';

export type SetIsValidatorParameters<Curried extends boolean = false> = Prettify<
WithAccount<
WithContractAddress<
{
add: Address[];
remove: Address[];
},
'rollupAdminLogic',
Curried
>
>
>;

export type SetIsValidatorReturnType = PrepareTransactionRequestReturnType;

function rollupAdminLogicFunctionData({ add, remove }: SetIsValidatorParameters) {
const addState: boolean[] = new Array(add.length).fill(true);
const removeState: boolean[] = new Array(remove.length).fill(false);
return encodeFunctionData({
abi: rollupAdminLogic.abi,
functionName: 'setValidator',
args: [add.concat(remove), addState.concat(removeState)],
});
}

export async function setValidators<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetIsValidatorParameters,
): Promise<SetIsValidatorReturnType> {
const data = rollupAdminLogicFunctionData(args);
const rollupAdminLogicAddresss = await getRollupAddress(client, args);
return client.prepareTransactionRequest({
to: rollupAdminLogicAddresss,
value: BigInt(0),
chain: client.chain,
data,
account: args.account,
} satisfies PrepareTransactionRequestParameters);
}
63 changes: 63 additions & 0 deletions src/actions/setValidatorWhitelistDisabled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import {
Chain,
PrepareTransactionRequestParameters,
PrepareTransactionRequestReturnType,
PublicClient,
Transport,
encodeFunctionData,
} from 'viem';
import { rollupAdminLogic } from '../contracts';
import { WithAccount, WithContractAddress } from '../types/Actions';
import { Prettify } from '../types/utils';
import { getRollupAddress } from '../getRollupAddress';

export type SetValidatorWhitelistDisabledParameters<Curried extends boolean = false> = Prettify<
WithAccount<WithContractAddress<{}, 'rollupAdminLogic', Curried>>
>;

export type SetValidatorWhitelistDisabledReturnType = PrepareTransactionRequestReturnType;

function rollupAdminLogicFunctionData({
enable,
}: SetValidatorWhitelistDisabledParameters & { enable: boolean }) {
return encodeFunctionData({
abi: rollupAdminLogic.abi,
functionName: 'setValidatorWhitelistDisabled',
args: [enable],
});
}

async function setValidatorWhitelistDisabled<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetValidatorWhitelistDisabledParameters & { enable: boolean },
): Promise<SetValidatorWhitelistDisabledReturnType> {
const data = rollupAdminLogicFunctionData(args);
const rollupAdminLogicAddresss = await getRollupAddress(client, args);
return client.prepareTransactionRequest({
to: rollupAdminLogicAddresss,
value: BigInt(0),
chain: client.chain,
data,
account: args.account,
} satisfies PrepareTransactionRequestParameters);
}

export async function enableValidatorWhitelist<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetValidatorWhitelistDisabledParameters,
): Promise<SetValidatorWhitelistDisabledReturnType> {
return setValidatorWhitelistDisabled(client, {
...args,
enable: true,
});
}

export async function disableValidatorWhitelist<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetValidatorWhitelistDisabledParameters,
): Promise<SetValidatorWhitelistDisabledReturnType> {
return setValidatorWhitelistDisabled(client, {
...args,
enable: false,
});
}
50 changes: 50 additions & 0 deletions src/actions/setWasmModuleRoot.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import {
Chain,
Hex,
PrepareTransactionRequestParameters,
PrepareTransactionRequestReturnType,
PublicClient,
Transport,
encodeFunctionData,
} from 'viem';
import { rollupAdminLogic } from '../contracts';
import { WithAccount, WithContractAddress } from '../types/Actions';
import { Prettify } from '../types/utils';
import { getRollupAddress } from '../getRollupAddress';

export type SetWasmModuleRootParameters<Curried extends boolean = false> = Prettify<
WithAccount<
WithContractAddress<
{
newWasmModuleRoot: Hex;
},
'rollupAdminLogic',
Curried
>
>
>;

export type SetWasmModuleRootReturnType = PrepareTransactionRequestReturnType;

function rollupAdminLogicFunctionData({ newWasmModuleRoot }: SetWasmModuleRootParameters) {
return encodeFunctionData({
abi: rollupAdminLogic.abi,
functionName: 'setWasmModuleRoot',
args: [newWasmModuleRoot],
});
}

export async function setWasmModuleRoot<TChain extends Chain | undefined>(
client: PublicClient<Transport, TChain>,
args: SetWasmModuleRootParameters,
): Promise<SetWasmModuleRootReturnType> {
const data = rollupAdminLogicFunctionData(args);
const rollupAdminLogicAddresss = await getRollupAddress(client, args);
return client.prepareTransactionRequest({
to: rollupAdminLogicAddresss,
value: BigInt(0),
chain: client.chain,
data,
account: args.account,
} satisfies PrepareTransactionRequestParameters);
}
Loading