Skip to content
4 changes: 4 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -355,3 +355,7 @@ export {
//
prepareArbitrumNetwork,
};

export * from './scripting/scriptUtils';
export * from './scripting/viemTransforms';
export * from './scripting/schemas';
278 changes: 278 additions & 0 deletions src/scripting/cli.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,278 @@
import { runCli, cmd } from './scriptUtils';

import {
getValidatorsSchema,
getValidatorsTransform,
getBatchPostersSchema,
getBatchPostersTransform,
getKeysetsSchema,
getKeysetsTransform,
isAnyTrustSchema,
isAnyTrustTransform,
createRollupFetchTransactionHashSchema,
createRollupFetchTransactionHashTransform,
createRollupFetchCoreContractsSchema,
createRollupFetchCoreContractsTransform,
isTokenBridgeDeployedSchema,
isTokenBridgeDeployedTransform,
getBridgeUiConfigSchema,
getBridgeUiConfigTransform,
upgradeExecutorFetchPrivilegedAccountsSchema,
upgradeExecutorFetchPrivilegedAccountsTransform,
setAnyTrustFastConfirmerSchema,
setAnyTrustFastConfirmerTransform,
setValidKeysetSchema,
setValidKeysetTransform,
createRollupSchema,
createRollupTransform,
createTokenBridgeSchema,
createTokenBridgeTransform,
createTokenBridgePrepareTransactionRequestSchema,
createTokenBridgePrepareTransactionRequestTransform,
createTokenBridgePrepareSetWethGatewayTransactionRequestSchema,
createTokenBridgePrepareSetWethGatewayTransactionRequestTransform,
setValidKeysetPrepareTransactionRequestSchema,
setValidKeysetPrepareTransactionRequestTransform,
createRollupPrepareTransactionRequestSchema,
createRollupPrepareTransactionRequestTransform,
createSafePrepareTransactionRequestSchema,
createSafePrepareTransactionRequestTransform,
upgradeExecutorPrepareTransactionRequestSchema,
upgradeExecutorPrepareTransactionRequestTransform,
createRollupEnoughCustomFeeTokenAllowanceSchema,
createRollupEnoughCustomFeeTokenAllowanceTransform,
createRollupPrepareCustomFeeTokenApprovalTransactionRequestSchema,
createRollupPrepareCustomFeeTokenApprovalTransactionRequestTransform,
createTokenBridgeEnoughCustomFeeTokenAllowanceSchema,
createTokenBridgeEnoughCustomFeeTokenAllowanceTransform,
createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequestSchema,
createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequestTransform,
feeRouterDeployRewardDistributorSchema,
feeRouterDeployRewardDistributorTransform,
feeRouterDeployChildToParentRewardRouterSchema,
feeRouterDeployChildToParentRewardRouterTransform,
prepareChainConfigParamsSchema,
prepareChainConfigTransform,
prepareNodeConfigSchema,
prepareNodeConfigTransform,
prepareKeysetSchema,
prepareKeysetTransform,
prepareKeysetHashSchema,
prepareKeysetHashTransform,
prepareDeploymentParamsConfigV21Schema,
prepareDeploymentParamsConfigV21Transform,
prepareDeploymentParamsConfigV32Schema,
prepareDeploymentParamsConfigV32Transform,
getDefaultsSchema,
getDefaultsTransform,
createRollupGetRetryablesFeesSchema,
createRollupGetRetryablesFeesTransform,
fetchAllowanceSchema,
fetchAllowanceTransform,
fetchDecimalsSchema,
fetchDecimalsTransform,
} from './schemas';

