diff --git a/scripts/rpcConfig/constants/finality.ts b/scripts/rpcConfig/constants/finality.ts new file mode 100644 index 00000000..54f6dbd2 --- /dev/null +++ b/scripts/rpcConfig/constants/finality.ts @@ -0,0 +1,646 @@ +import { ChainFinalityInfo, ChainSlug, FinalityBucket, FinalityType } from "../../../src"; + +export const finality :{ + [chainSlug in ChainSlug]?: ChainFinalityInfo; +} = { + [ChainSlug.AEVO]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:2, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.ARBITRUM]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.LYRA]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:2, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.OPTIMISM]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:15, + time:0 + }, + [FinalityBucket.medium]:{ + block:30, + time:0 + }, + [FinalityBucket.slow]:{ + block:40, + time:0 + } + }, + [ChainSlug.BSC]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.POLYGON_MAINNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.slow, + [FinalityBucket.fast]:{ + block:50, + time:0 + }, + [FinalityBucket.medium]:{ + block:150, + time:0 + }, + [FinalityBucket.slow]:{ + block:256, + time:0 + } + }, + [ChainSlug.MAINNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.slow, + [FinalityBucket.fast]:{ + block:6, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:18, + time:0 + } + }, + [ChainSlug.BASE]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.MODE]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:2, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.ARBITRUM_GOERLI]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.AEVO_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.LYRA_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.OPTIMISM_GOERLI]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.GOERLI]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.XAI_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.SX_NETWORK_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.SX_NETWORK]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.MODE_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.VICTION_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.CDK_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.ARBITRUM_SEPOLIA]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.OPTIMISM_SEPOLIA]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.SEPOLIA]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.ANCIENT8_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.ANCIENT8_TESTNET2]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.HOOK_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.HOOK]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.PARALLEL]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.MANTLE]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.REYA_CRONOS]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.REYA]: { + type:FinalityType.time, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:0, + time:30 + }, + [FinalityBucket.medium]:{ + time:60, + block:0, + }, + [FinalityBucket.slow]:{ + time:120, + block:0, + } + }, + [ChainSlug.SYNDR_SEPOLIA_L3]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.POLYNOMIAL_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, + [ChainSlug.BOB]: { + type:FinalityType.time, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:0, + time:30 + }, + [FinalityBucket.medium]:{ + time:60, + block:0, + }, + [FinalityBucket.slow]:{ + time:120, + block:0, + } + }, + [ChainSlug.KINTO]: { + type:FinalityType.time, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:0, + time:30 + }, + [FinalityBucket.medium]:{ + time:60, + block:0, + }, + [FinalityBucket.slow]:{ + time:120, + block:0, + } + }, + [ChainSlug.KINTO_DEVNET]: { + type:FinalityType.time, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:0, + time:30 + }, + [FinalityBucket.medium]:{ + time:60, + block:0, + }, + [FinalityBucket.slow]:{ + time:120, + block:0, + } + }, + [ChainSlug.SIPHER_FUNKI_TESTNET]: { + type:FinalityType.time, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:0, + time:30 + }, + [FinalityBucket.medium]:{ + time:60, + block:0, + }, + [FinalityBucket.slow]:{ + time:120, + block:0, + } + }, + [ChainSlug.WINR]: { + type:FinalityType.time, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:0, + time:30 + }, + [FinalityBucket.medium]:{ + time:60, + block:0, + }, + [FinalityBucket.slow]:{ + time:120, + block:0, + } + }, + [ChainSlug.BLAST]: { + type:FinalityType.time, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:0, + time:30 + }, + [FinalityBucket.medium]:{ + time:60, + block:0, + }, + [FinalityBucket.slow]:{ + time:120, + block:0, + } + }, + [ChainSlug.BSC_TESTNET]: { + type:FinalityType.block, + defaultBucket:FinalityBucket.fast, + [FinalityBucket.fast]:{ + block:1, + time:0 + }, + [FinalityBucket.medium]:{ + block:10, + time:0 + }, + [FinalityBucket.slow]:{ + block:20, + time:0 + } + }, +}; diff --git a/scripts/rpcConfig/constants/index.ts b/scripts/rpcConfig/constants/index.ts index 21a613be..9213ce92 100644 --- a/scripts/rpcConfig/constants/index.ts +++ b/scripts/rpcConfig/constants/index.ts @@ -4,3 +4,4 @@ export * from "./explorers"; export * from "./icons"; export * from "./rpc"; export * from "./version"; +export * from "./finality"; diff --git a/scripts/rpcConfig/rpcConfig.ts b/scripts/rpcConfig/rpcConfig.ts index 85e3b4c8..5ad28d7d 100644 --- a/scripts/rpcConfig/rpcConfig.ts +++ b/scripts/rpcConfig/rpcConfig.ts @@ -27,6 +27,7 @@ import { rpcs, version, } from "./constants"; +import { finality } from "./constants/finality"; import { getChainTxData } from "./txdata-builder/generate-calldata"; import dotenv from "dotenv"; @@ -92,6 +93,7 @@ const getChainData = async ( nativeToken: getCurrency(chainSlug), chainType: getChainType(chainSlug), confirmations: confirmations[chainSlug], + finalityInfo: finality[chainSlug], icon: icons[chainSlug], }; }; diff --git a/src/index.ts b/src/index.ts index 3934760f..3649b6c2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import { DeploymentMode } from "./socket-types"; - +export * from "../scripts/rpcConfig/constants"; export * from "./socket-types"; export * from "./enums"; export * from "./addresses"; diff --git a/src/socket-types.ts b/src/socket-types.ts index b8163433..cd08179c 100644 --- a/src/socket-types.ts +++ b/src/socket-types.ts @@ -206,6 +206,36 @@ export enum ChainType { default = "default", } +export enum FinalityBucket { + fast = "fast", + medium = "medium", + slow = "slow", +} + +export enum FinalityType { + block = "block", + time = "time" +} + +export type ChainFinalityInfo = { + type: FinalityType; + defaultBucket: FinalityBucket; + [FinalityBucket.fast]:{ + block: number; + time: number; + }; + [FinalityBucket.medium]:{ + block: number; + time: number; + }; + [FinalityBucket.slow]:{ + block: number; + time: number; + }; + } + + + export type TxData = { [chainSlug in ChainSlug]?: ChainTxData; }; @@ -229,6 +259,7 @@ export interface S3ChainConfig { chainTxData?: ChainTxData; explorer?: string; icon?: string; + finalityInfo?: ChainFinalityInfo; } export type S3Config = {