@matterlabs/zksync-js 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +124 -0
  3. package/dist/adapters/ethers/client.cjs +4548 -0
  4. package/dist/adapters/ethers/client.cjs.map +1 -0
  5. package/dist/adapters/ethers/client.d.ts +61 -0
  6. package/dist/adapters/ethers/client.js +5 -0
  7. package/dist/adapters/ethers/errors/error-ops.d.ts +20 -0
  8. package/dist/adapters/ethers/errors/revert.d.ts +28 -0
  9. package/dist/adapters/ethers/index.cjs +7537 -0
  10. package/dist/adapters/ethers/index.cjs.map +1 -0
  11. package/dist/adapters/ethers/index.d.ts +12 -0
  12. package/dist/adapters/ethers/index.js +8 -0
  13. package/dist/adapters/ethers/resources/deposits/context.d.ts +27 -0
  14. package/dist/adapters/ethers/resources/deposits/index.d.ts +46 -0
  15. package/dist/adapters/ethers/resources/deposits/routes/erc20-base.d.ts +2 -0
  16. package/dist/adapters/ethers/resources/deposits/routes/erc20-nonbase.d.ts +2 -0
  17. package/dist/adapters/ethers/resources/deposits/routes/eth-nonbase.d.ts +2 -0
  18. package/dist/adapters/ethers/resources/deposits/routes/eth.d.ts +2 -0
  19. package/dist/adapters/ethers/resources/deposits/routes/types.d.ts +10 -0
  20. package/dist/adapters/ethers/resources/deposits/services/verification.d.ts +9 -0
  21. package/dist/adapters/ethers/resources/token-info.d.ts +31 -0
  22. package/dist/adapters/ethers/resources/utils.d.ts +39 -0
  23. package/dist/adapters/ethers/resources/withdrawals/context.d.ts +19 -0
  24. package/dist/adapters/ethers/resources/withdrawals/index.d.ts +56 -0
  25. package/dist/adapters/ethers/resources/withdrawals/routes/erc20-nonbase.d.ts +2 -0
  26. package/dist/adapters/ethers/resources/withdrawals/routes/eth-nonbase.d.ts +2 -0
  27. package/dist/adapters/ethers/resources/withdrawals/routes/eth.d.ts +2 -0
  28. package/dist/adapters/ethers/resources/withdrawals/routes/types.d.ts +18 -0
  29. package/dist/adapters/ethers/resources/withdrawals/services/finalization.d.ts +33 -0
  30. package/dist/adapters/ethers/rpc.d.ts +4 -0
  31. package/dist/adapters/ethers/sdk.cjs +6245 -0
  32. package/dist/adapters/ethers/sdk.cjs.map +1 -0
  33. package/dist/adapters/ethers/sdk.d.ts +29 -0
  34. package/dist/adapters/ethers/sdk.js +6 -0
  35. package/dist/adapters/ethers/typechain/IAssetRouterBase.d.ts +198 -0
  36. package/dist/adapters/ethers/typechain/IBridgehub.d.ts +731 -0
  37. package/dist/adapters/ethers/typechain/IERC20.d.ts +108 -0
  38. package/dist/adapters/ethers/typechain/IL1AssetRouter.d.ts +570 -0
  39. package/dist/adapters/ethers/typechain/IL1NativeTokenVault.d.ts +154 -0
  40. package/dist/adapters/ethers/typechain/IL1Nullifier.d.ts +305 -0
  41. package/dist/adapters/ethers/typechain/IL2AssetRouter.d.ts +288 -0
  42. package/dist/adapters/ethers/typechain/IL2NativeTokenVault.d.ts +380 -0
  43. package/dist/adapters/ethers/typechain/common.d.ts +46 -0
  44. package/dist/adapters/ethers/typechain/factories/IAssetRouterBase__factory.d.ts +203 -0
  45. package/dist/adapters/ethers/typechain/factories/IBridgehub__factory.d.ts +998 -0
  46. package/dist/adapters/ethers/typechain/factories/IERC20__factory.d.ts +177 -0
  47. package/dist/adapters/ethers/typechain/factories/IL1AssetRouter__factory.d.ts +666 -0
  48. package/dist/adapters/ethers/typechain/factories/IL1NativeTokenVault__factory.d.ts +234 -0
  49. package/dist/adapters/ethers/typechain/factories/IL1Nullifier__factory.d.ts +382 -0
  50. package/dist/adapters/ethers/typechain/factories/IL2AssetRouter__factory.d.ts +327 -0
  51. package/dist/adapters/ethers/typechain/factories/IL2NativeTokenVault__factory.d.ts +696 -0
  52. package/dist/adapters/ethers/typechain/factories/index.d.ts +8 -0
  53. package/dist/adapters/ethers/typechain/index.d.ts +17 -0
  54. package/dist/adapters/viem/client.cjs +4534 -0
  55. package/dist/adapters/viem/client.cjs.map +1 -0
  56. package/dist/adapters/viem/client.d.ts +44 -0
  57. package/dist/adapters/viem/client.js +5 -0
  58. package/dist/adapters/viem/errors/error-ops.d.ts +20 -0
  59. package/dist/adapters/viem/errors/revert.d.ts +25 -0
  60. package/dist/adapters/viem/index.cjs +7772 -0
  61. package/dist/adapters/viem/index.cjs.map +1 -0
  62. package/dist/adapters/viem/index.d.ts +11 -0
  63. package/dist/adapters/viem/index.js +8 -0
  64. package/dist/adapters/viem/resources/deposits/context.d.ts +27 -0
  65. package/dist/adapters/viem/resources/deposits/index.d.ts +46 -0
  66. package/dist/adapters/viem/resources/deposits/routes/erc20-base.d.ts +2 -0
  67. package/dist/adapters/viem/resources/deposits/routes/erc20-nonbase.d.ts +2 -0
  68. package/dist/adapters/viem/resources/deposits/routes/eth-nonbase.d.ts +2 -0
  69. package/dist/adapters/viem/resources/deposits/routes/eth.d.ts +2 -0
  70. package/dist/adapters/viem/resources/deposits/routes/types.d.ts +20 -0
  71. package/dist/adapters/viem/resources/deposits/services/verification.d.ts +7 -0
  72. package/dist/adapters/viem/resources/token-info.d.ts +34 -0
  73. package/dist/adapters/viem/resources/utils.d.ts +42 -0
  74. package/dist/adapters/viem/resources/withdrawals/context.d.ts +22 -0
  75. package/dist/adapters/viem/resources/withdrawals/index.d.ts +56 -0
  76. package/dist/adapters/viem/resources/withdrawals/routes/erc20-nonbase.d.ts +2 -0
  77. package/dist/adapters/viem/resources/withdrawals/routes/eth-nonbase.d.ts +2 -0
  78. package/dist/adapters/viem/resources/withdrawals/routes/eth.d.ts +2 -0
  79. package/dist/adapters/viem/resources/withdrawals/routes/types.d.ts +19 -0
  80. package/dist/adapters/viem/resources/withdrawals/services/finalization.d.ts +33 -0
  81. package/dist/adapters/viem/rpc.d.ts +2 -0
  82. package/dist/adapters/viem/sdk.cjs +6481 -0
  83. package/dist/adapters/viem/sdk.cjs.map +1 -0
  84. package/dist/adapters/viem/sdk.d.ts +32 -0
  85. package/dist/adapters/viem/sdk.js +6 -0
  86. package/dist/chunk-263G6636.js +36 -0
  87. package/dist/chunk-3LALBFFE.js +138 -0
  88. package/dist/chunk-4HLJJKIY.js +262 -0
  89. package/dist/chunk-6GCT6TLS.js +45 -0
  90. package/dist/chunk-7M4V3FMT.js +2444 -0
  91. package/dist/chunk-B77GWPO5.js +339 -0
  92. package/dist/chunk-BD2LUO5T.js +123 -0
  93. package/dist/chunk-CGO27P7F.js +2187 -0
  94. package/dist/chunk-DI2CJDPZ.js +76 -0
  95. package/dist/chunk-Y75OMFK6.js +4489 -0
  96. package/dist/core/constants.cjs +39 -0
  97. package/dist/core/constants.cjs.map +1 -0
  98. package/dist/core/constants.d.ts +36 -0
  99. package/dist/core/constants.js +1 -0
  100. package/dist/core/errors/factory.d.ts +10 -0
  101. package/dist/core/errors/formatter.d.ts +2 -0
  102. package/dist/core/errors/rpc.d.ts +4 -0
  103. package/dist/core/errors/withdrawal-revert-map.d.ts +3 -0
  104. package/dist/core/index.cjs +552 -0
  105. package/dist/core/index.cjs.map +1 -0
  106. package/dist/core/index.d.ts +18 -0
  107. package/dist/core/index.js +4 -0
  108. package/dist/core/internal/abi-registry.d.ts +9 -0
  109. package/dist/core/internal/abis/IAssetRouterBase.d.ts +198 -0
  110. package/dist/core/internal/abis/IBaseToken.d.ts +162 -0
  111. package/dist/core/internal/abis/IBridgehub.d.ts +994 -0
  112. package/dist/core/internal/abis/IERC20.d.ts +224 -0
  113. package/dist/core/internal/abis/IL1AssetRouter.d.ts +661 -0
  114. package/dist/core/internal/abis/IL1Nullifier.d.ts +377 -0
  115. package/dist/core/internal/abis/IL2AssetRouter.d.ts +690 -0
  116. package/dist/core/internal/abis/L1NativeTokenVault.d.ts +719 -0
  117. package/dist/core/internal/abis/L2NativeTokenVault.d.ts +735 -0
  118. package/dist/core/internal/abis/Mailbox.d.ts +779 -0
  119. package/dist/core/resources/deposits/route.d.ts +6 -0
  120. package/dist/core/resources/withdrawals/events.d.ts +9 -0
  121. package/dist/core/resources/withdrawals/logs.d.ts +5 -0
  122. package/dist/core/resources/withdrawals/route.d.ts +6 -0
  123. package/dist/core/rpc/transport.d.ts +10 -0
  124. package/dist/core/rpc/types.d.ts +40 -0
  125. package/dist/core/rpc/zks.d.ts +12 -0
  126. package/dist/core/types/errors.d.ts +177 -0
  127. package/dist/core/types/flows/base.d.ts +51 -0
  128. package/dist/core/types/flows/deposits.d.ts +43 -0
  129. package/dist/core/types/flows/route.d.ts +12 -0
  130. package/dist/core/types/flows/withdrawals.d.ts +83 -0
  131. package/dist/core/types/index.d.ts +2 -0
  132. package/dist/core/types/primitives.d.ts +3 -0
  133. package/dist/core/utils/addr.d.ts +5 -0
  134. package/dist/core/utils/gas.d.ts +13 -0
  135. package/dist/index.cjs +571 -0
  136. package/dist/index.cjs.map +1 -0
  137. package/dist/index.d.ts +18 -0
  138. package/dist/index.js +4 -0
  139. package/package.json +177 -0