import { getValidators } from '../getValidators';
import { getBatchPosters } from '../getBatchPosters';
import { getKeysets } from '../getKeysets';
import { isAnyTrust } from '../isAnyTrust';
import { createRollupFetchTransactionHash } from '../createRollupFetchTransactionHash';
import { createRollupFetchCoreContracts } from '../createRollupFetchCoreContracts';
import { isTokenBridgeDeployed } from '../isTokenBridgeDeployed';
import { getBridgeUiConfig } from '../getBridgeUiConfig';
import { upgradeExecutorFetchPrivilegedAccounts } from '../upgradeExecutorFetchPrivilegedAccounts';
import { setAnyTrustFastConfirmerPrepareTransactionRequest } from '../setAnyTrustFastConfirmerPrepareTransactionRequest';
import { setValidKeyset } from '../setValidKeyset';
import { createRollup } from '../createRollup';
import { createTokenBridge } from '../createTokenBridge';
import { createTokenBridgePrepareTransactionRequest } from '../createTokenBridgePrepareTransactionRequest';
import { createTokenBridgePrepareSetWethGatewayTransactionRequest } from '../createTokenBridgePrepareSetWethGatewayTransactionRequest';
import { setValidKeysetPrepareTransactionRequest } from '../setValidKeysetPrepareTransactionRequest';
import { createRollupPrepareTransactionRequest } from '../createRollupPrepareTransactionRequest';
import { createSafePrepareTransactionRequest } from '../createSafePrepareTransactionRequest';
import { upgradeExecutorPrepareAddExecutorTransactionRequest } from '../upgradeExecutorPrepareAddExecutorTransactionRequest';
import { upgradeExecutorPrepareRemoveExecutorTransactionRequest } from '../upgradeExecutorPrepareRemoveExecutorTransactionRequest';
import { createRollupEnoughCustomFeeTokenAllowance } from '../createRollupEnoughCustomFeeTokenAllowance';
import { createRollupPrepareCustomFeeTokenApprovalTransactionRequest } from '../createRollupPrepareCustomFeeTokenApprovalTransactionRequest';
import { createTokenBridgeEnoughCustomFeeTokenAllowance } from '../createTokenBridgeEnoughCustomFeeTokenAllowance';
import { createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest } from '../createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest';
import { feeRouterDeployRewardDistributor } from '../feeRouterDeployRewardDistributor';
import { feeRouterDeployChildToParentRewardRouter } from '../feeRouterDeployChildToParentRewardRouter';
import { prepareChainConfig } from '../prepareChainConfig';
import { prepareNodeConfig } from '../prepareNodeConfig';
import { prepareKeyset } from '../prepareKeyset';
import { prepareKeysetHash } from '../prepareKeysetHash';
import { createRollupPrepareDeploymentParamsConfig } from '../createRollupPrepareDeploymentParamsConfig';
import { createRollupGetRetryablesFees } from '../createRollupGetRetryablesFees';
import { getDefaultConfirmPeriodBlocks } from '../getDefaultConfirmPeriodBlocks';
import { getDefaultChallengeGracePeriodBlocks } from '../getDefaultChallengeGracePeriodBlocks';
import { getDefaultMinimumAssertionPeriod } from '../getDefaultMinimumAssertionPeriod';
import { getDefaultValidatorAfkBlocks } from '../getDefaultValidatorAfkBlocks';
import { getDefaultSequencerInboxMaxTimeVariation } from '../getDefaultSequencerInboxMaxTimeVariation';
import { fetchAllowance, fetchDecimals } from '../utils/erc20';