@@ -0,0 +1,6 @@
1
+ import type { Address } from '../../types/primitives';
2
+ import type { DepositRoute } from '../../types/flows/deposits';
3
+ export interface BaseTokenLookup {
4
+ baseToken(chainId: bigint): Promise<Address>;
5
+ }
6
+ export declare function pickDepositRoute(client: BaseTokenLookup, chainIdL2: bigint, token: Address): Promise<DepositRoute>;
@@ -0,0 +1,9 @@
1
+ import type { ParsedLog, ParsedReceipt } from '../../types/flows/withdrawals';
2
+ type Prefer = 'messenger' | 'assetRouter' | {
3
+ address: string;
4
+ };
5
+ export declare function findL1MessageSentLog(receipt: ParsedReceipt, opts?: {
6
+ prefer?: Prefer;
7
+ index?: number;
8
+ }): ParsedLog;
9
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { ReceiptWithL2ToL1 } from '../../rpc/types';
2
+ export declare function messengerLogIndex(raw: ReceiptWithL2ToL1, opts?: {
3
+ index?: number;
4
+ messenger?: string;
5
+ }): number;
@@ -0,0 +1,6 @@
1
+ import type { WithdrawRoute } from '../../types/flows/withdrawals';
2
+ import type { Address } from '../../types/primitives';
3
+ export declare function pickWithdrawRoute(args: {
4
+ token: Address;
5
+ baseIsEth: boolean;
6
+ }): WithdrawRoute;
@@ -0,0 +1,10 @@
1
+ import type { RpcTransport } from './types';
2
+ export declare function makeTransportFromEthers(provider: {
3
+ send: (m: string, p: unknown[]) => Promise<unknown>;
4
+ }): RpcTransport;
5
+ export declare function makeTransportFromViem(client: {
6
+ request: (args: {
7
+ method: string;
8
+ params?: unknown[];
9
+ }) => Promise<unknown>;
10
+ }): RpcTransport;
@@ -0,0 +1,40 @@
1
+ import type { Hex, Address } from '../types/primitives';
2
+ export type L2ToL1Log = {
3
+ l2_shard_id: number;
4
+ is_service: boolean;
5
+ tx_number_in_block: number;
6
+ sender: Address;
7
+ key: Hex;
8
+ value: Hex;
9
+ };
10
+ export type ReceiptWithL2ToL1 = {
11
+ transactionHash?: Hex;
12
+ status?: string | number;
13
+ blockNumber?: string | number;
14
+ logs?: Array<{
15
+ address: Address;
16
+ topics: Hex[];
17
+ data: Hex;
18
+ }>;
19
+ l2ToL1Logs?: L2ToL1Log[];
20
+ };
21
+ export type ProofNormalized = {
22
+ id: bigint;
23
+ batchNumber: bigint;
24
+ proof: Hex[];
25
+ };
26
+ export type GenesisContractDeployment = {
27
+ address: Address;
28
+ bytecode: Hex;
29
+ };
30
+ export type GenesisStorageEntry = {
31
+ key: Hex;
32
+ value: Hex;
33
+ };
34
+ export type GenesisInput = {
35
+ initialContracts: GenesisContractDeployment[];
36
+ additionalStorage: GenesisStorageEntry[];
37
+ executionVersion: number;
38
+ genesisRoot: Hex;
39
+ };
40
+ export type RpcTransport = (method: string, params?: unknown[]) => Promise<any>;
@@ -0,0 +1,12 @@
1
+ import type { RpcTransport, ReceiptWithL2ToL1, ProofNormalized, GenesisInput } from './types';
2
+ import type { Hex, Address } from '../types/primitives';
3
+ /** ZKsync-specific RPC methods. */
4
+ export interface ZksRpc {
5
+ getBridgehubAddress(): Promise<Address>;
6
+ getL2ToL1LogProof(txHash: Hex, index: number): Promise<ProofNormalized>;
7
+ getReceiptWithL2ToL1(txHash: Hex): Promise<ReceiptWithL2ToL1 | null>;
8
+ getGenesis(): Promise<GenesisInput>;
9
+ }
10
+ export declare function normalizeProof(p: unknown): ProofNormalized;
11
+ export declare function normalizeGenesis(raw: unknown): GenesisInput;
12
+ export declare function createZksRpc(transport: RpcTransport): ZksRpc;
@@ -0,0 +1,177 @@
1
+ export type ErrorType = 'VALIDATION' | 'STATE' | 'EXECUTION' | 'RPC' | 'INTERNAL' | 'VERIFICATION' | 'CONTRACT';
2
+ /** Resource surface */
3
+ export type Resource = 'deposits' | 'withdrawals' | 'withdrawal-finalization' | 'helpers' | 'zksrpc';
4
+ /** Envelope we throw only for SDK-domain errors. */
5
+ export interface ErrorEnvelope {
6
+ /** Resource surface that raised the error. */
7
+ resource: Resource;
8
+ /** SDK operation, e.g. 'withdrawals.finalize' */
9
+ operation: string;
10
+ /** Broad category */
11
+ type: ErrorType;
12
+ /** Human-readable, stable message for developers. */
13
+ message: string;
14
+ /** Optional detail that adapters may enrich (reverts, extra context) */
15
+ context?: Record<string, unknown>;
16
+ /** If the error is a contract revert, adapters add decoded info here. */
17
+ revert?: {
18
+ /** 4-byte selector as 0x…8 hex */
19
+ selector: `0x${string}`;
20
+ /** Decoded error name when available (e.g. 'InvalidProof') */
21
+ name?: string;
22
+ /** Decoded args (ethers/viem output), when available */
23
+ args?: unknown[];
24
+ /** Optional adapter-known labels */
25
+ contract?: string;
26
+ /** Optional adapter-known function name */
27
+ fn?: string;
28
+ };
29
+ /** Original thrown error */
30
+ cause?: unknown;
31
+ }
32
+ /** Error class.
33
+ * Represents an error that occurs within the ZKsync SDK.
34
+ * It encapsulates an ErrorEnvelope which provides detailed information about the error,
35
+ *
36
+ */
37
+ export declare class ZKsyncError extends Error {
38
+ readonly envelope: ErrorEnvelope;
39
+ constructor(envelope: ErrorEnvelope);
40
+ toJSON(): {
41
+ /** Resource surface that raised the error. */
42
+ resource: Resource;
43
+ /** SDK operation, e.g. 'withdrawals.finalize' */
44
+ operation: string;
45
+ /** Broad category */
46
+ type: ErrorType;
47
+ /** Human-readable, stable message for developers. */
48
+ message: string;
49
+ /** Optional detail that adapters may enrich (reverts, extra context) */
50
+ context?: Record<string, unknown>;
51
+ /** If the error is a contract revert, adapters add decoded info here. */
52
+ revert?: {
53
+ /** 4-byte selector as 0x…8 hex */
54
+ selector: `0x${string}`;
55
+ /** Decoded error name when available (e.g. 'InvalidProof') */
56
+ name?: string;
57
+ /** Decoded args (ethers/viem output), when available */
58
+ args?: unknown[];
59
+ /** Optional adapter-known labels */
60
+ contract?: string;
61
+ /** Optional adapter-known function name */
62
+ fn?: string;
63
+ };
64
+ /** Original thrown error */
65
+ cause?: unknown;
66
+ name: string;
67
+ };
68
+ }
69
+ export declare function isZKsyncError(e: unknown): e is ZKsyncError;
70
+ export declare function isReceiptNotFound(e: unknown): boolean;
71
+ export type TryResult<T> = {
72
+ ok: true;
73
+ value: T;
74
+ } | {
75
+ ok: false;
76
+ error: ZKsyncError;
77
+ };
78
+ export declare const OP_DEPOSITS: {
79
+ readonly quote: "deposits.quote";
80
+ readonly tryQuote: "deposits.tryQuote";
81
+ readonly prepare: "deposits.prepare";
82
+ readonly tryPrepare: "deposits.tryPrepare";
83
+ readonly create: "deposits.create";
84
+ readonly tryCreate: "deposits.tryCreate";
85
+ readonly status: "deposits.status";
86
+ readonly wait: "deposits.wait";
87
+ readonly tryWait: "deposits.tryWait";
88
+ readonly base: {
89
+ readonly assertErc20Asset: "deposits.erc20-base:assertErc20Asset";
90
+ readonly assertMatchesBase: "deposits.erc20-base:assertMatchesBase";
91
+ readonly baseToken: "deposits.erc20-base:baseToken";
92
+ readonly allowance: "deposits.erc20-base:allowance";
93
+ readonly baseCost: "deposits.erc20-base:l2TransactionBaseCost";
94
+ readonly estGas: "deposits.erc20-base:estimateGas";
95
+ };
96
+ readonly nonbase: {
97
+ readonly baseToken: "deposits.erc20-nonbase:baseToken";
98
+ readonly assertNotEthAsset: "deposits.erc20-nonbase:assertNotEthAsset";
99
+ readonly allowance: "deposits.erc20-nonbase:allowance";
100
+ readonly allowanceFees: "deposits.erc20-nonbase:allowanceFeesBaseToken";
101
+ readonly baseCost: "deposits.erc20-nonbase:l2TransactionBaseCost";
102
+ readonly encodeCalldata: "deposits.erc20-nonbase:encodeSecondBridgeErc20Args";
103
+ readonly estGas: "deposits.erc20-nonbase:estimateGas";
104
+ readonly assertBaseIsEth: "deposits.erc20-nonbase:assertBaseIsEth";
105
+ readonly assertBaseIsErc20: "deposits.erc20-nonbase:assertBaseIsErc20";
106
+ readonly assertNonBaseToken: "deposits.erc20-nonbase:assertNonBaseToken";
107
+ readonly allowanceToken: "deposits.erc20-nonbase:allowanceToken";
108
+ readonly allowanceBase: "deposits.erc20-nonbase:allowanceBase";
109
+ };
110
+ readonly eth: {
111
+ readonly baseCost: "deposits.eth:l2TransactionBaseCost";
112
+ readonly estGas: "deposits.eth:estimateGas";
113
+ };
114
+ readonly ethNonBase: {
115
+ readonly baseToken: "deposits.eth-nonbase:baseToken";
116
+ readonly baseCost: "deposits.eth-nonbase:l2TransactionBaseCost";
117
+ readonly allowanceBase: "deposits.eth-nonbase:allowanceBaseToken";
118
+ readonly ethBalance: "deposits.eth-nonbase:getEthBalance";
119
+ readonly encodeCalldata: "deposits.eth-nonbase:encodeSecondBridgeEthArgs";
120
+ readonly estGas: "deposits.eth-nonbase:estimateGas";
121
+ readonly assertEthAsset: "deposits.eth-nonbase:assertEthAsset";
122
+ readonly assertNonEthBase: "deposits.eth-nonbase:assertNonEthBase";
123
+ readonly assertEthBalance: "deposits.eth-nonbase:assertEthBalance";
124
+ };
125
+ };
126
+ export declare const OP_WITHDRAWALS: {
127
+ readonly quote: "withdrawals.quote";
128
+ readonly tryQuote: "withdrawals.tryQuote";
129
+ readonly prepare: "withdrawals.prepare";
130
+ readonly tryPrepare: "withdrawals.tryPrepare";
131
+ readonly create: "withdrawals.create";
132
+ readonly tryCreate: "withdrawals.tryCreate";
133
+ readonly status: "withdrawals.status";
134
+ readonly wait: "withdrawals.wait";
135
+ readonly tryWait: "withdrawals.tryWait";
136
+ readonly erc20: {
137
+ readonly allowance: "withdrawals.erc20:allowance";
138
+ readonly ensureRegistered: "withdrawals.erc20:ensureTokenIsRegistered";
139
+ readonly encodeAssetData: "withdrawals.erc20:encodeAssetData";
140
+ readonly encodeWithdraw: "withdrawals.erc20:encodeWithdraw";
141
+ readonly estGas: "withdrawals.erc20:estimateGas";
142
+ };
143
+ readonly eth: {
144
+ readonly encodeWithdraw: "withdrawals.eth:encodeWithdraw";
145
+ readonly estGas: "withdrawals.eth:estimateGas";
146
+ };
147
+ readonly ethNonBase: {
148
+ readonly allowance: "withdrawals.eth-nonbase:allowance";
149
+ readonly ensureRegistered: "withdrawals.eth-nonbase:ensureTokenIsRegistered";
150
+ readonly encodeAssetData: "withdrawals.eth-nonbase:encodeAssetData";
151
+ readonly encodeWithdraw: "withdrawals.eth-nonbase:encodeWithdraw";
152
+ readonly estGas: "withdrawals.eth-nonbase:estimateGas";
153
+ readonly baseToken: "withdrawals.eth-nonbase:baseToken";
154
+ readonly assertNonEthBase: "withdrawals.eth-nonbase:assertNonEthBase";
155
+ };
156
+ readonly finalize: {
157
+ readonly fetchParams: {
158
+ readonly receipt: "withdrawals.finalize.fetchParams:receipt";
159
+ readonly findMessage: "withdrawals.finalize.fetchParams:findMessage";
160
+ readonly decodeMessage: "withdrawals.finalize.fetchParams:decodeMessage";
161
+ readonly rawReceipt: "withdrawals.finalize.fetchParams:rawReceipt";
162
+ readonly messengerIndex: "withdrawals.finalize.fetchParams:messengerIndex";
163
+ readonly proof: "withdrawals.finalize.fetchParams:proof";
164
+ readonly network: "withdrawals.finalize.fetchParams:network";
165
+ readonly ensureAddresses: "withdrawals.finalize.fetchParams:ensureAddresses";
166
+ };
167
+ readonly readiness: {
168
+ readonly ensureAddresses: "withdrawals.finalize.readiness:ensureAddresses";
169
+ readonly isFinalized: "withdrawals.finalize.readiness:isWithdrawalFinalized";
170
+ readonly simulate: "withdrawals.finalize.readiness:simulate";
171
+ };
172
+ readonly isFinalized: "withdrawals.finalize.isWithdrawalFinalized";
173
+ readonly send: "withdrawals.finalize.finalizeDeposit:send";
174
+ readonly wait: "withdrawals.finalize.finalizeDeposit:wait";
175
+ readonly estimate: "withdrawals.finalize.estimateFinalizationFees";
176
+ };
177
+ };
@@ -0,0 +1,51 @@
1
+ import type { Address, Hex } from '../primitives';
2
+ export interface Eip1559GasOverrides {
3
+ gasLimit?: bigint;
4
+ maxFeePerGas?: bigint;
5
+ maxPriorityFeePerGas?: bigint;
6
+ }
7
+ export interface ResolvedEip1559Fees {
8
+ gasLimit?: bigint;
9
+ maxFeePerGas: bigint;
10
+ maxPriorityFeePerGas: bigint;
11
+ }
12
+ /** Generic approval requirement */
13
+ export interface ApprovalNeed {
14
+ token: Address;
15
+ spender: Address;
16
+ amount: bigint;
17
+ }
18
+ /** Generic step (adapter injects Tx type) */
19
+ export interface PlanStep<Tx, Preview = undefined> {
20
+ key: string;
21
+ kind: string;
22
+ description: string;
23
+ /** Adapter-specific request (ethers TransactionRequest, viem WriteContractParameters, etc.) */
24
+ tx: Tx;
25
+ /** Optional compact, human-friendly view for logging/UI */
26
+ preview?: Preview;
27
+ }
28
+ /** Generic plan */
29
+ export interface Plan<Tx, Route, Quote> {
30
+ route: Route;
31
+ summary: Quote;
32
+ steps: Array<PlanStep<Tx>>;
33
+ }
34
+ /** Generic handle (returned by create()) */
35
+ export interface Handle<TxHashMap extends Record<string, Hex>, Route, PlanT> {
36
+ kind: 'deposit' | 'withdrawal';
37
+ route?: Route;
38
+ stepHashes: TxHashMap;
39
+ plan: PlanT;
40
+ }
41
+ /** Waitable inputs */
42
+ export type Waitable<HashKey extends string = 'txHash'> = Hex | Record<HashKey, Hex> | {
43
+ [k in HashKey]?: Hex;
44
+ } | {
45
+ stepHashes?: Record<string, Hex>;
46
+ };
47
+ export interface CommonCtx {
48
+ sender: Address;
49
+ chainIdL2: bigint;
50
+ bridgehub: Address;
51
+ }
@@ -0,0 +1,43 @@
1
+ import type { Address, Hex } from '../primitives';
2
+ import type { ApprovalNeed, Plan, Handle, Eip1559GasOverrides, ResolvedEip1559Fees } from './base';
3
+ /** Input */
4
+ export interface DepositParams {
5
+ token: Address;
6
+ amount: bigint;
7
+ to?: Address;
8
+ refundRecipient?: Address;
9
+ l2GasLimit?: bigint;
10
+ gasPerPubdata?: bigint;
11
+ operatorTip?: bigint;
12
+ l1TxOverrides?: Eip1559GasOverrides;
13
+ }
14
+ /** Routes */
15
+ export type DepositRoute = 'eth-base' | 'eth-nonbase' | 'erc20-base' | 'erc20-nonbase';
16
+ /** Quote */
17
+ export interface DepositQuote {
18
+ route: DepositRoute;
19
+ approvalsNeeded: readonly ApprovalNeed[];
20
+ baseCost: bigint;
21
+ mintValue: bigint;
22
+ gasPerPubdata: bigint;
23
+ fees: ResolvedEip1559Fees;
24
+ }
25
+ /** Plan (Tx generic) */
26
+ export type DepositPlan<Tx> = Plan<Tx, DepositRoute, DepositQuote>;
27
+ /** Handle */
28
+ export interface DepositHandle<Tx> extends Handle<Record<string, Hex>, DepositRoute, DepositPlan<Tx>> {
29
+ kind: 'deposit';
30
+ l1TxHash: Hex;
31
+ l2ChainId?: number;
32
+ l2TxHash?: Hex;
33
+ }
34
+ /** Waitable */
35
+ export type DepositWaitable = Hex | {
36
+ l1TxHash: Hex;
37
+ } | DepositHandle<unknown>;
38
+ export type DepositPhase = 'L1_PENDING' | 'L1_INCLUDED' | 'L2_PENDING' | 'L2_EXECUTED' | 'L2_FAILED' | 'UNKNOWN';
39
+ export type DepositStatus = {
40
+ phase: DepositPhase;
41
+ l1TxHash: Hex;
42
+ l2TxHash?: Hex;
43
+ };
@@ -0,0 +1,12 @@
1
+ import type { ApprovalNeed, PlanStep } from './base';
2
+ export interface RouteStrategy<P, Tx, QuoteExtras = unknown, Ctx = unknown> {
3
+ /** Optional preflight to refine route / sanity checks. */
4
+ preflight?(p: P, ctx: Ctx): Promise<void>;
5
+ /** Build plan (tx steps + approvals). */
6
+ build(p: P, ctx: Ctx): Promise<{
7
+ steps: Array<PlanStep<Tx>>;
8
+ approvals: ApprovalNeed[];
9
+ /** Optional per-route add-ons used by the resource to compose the Quote. */
10
+ quoteExtras: QuoteExtras;
11
+ }>;
12
+ }
@@ -0,0 +1,83 @@
1
+ import type { Address, Hex } from '../primitives';
2
+ import type { ApprovalNeed, Plan, Handle, Eip1559GasOverrides, ResolvedEip1559Fees } from './base';
3
+ /** Input */
4
+ export interface WithdrawParams {
5
+ token: Address;
6
+ amount: bigint;
7
+ to?: Address;
8
+ l2GasLimit?: bigint;
9
+ l2TxOverrides?: Eip1559GasOverrides;
10
+ }
11
+ /** Routes */
12
+ export type WithdrawRoute = 'eth-base' | 'erc20-nonbase' | 'eth-nonbase';
13
+ /** Quote */
14
+ export interface WithdrawQuote {
15
+ route: WithdrawRoute;
16
+ approvalsNeeded: readonly ApprovalNeed[];
17
+ suggestedL2GasLimit: bigint;
18
+ fees: ResolvedEip1559Fees;
19
+ }
20
+ /** Plan (Tx generic) */
21
+ export type WithdrawPlan<Tx> = Plan<Tx, WithdrawRoute, WithdrawQuote>;
22
+ /** Handle */
23
+ export interface WithdrawHandle<Tx> extends Handle<Record<string, Hex>, WithdrawRoute, WithdrawPlan<Tx>> {
24
+ kind: 'withdrawal';
25
+ l2TxHash: Hex;
26
+ l1TxHash?: Hex;
27
+ l2BatchNumber?: number;
28
+ l2MessageIndex?: number;
29
+ l2TxNumberInBatch?: number;
30
+ }
31
+ /** Waitable */
32
+ export type WithdrawalWaitable = Hex | {
33
+ l2TxHash?: Hex;
34
+ l1TxHash?: Hex;
35
+ } | WithdrawHandle<unknown>;
36
+ export interface FinalizeDepositParams {
37
+ chainId: bigint;
38
+ l2BatchNumber: bigint;
39
+ l2MessageIndex: bigint;
40
+ l2Sender: Address;
41
+ l2TxNumberInBatch: number;
42
+ message: Hex;
43
+ merkleProof: Hex[];
44
+ }
45
+ export type WithdrawalKey = {
46
+ chainIdL2: bigint;
47
+ l2BatchNumber: bigint;
48
+ l2MessageIndex: bigint;
49
+ };
50
+ type WithdrawalPhase = 'L2_PENDING' | 'L2_INCLUDED' | 'PENDING' | 'READY_TO_FINALIZE' | 'FINALIZING' | 'FINALIZED' | 'FINALIZE_FAILED' | 'UNKNOWN';
51
+ export type WithdrawalStatus = {
52
+ phase: WithdrawalPhase;
53
+ l2TxHash: Hex;
54
+ l1FinalizeTxHash?: Hex;
55
+ key?: WithdrawalKey;
56
+ };
57
+ export type FinalizeReadiness = {
58
+ kind: 'READY';
59
+ } | {
60
+ kind: 'FINALIZED';
61
+ } | {
62
+ kind: 'NOT_READY';
63
+ reason: 'paused' | 'batch-not-executed' | 'root-missing' | 'unknown';
64
+ detail?: string;
65
+ } | {
66
+ kind: 'UNFINALIZABLE';
67
+ reason: 'message-invalid' | 'invalid-chain' | 'settlement-layer' | 'unsupported';
68
+ detail?: string;
69
+ };
70
+ export interface FinalizationEstimate {
71
+ gasLimit: bigint;
72
+ maxFeePerGas: bigint;
73
+ maxPriorityFeePerGas: bigint;
74
+ }
75
+ export type ParsedLog = {
76
+ address: string;
77
+ topics: Hex[];
78
+ data: Hex;
79
+ };
80
+ export type ParsedReceipt = {
81
+ logs: ParsedLog[];
82
+ };
83
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './primitives';
2
+ export * from './errors';
@@ -0,0 +1,3 @@
1
+ export type Address = `0x${string}`;
2
+ export type Hex = `0x${string}`;
3
+ export type Hash = Hex;
@@ -0,0 +1,5 @@
1
+ import type { Address, Hex } from '../types/primitives.ts';
2
+ export declare const isHash66: (x?: string) => x is Hex;
3
+ export declare function isAddressEq(a: Address, b: Address): boolean;
4
+ export declare function isETH(token: Address): boolean;
5
+ export declare function normalizeAddrEq(a?: string, b?: string): boolean;
@@ -0,0 +1,13 @@
1
+ import type { Eip1559GasOverrides } from '../types/flows/base';
2
+ /**
3
+ * Ensures a user-supplied override does not include legacy gas properties.
4
+ * Throws if `gasPrice` is present.
5
+ */
6
+ export declare function assertNoLegacyGas(overrides: Eip1559GasOverrides | (Eip1559GasOverrides & Record<string, unknown>) | undefined): void;
7
+ /**
8
+ * Validates that maxPriorityFeePerGas does not exceed maxFeePerGas.
9
+ */
10
+ export declare function assertPriorityFeeBounds(fees: {
11
+ maxFeePerGas: bigint;
12
+ maxPriorityFeePerGas: bigint;
13
+ }): void;