runCli('chain-sdk', {
getValidators: cmd(getValidatorsSchema.transform(getValidatorsTransform), getValidators),
getBatchPosters: cmd(getBatchPostersSchema.transform(getBatchPostersTransform), getBatchPosters),
getKeysets: cmd(getKeysetsSchema.transform(getKeysetsTransform), getKeysets),
isAnyTrust: cmd(isAnyTrustSchema.transform(isAnyTrustTransform), isAnyTrust),
createRollupFetchTransactionHash: cmd(
createRollupFetchTransactionHashSchema.transform(createRollupFetchTransactionHashTransform),
createRollupFetchTransactionHash,
),
createRollupFetchCoreContracts: cmd(
createRollupFetchCoreContractsSchema.transform(createRollupFetchCoreContractsTransform),
createRollupFetchCoreContracts,
),
isTokenBridgeDeployed: cmd(
isTokenBridgeDeployedSchema.transform(isTokenBridgeDeployedTransform),
isTokenBridgeDeployed,
),
getBridgeUiConfig: cmd(
getBridgeUiConfigSchema.transform(getBridgeUiConfigTransform),
getBridgeUiConfig,
),
upgradeExecutorFetchPrivilegedAccounts: cmd(
upgradeExecutorFetchPrivilegedAccountsSchema.transform(
upgradeExecutorFetchPrivilegedAccountsTransform,
),
upgradeExecutorFetchPrivilegedAccounts,
),
fetchAllowance: cmd(fetchAllowanceSchema.transform(fetchAllowanceTransform), fetchAllowance),
fetchDecimals: cmd(fetchDecimalsSchema.transform(fetchDecimalsTransform), fetchDecimals),

setAnyTrustFastConfirmer: cmd(
setAnyTrustFastConfirmerSchema.transform(setAnyTrustFastConfirmerTransform),
setAnyTrustFastConfirmerPrepareTransactionRequest,
),
setValidKeyset: cmd(setValidKeysetSchema.transform(setValidKeysetTransform), setValidKeyset),
createRollup: cmd(createRollupSchema.transform(createRollupTransform), createRollup),
createTokenBridge: cmd(
createTokenBridgeSchema.transform(createTokenBridgeTransform),
createTokenBridge,
),
createTokenBridgePrepareTransactionRequest: cmd(
createTokenBridgePrepareTransactionRequestSchema.transform(
createTokenBridgePrepareTransactionRequestTransform,
),
createTokenBridgePrepareTransactionRequest,
),
createTokenBridgePrepareSetWethGatewayTransactionRequest: cmd(
createTokenBridgePrepareSetWethGatewayTransactionRequestSchema.transform(
createTokenBridgePrepareSetWethGatewayTransactionRequestTransform,
),
createTokenBridgePrepareSetWethGatewayTransactionRequest,
),
setValidKeysetPrepareTransactionRequest: cmd(
setValidKeysetPrepareTransactionRequestSchema.transform(
setValidKeysetPrepareTransactionRequestTransform,
),
setValidKeysetPrepareTransactionRequest,
),
createRollupPrepareTransactionRequest: cmd(
createRollupPrepareTransactionRequestSchema.transform(
createRollupPrepareTransactionRequestTransform,
),
createRollupPrepareTransactionRequest,
),
createSafePrepareTransactionRequest: cmd(
createSafePrepareTransactionRequestSchema.transform(
createSafePrepareTransactionRequestTransform,
),
createSafePrepareTransactionRequest,
),
upgradeExecutorPrepareAddExecutor: cmd(
upgradeExecutorPrepareTransactionRequestSchema.transform(
upgradeExecutorPrepareTransactionRequestTransform,
),
upgradeExecutorPrepareAddExecutorTransactionRequest,
),
upgradeExecutorPrepareRemoveExecutor: cmd(
upgradeExecutorPrepareTransactionRequestSchema.transform(
upgradeExecutorPrepareTransactionRequestTransform,
),
upgradeExecutorPrepareRemoveExecutorTransactionRequest,
),
createRollupEnoughCustomFeeTokenAllowance: cmd(
createRollupEnoughCustomFeeTokenAllowanceSchema.transform(
createRollupEnoughCustomFeeTokenAllowanceTransform,
),
createRollupEnoughCustomFeeTokenAllowance,
),
createRollupPrepareCustomFeeTokenApprovalTransactionRequest: cmd(
createRollupPrepareCustomFeeTokenApprovalTransactionRequestSchema.transform(
createRollupPrepareCustomFeeTokenApprovalTransactionRequestTransform,
),
createRollupPrepareCustomFeeTokenApprovalTransactionRequest,
),
createTokenBridgeEnoughCustomFeeTokenAllowance: cmd(
createTokenBridgeEnoughCustomFeeTokenAllowanceSchema.transform(
createTokenBridgeEnoughCustomFeeTokenAllowanceTransform,
),
createTokenBridgeEnoughCustomFeeTokenAllowance,
),
createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest: cmd(
createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequestSchema.transform(
createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequestTransform,
),
createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest,
),
feeRouterDeployRewardDistributor: cmd(
feeRouterDeployRewardDistributorSchema.transform(feeRouterDeployRewardDistributorTransform),
feeRouterDeployRewardDistributor,
),
feeRouterDeployChildToParentRewardRouter: cmd(
feeRouterDeployChildToParentRewardRouterSchema.transform(
feeRouterDeployChildToParentRewardRouterTransform,
),
feeRouterDeployChildToParentRewardRouter,
),

prepareChainConfig: cmd(
prepareChainConfigParamsSchema.transform(prepareChainConfigTransform),
prepareChainConfig,
),
prepareNodeConfig: cmd(
prepareNodeConfigSchema.transform(prepareNodeConfigTransform),
prepareNodeConfig,
),
prepareKeyset: cmd(prepareKeysetSchema.transform(prepareKeysetTransform), prepareKeyset),
prepareKeysetHash: cmd(
prepareKeysetHashSchema.transform(prepareKeysetHashTransform),
prepareKeysetHash,
),
prepareDeploymentParamsConfigV21: cmd(
prepareDeploymentParamsConfigV21Schema.transform(prepareDeploymentParamsConfigV21Transform),
createRollupPrepareDeploymentParamsConfig,
),
prepareDeploymentParamsConfigV32: cmd(
prepareDeploymentParamsConfigV32Schema.transform(prepareDeploymentParamsConfigV32Transform),
createRollupPrepareDeploymentParamsConfig,
),
createRollupGetRetryablesFees: cmd(
createRollupGetRetryablesFeesSchema.transform(createRollupGetRetryablesFeesTransform),
createRollupGetRetryablesFees,
),

getDefaultConfirmPeriodBlocks: cmd(
getDefaultsSchema.transform(getDefaultsTransform),
getDefaultConfirmPeriodBlocks,
),
getDefaultChallengeGracePeriodBlocks: cmd(
getDefaultsSchema.transform(getDefaultsTransform),
getDefaultChallengeGracePeriodBlocks,
),
getDefaultMinimumAssertionPeriod: cmd(
getDefaultsSchema.transform(getDefaultsTransform),
getDefaultMinimumAssertionPeriod,
),
getDefaultValidatorAfkBlocks: cmd(
getDefaultsSchema.transform(getDefaultsTransform),
getDefaultValidatorAfkBlocks,
),
getDefaultSequencerInboxMaxTimeVariation: cmd(
getDefaultsSchema.transform(getDefaultsTransform),
getDefaultSequencerInboxMaxTimeVariation,
),
});
39 changes: 39 additions & 0 deletions src/scripting/examples/createRollup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { runScript } from '../scriptUtils';
import { createRollupDefaultSchema } from '../schemas/createRollup';
import { paramsV3Dot2Schema } from '../schemas/createRollupPrepareDeploymentParamsConfig';
import { prepareChainConfigParamsSchema } from '../schemas/prepareChainConfig';
import { toPublicClient, toAccount } from '../viemTransforms';
import { createRollupPrepareDeploymentParamsConfig } from '../../createRollupPrepareDeploymentParamsConfig';
import { prepareChainConfig } from '../../prepareChainConfig';
import { createRollup } from '../../createRollup';

const schema = createRollupDefaultSchema
.extend({
params: createRollupDefaultSchema.shape.params.extend({
config: paramsV3Dot2Schema.extend({
chainConfig: prepareChainConfigParamsSchema.optional(),
}),
}),
})
.transform((input) => {
const parentChainPublicClient = toPublicClient(input.parentChainRpcUrl);
const {
config: { chainConfig: chainConfigParams, ...restConfig },
...params
} = input.params;
const chainConfig = chainConfigParams ? prepareChainConfig(chainConfigParams) : undefined;
const config = createRollupPrepareDeploymentParamsConfig(parentChainPublicClient, {
...restConfig,
chainConfig,
});
return {
params: { config, ...params },
account: toAccount(input.privateKey),
parentChainPublicClient,
};
});

runScript(schema, async (input) => {
const result = await createRollup(input);
return result.coreContracts;
});
Loading
Loading