@shroud-fi/transport 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +55 -0
- package/dist/cjs/abis.d.ts +446 -0
- package/dist/cjs/abis.d.ts.map +1 -0
- package/dist/cjs/abis.js +287 -0
- package/dist/cjs/abis.js.map +1 -0
- package/dist/cjs/addresses.d.ts +38 -0
- package/dist/cjs/addresses.d.ts.map +1 -0
- package/dist/cjs/addresses.js +43 -0
- package/dist/cjs/addresses.js.map +1 -0
- package/dist/cjs/chains.d.ts +2 -0
- package/dist/cjs/chains.d.ts.map +1 -0
- package/dist/cjs/chains.js +7 -0
- package/dist/cjs/chains.js.map +1 -0
- package/dist/cjs/create.d.ts +3 -0
- package/dist/cjs/create.d.ts.map +1 -0
- package/dist/cjs/create.js +18 -0
- package/dist/cjs/create.js.map +1 -0
- package/dist/cjs/deployments-helpers.d.ts +54 -0
- package/dist/cjs/deployments-helpers.d.ts.map +1 -0
- package/dist/cjs/deployments-helpers.js +99 -0
- package/dist/cjs/deployments-helpers.js.map +1 -0
- package/dist/cjs/deployments.d.ts +35 -0
- package/dist/cjs/deployments.d.ts.map +1 -0
- package/dist/cjs/deployments.js +78 -0
- package/dist/cjs/deployments.js.map +1 -0
- package/dist/cjs/errors.d.ts +9 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +18 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.d.ts +17 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/abis.d.ts +446 -0
- package/dist/esm/abis.d.ts.map +1 -0
- package/dist/esm/abis.js +284 -0
- package/dist/esm/abis.js.map +1 -0
- package/dist/esm/addresses.d.ts +38 -0
- package/dist/esm/addresses.d.ts.map +1 -0
- package/dist/esm/addresses.js +40 -0
- package/dist/esm/addresses.js.map +1 -0
- package/dist/esm/chains.d.ts +2 -0
- package/dist/esm/chains.d.ts.map +1 -0
- package/dist/esm/chains.js +2 -0
- package/dist/esm/chains.js.map +1 -0
- package/dist/esm/create.d.ts +3 -0
- package/dist/esm/create.d.ts.map +1 -0
- package/dist/esm/create.js +15 -0
- package/dist/esm/create.js.map +1 -0
- package/dist/esm/deployments-helpers.d.ts +54 -0
- package/dist/esm/deployments-helpers.d.ts.map +1 -0
- package/dist/esm/deployments-helpers.js +85 -0
- package/dist/esm/deployments-helpers.js.map +1 -0
- package/dist/esm/deployments.d.ts +35 -0
- package/dist/esm/deployments.d.ts.map +1 -0
- package/dist/esm/deployments.js +75 -0
- package/dist/esm/deployments.js.map +1 -0
- package/dist/esm/errors.d.ts +9 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +13 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types.d.ts +17 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +55 -0
package/dist/cjs/abis.js
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ERC6538RegistryAbi = exports.ShroudFiRelayerAbi = exports.ERC20Abi = exports.USDCAuthorizationAbi = exports.ShroudFiStealthAbi = exports.ERC5564AnnouncerAbi = void 0;
|
|
4
|
+
exports.ERC5564AnnouncerAbi = [
|
|
5
|
+
{
|
|
6
|
+
type: 'function',
|
|
7
|
+
name: 'announce',
|
|
8
|
+
inputs: [
|
|
9
|
+
{ name: 'schemeId', type: 'uint256' },
|
|
10
|
+
{ name: 'stealthAddress', type: 'address' },
|
|
11
|
+
{ name: 'ephemeralPubKey', type: 'bytes' },
|
|
12
|
+
{ name: 'metadata', type: 'bytes' },
|
|
13
|
+
],
|
|
14
|
+
outputs: [],
|
|
15
|
+
stateMutability: 'nonpayable',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
type: 'event',
|
|
19
|
+
name: 'Announcement',
|
|
20
|
+
inputs: [
|
|
21
|
+
{ name: 'schemeId', type: 'uint256', indexed: true },
|
|
22
|
+
{ name: 'stealthAddress', type: 'address', indexed: true },
|
|
23
|
+
{ name: 'caller', type: 'address', indexed: true },
|
|
24
|
+
{ name: 'ephemeralPubKey', type: 'bytes', indexed: false },
|
|
25
|
+
{ name: 'metadata', type: 'bytes', indexed: false },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
exports.ShroudFiStealthAbi = [
|
|
30
|
+
{
|
|
31
|
+
type: 'function',
|
|
32
|
+
name: 'sendETH',
|
|
33
|
+
inputs: [
|
|
34
|
+
{ name: 'stealthAddress', type: 'address' },
|
|
35
|
+
{ name: 'ephemeralPubKey', type: 'bytes' },
|
|
36
|
+
{ name: 'viewTag', type: 'bytes1' },
|
|
37
|
+
],
|
|
38
|
+
outputs: [],
|
|
39
|
+
stateMutability: 'payable',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'function',
|
|
43
|
+
name: 'sendERC20',
|
|
44
|
+
inputs: [
|
|
45
|
+
{ name: 'stealthAddress', type: 'address' },
|
|
46
|
+
{ name: 'token', type: 'address' },
|
|
47
|
+
{ name: 'amount', type: 'uint256' },
|
|
48
|
+
{ name: 'ephemeralPubKey', type: 'bytes' },
|
|
49
|
+
{ name: 'viewTag', type: 'bytes1' },
|
|
50
|
+
],
|
|
51
|
+
outputs: [],
|
|
52
|
+
stateMutability: 'nonpayable',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'function',
|
|
56
|
+
name: 'ANNOUNCER',
|
|
57
|
+
inputs: [],
|
|
58
|
+
outputs: [{ name: '', type: 'address' }],
|
|
59
|
+
stateMutability: 'view',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'function',
|
|
63
|
+
name: 'SCHEME_ID',
|
|
64
|
+
inputs: [],
|
|
65
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
66
|
+
stateMutability: 'view',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'function',
|
|
70
|
+
name: 'ETH_TOKEN_ADDRESS',
|
|
71
|
+
inputs: [],
|
|
72
|
+
outputs: [{ name: '', type: 'address' }],
|
|
73
|
+
stateMutability: 'view',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'event',
|
|
77
|
+
name: 'StealthPayment',
|
|
78
|
+
inputs: [
|
|
79
|
+
{ name: 'stealthAddress', type: 'address', indexed: true },
|
|
80
|
+
{ name: 'token', type: 'address', indexed: true },
|
|
81
|
+
{ name: 'amount', type: 'uint256', indexed: false },
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{ type: 'error', name: 'ZeroAddress', inputs: [] },
|
|
85
|
+
{ type: 'error', name: 'ZeroAmount', inputs: [] },
|
|
86
|
+
{ type: 'error', name: 'InsufficientETH', inputs: [] },
|
|
87
|
+
{ type: 'error', name: 'ETHTransferFailed', inputs: [] },
|
|
88
|
+
];
|
|
89
|
+
/**
|
|
90
|
+
* Minimal ABI for USDC's EIP-3009 `transferWithAuthorization`. Pulled out as
|
|
91
|
+
* a separate constant because not every ERC-20 supports it — only Circle's
|
|
92
|
+
* USDC contract and a handful of other authorization-capable tokens. Use
|
|
93
|
+
* `USDC_BY_CHAIN[chainId]` to address the right deployment.
|
|
94
|
+
*
|
|
95
|
+
* The `authorizationState` view is included so callers can confirm a nonce
|
|
96
|
+
* has not already been consumed before submitting.
|
|
97
|
+
*/
|
|
98
|
+
exports.USDCAuthorizationAbi = [
|
|
99
|
+
{
|
|
100
|
+
type: 'function',
|
|
101
|
+
name: 'transferWithAuthorization',
|
|
102
|
+
inputs: [
|
|
103
|
+
{ name: 'from', type: 'address' },
|
|
104
|
+
{ name: 'to', type: 'address' },
|
|
105
|
+
{ name: 'value', type: 'uint256' },
|
|
106
|
+
{ name: 'validAfter', type: 'uint256' },
|
|
107
|
+
{ name: 'validBefore', type: 'uint256' },
|
|
108
|
+
{ name: 'nonce', type: 'bytes32' },
|
|
109
|
+
{ name: 'v', type: 'uint8' },
|
|
110
|
+
{ name: 'r', type: 'bytes32' },
|
|
111
|
+
{ name: 's', type: 'bytes32' },
|
|
112
|
+
],
|
|
113
|
+
outputs: [],
|
|
114
|
+
stateMutability: 'nonpayable',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: 'function',
|
|
118
|
+
name: 'authorizationState',
|
|
119
|
+
inputs: [
|
|
120
|
+
{ name: 'authorizer', type: 'address' },
|
|
121
|
+
{ name: 'nonce', type: 'bytes32' },
|
|
122
|
+
],
|
|
123
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
124
|
+
stateMutability: 'view',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'event',
|
|
128
|
+
name: 'AuthorizationUsed',
|
|
129
|
+
inputs: [
|
|
130
|
+
{ name: 'authorizer', type: 'address', indexed: true },
|
|
131
|
+
{ name: 'nonce', type: 'bytes32', indexed: true },
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
];
|
|
135
|
+
exports.ERC20Abi = [
|
|
136
|
+
{
|
|
137
|
+
type: 'function',
|
|
138
|
+
name: 'balanceOf',
|
|
139
|
+
inputs: [{ name: 'account', type: 'address' }],
|
|
140
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
141
|
+
stateMutability: 'view',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'function',
|
|
145
|
+
name: 'transfer',
|
|
146
|
+
inputs: [
|
|
147
|
+
{ name: 'to', type: 'address' },
|
|
148
|
+
{ name: 'amount', type: 'uint256' },
|
|
149
|
+
],
|
|
150
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
151
|
+
stateMutability: 'nonpayable',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'function',
|
|
155
|
+
name: 'approve',
|
|
156
|
+
inputs: [
|
|
157
|
+
{ name: 'spender', type: 'address' },
|
|
158
|
+
{ name: 'amount', type: 'uint256' },
|
|
159
|
+
],
|
|
160
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
161
|
+
stateMutability: 'nonpayable',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'function',
|
|
165
|
+
name: 'allowance',
|
|
166
|
+
inputs: [
|
|
167
|
+
{ name: 'owner', type: 'address' },
|
|
168
|
+
{ name: 'spender', type: 'address' },
|
|
169
|
+
],
|
|
170
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
171
|
+
stateMutability: 'view',
|
|
172
|
+
},
|
|
173
|
+
];
|
|
174
|
+
exports.ShroudFiRelayerAbi = [
|
|
175
|
+
{
|
|
176
|
+
type: 'function',
|
|
177
|
+
name: 'sweepERC20WithPermit',
|
|
178
|
+
inputs: [
|
|
179
|
+
{ name: 'token', type: 'address' },
|
|
180
|
+
{ name: 'destination', type: 'address' },
|
|
181
|
+
{ name: 'deadline', type: 'uint256' },
|
|
182
|
+
{ name: 'v', type: 'uint8' },
|
|
183
|
+
{ name: 'r', type: 'bytes32' },
|
|
184
|
+
{ name: 's', type: 'bytes32' },
|
|
185
|
+
],
|
|
186
|
+
outputs: [],
|
|
187
|
+
stateMutability: 'nonpayable',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: 'function',
|
|
191
|
+
name: 'previewFee',
|
|
192
|
+
inputs: [{ name: 'grossAmount', type: 'uint256' }],
|
|
193
|
+
outputs: [
|
|
194
|
+
{ name: 'fee', type: 'uint256' },
|
|
195
|
+
{ name: 'net', type: 'uint256' },
|
|
196
|
+
],
|
|
197
|
+
stateMutability: 'view',
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'function',
|
|
201
|
+
name: 'FEE_BPS',
|
|
202
|
+
inputs: [],
|
|
203
|
+
outputs: [{ name: '', type: 'uint16' }],
|
|
204
|
+
stateMutability: 'view',
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
type: 'function',
|
|
208
|
+
name: 'BPS_DENOMINATOR',
|
|
209
|
+
inputs: [],
|
|
210
|
+
outputs: [{ name: '', type: 'uint16' }],
|
|
211
|
+
stateMutability: 'view',
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
type: 'function',
|
|
215
|
+
name: 'TREASURY',
|
|
216
|
+
inputs: [],
|
|
217
|
+
outputs: [{ name: '', type: 'address' }],
|
|
218
|
+
stateMutability: 'view',
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
type: 'function',
|
|
222
|
+
name: 'treasury',
|
|
223
|
+
inputs: [],
|
|
224
|
+
outputs: [{ name: '', type: 'address' }],
|
|
225
|
+
stateMutability: 'view',
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
type: 'function',
|
|
229
|
+
name: 'trustedForwarder',
|
|
230
|
+
inputs: [],
|
|
231
|
+
outputs: [{ name: '', type: 'address' }],
|
|
232
|
+
stateMutability: 'view',
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
type: 'function',
|
|
236
|
+
name: 'isTrustedForwarder',
|
|
237
|
+
inputs: [{ name: 'forwarder', type: 'address' }],
|
|
238
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
239
|
+
stateMutability: 'view',
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
type: 'event',
|
|
243
|
+
name: 'SweepRelayed',
|
|
244
|
+
inputs: [
|
|
245
|
+
{ name: 'stealthAddress', type: 'address', indexed: true },
|
|
246
|
+
{ name: 'token', type: 'address', indexed: true },
|
|
247
|
+
{ name: 'destination', type: 'address', indexed: false },
|
|
248
|
+
{ name: 'grossAmount', type: 'uint256', indexed: false },
|
|
249
|
+
{ name: 'feeAmount', type: 'uint256', indexed: false },
|
|
250
|
+
],
|
|
251
|
+
},
|
|
252
|
+
{ type: 'error', name: 'InvalidToken', inputs: [] },
|
|
253
|
+
{ type: 'error', name: 'InvalidDestination', inputs: [] },
|
|
254
|
+
{ type: 'error', name: 'ZeroBalance', inputs: [] },
|
|
255
|
+
{ type: 'error', name: 'PermitFailedAndNoAllowance', inputs: [] },
|
|
256
|
+
{ type: 'error', name: 'TransferFailed', inputs: [] },
|
|
257
|
+
];
|
|
258
|
+
exports.ERC6538RegistryAbi = [
|
|
259
|
+
{
|
|
260
|
+
type: 'function',
|
|
261
|
+
name: 'registerKeys',
|
|
262
|
+
inputs: [
|
|
263
|
+
{ name: 'schemeId', type: 'uint256' },
|
|
264
|
+
{ name: 'stealthMetaAddress', type: 'bytes' },
|
|
265
|
+
],
|
|
266
|
+
outputs: [],
|
|
267
|
+
stateMutability: 'nonpayable',
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
type: 'function',
|
|
271
|
+
name: 'stealthMetaAddressOf',
|
|
272
|
+
inputs: [
|
|
273
|
+
{ name: 'registrant', type: 'address' },
|
|
274
|
+
{ name: 'schemeId', type: 'uint256' },
|
|
275
|
+
],
|
|
276
|
+
outputs: [{ name: '', type: 'bytes' }],
|
|
277
|
+
stateMutability: 'view',
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
type: 'function',
|
|
281
|
+
name: 'incrementNonce',
|
|
282
|
+
inputs: [{ name: 'schemeId', type: 'uint256' }],
|
|
283
|
+
outputs: [],
|
|
284
|
+
stateMutability: 'nonpayable',
|
|
285
|
+
},
|
|
286
|
+
];
|
|
287
|
+
//# sourceMappingURL=abis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abis.js","sourceRoot":"","sources":["../../src/abis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
/** Canonical ERC-5564 stealth announcement contract — same address every EVM chain (CREATE2). */
|
|
3
|
+
export declare const ERC5564_ANNOUNCER: "0x55649E01B5Df198D18D95b5cc5051630cfD45564";
|
|
4
|
+
/** Canonical ERC-6538 stealth meta-address registry — same address every EVM chain (CREATE2). */
|
|
5
|
+
export declare const ERC6538_REGISTRY: "0x6538E6bf4B0eBd30A8Ea093027Ac2422ce5d6538";
|
|
6
|
+
/**
|
|
7
|
+
* Canonical USDC (Circle-issued) contract addresses, keyed by chain id.
|
|
8
|
+
*
|
|
9
|
+
* Per-chain because USDC is NOT CREATE2-deterministic across chains — Circle
|
|
10
|
+
* deploys a native contract per network with a different address each time.
|
|
11
|
+
*
|
|
12
|
+
* Coverage (P6 v1):
|
|
13
|
+
* - 8453 Base mainnet — Circle-native USDC
|
|
14
|
+
* - 84532 Base Sepolia — Circle-native testnet USDC
|
|
15
|
+
*
|
|
16
|
+
* Both addresses verified against Circle's official deployment registry on
|
|
17
|
+
* 2026-06-03. Adding new chains: confirm via https://developers.circle.com/
|
|
18
|
+
* stablecoin/docs/usdc-on-other-chains before extending this map.
|
|
19
|
+
*
|
|
20
|
+
* Both contracts implement EIP-3009 `transferWithAuthorization` (the signing
|
|
21
|
+
* primitive x402's `exact` scheme depends on) AND EIP-2612 `permit` (the
|
|
22
|
+
* signing primitive `ShroudFiRelayer` uses). Either path drives sweeps for
|
|
23
|
+
* USDC stealth payments — see `@shroud-fi/payments` for the dispatch logic.
|
|
24
|
+
*/
|
|
25
|
+
export declare const USDC_BY_CHAIN: Readonly<Record<number, Address>>;
|
|
26
|
+
/**
|
|
27
|
+
* EIP-712 domain metadata for USDC per chain. Required for client agents
|
|
28
|
+
* signing `TransferWithAuthorization` against the correct domain separator.
|
|
29
|
+
*
|
|
30
|
+
* USDC on Base mainnet + Sepolia both use the same domain shape (Circle's
|
|
31
|
+
* standard issuance contract). Other chains MAY differ — re-verify before
|
|
32
|
+
* extending.
|
|
33
|
+
*/
|
|
34
|
+
export declare const USDC_EIP712_DOMAIN_BY_CHAIN: Readonly<Record<number, {
|
|
35
|
+
readonly name: string;
|
|
36
|
+
readonly version: string;
|
|
37
|
+
}>>;
|
|
38
|
+
//# sourceMappingURL=addresses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../src/addresses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,EAAG,4CAAqD,CAAC;AAEvF,iGAAiG;AACjG,eAAO,MAAM,gBAAgB,EAAG,4CAAqD,CAAC;AAEtF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGjD,CAAC;AAEZ;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAChD,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAI1D,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.USDC_EIP712_DOMAIN_BY_CHAIN = exports.USDC_BY_CHAIN = exports.ERC6538_REGISTRY = exports.ERC5564_ANNOUNCER = void 0;
|
|
4
|
+
/** Canonical ERC-5564 stealth announcement contract — same address every EVM chain (CREATE2). */
|
|
5
|
+
exports.ERC5564_ANNOUNCER = '0x55649E01B5Df198D18D95b5cc5051630cfD45564';
|
|
6
|
+
/** Canonical ERC-6538 stealth meta-address registry — same address every EVM chain (CREATE2). */
|
|
7
|
+
exports.ERC6538_REGISTRY = '0x6538E6bf4B0eBd30A8Ea093027Ac2422ce5d6538';
|
|
8
|
+
/**
|
|
9
|
+
* Canonical USDC (Circle-issued) contract addresses, keyed by chain id.
|
|
10
|
+
*
|
|
11
|
+
* Per-chain because USDC is NOT CREATE2-deterministic across chains — Circle
|
|
12
|
+
* deploys a native contract per network with a different address each time.
|
|
13
|
+
*
|
|
14
|
+
* Coverage (P6 v1):
|
|
15
|
+
* - 8453 Base mainnet — Circle-native USDC
|
|
16
|
+
* - 84532 Base Sepolia — Circle-native testnet USDC
|
|
17
|
+
*
|
|
18
|
+
* Both addresses verified against Circle's official deployment registry on
|
|
19
|
+
* 2026-06-03. Adding new chains: confirm via https://developers.circle.com/
|
|
20
|
+
* stablecoin/docs/usdc-on-other-chains before extending this map.
|
|
21
|
+
*
|
|
22
|
+
* Both contracts implement EIP-3009 `transferWithAuthorization` (the signing
|
|
23
|
+
* primitive x402's `exact` scheme depends on) AND EIP-2612 `permit` (the
|
|
24
|
+
* signing primitive `ShroudFiRelayer` uses). Either path drives sweeps for
|
|
25
|
+
* USDC stealth payments — see `@shroud-fi/payments` for the dispatch logic.
|
|
26
|
+
*/
|
|
27
|
+
exports.USDC_BY_CHAIN = Object.freeze({
|
|
28
|
+
8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
29
|
+
84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* EIP-712 domain metadata for USDC per chain. Required for client agents
|
|
33
|
+
* signing `TransferWithAuthorization` against the correct domain separator.
|
|
34
|
+
*
|
|
35
|
+
* USDC on Base mainnet + Sepolia both use the same domain shape (Circle's
|
|
36
|
+
* standard issuance contract). Other chains MAY differ — re-verify before
|
|
37
|
+
* extending.
|
|
38
|
+
*/
|
|
39
|
+
exports.USDC_EIP712_DOMAIN_BY_CHAIN = Object.freeze({
|
|
40
|
+
8453: Object.freeze({ name: 'USD Coin', version: '2' }),
|
|
41
|
+
84532: Object.freeze({ name: 'USDC', version: '2' }),
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=addresses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../src/addresses.ts"],"names":[],"mappings":";;;AAEA,iGAAiG;AACpF,QAAA,iBAAiB,GAAG,4CAAqD,CAAC;AAEvF,iGAAiG;AACpF,QAAA,gBAAgB,GAAG,4CAAqD,CAAC;AAEtF;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,aAAa,GAAsC,MAAM,CAAC,MAAM,CAAC;IAC5E,IAAI,EAAE,4CAA4C;IAClD,KAAK,EAAE,4CAA4C;CAC3C,CAAC,CAAC;AAEZ;;;;;;;GAOG;AACU,QAAA,2BAA2B,GAEpC,MAAM,CAAC,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;CAC5C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.baseSepolia = exports.base = void 0;
|
|
4
|
+
var chains_1 = require("viem/chains");
|
|
5
|
+
Object.defineProperty(exports, "base", { enumerable: true, get: function () { return chains_1.base; } });
|
|
6
|
+
Object.defineProperty(exports, "baseSepolia", { enumerable: true, get: function () { return chains_1.baseSepolia; } });
|
|
7
|
+
//# sourceMappingURL=chains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../src/chains.ts"],"names":[],"mappings":";;;AAAA,sCAAgD;AAAvC,8FAAA,IAAI,OAAA;AAAE,qGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAalF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTransport = createTransport;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const chains_1 = require("viem/chains");
|
|
6
|
+
const accounts_1 = require("viem/accounts");
|
|
7
|
+
function createTransport(config) {
|
|
8
|
+
const chain = config.chain === 'base' ? chains_1.base : chains_1.baseSepolia;
|
|
9
|
+
const transport = config.rpcUrl ? (0, viem_1.http)(config.rpcUrl) : (0, viem_1.http)();
|
|
10
|
+
const publicClient = (0, viem_1.createPublicClient)({ chain, transport });
|
|
11
|
+
let walletClient;
|
|
12
|
+
if (config.privateKey) {
|
|
13
|
+
const account = (0, accounts_1.privateKeyToAccount)(config.privateKey);
|
|
14
|
+
walletClient = (0, viem_1.createWalletClient)({ account, chain, transport });
|
|
15
|
+
}
|
|
16
|
+
return { publicClient, walletClient, chain };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/create.ts"],"names":[],"mappings":";;AAKA,0CAaC;AAlBD,+BAAgF;AAChF,wCAAgD;AAChD,4CAAoD;AAGpD,SAAgB,eAAe,CAAC,MAA+B;IAC7D,MAAM,KAAK,GAAU,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,aAAI,CAAC,CAAC,CAAC,oBAAW,CAAC;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,GAAE,CAAC;IAE/D,MAAM,YAAY,GAAG,IAAA,yBAAkB,EAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9D,IAAI,YAA+C,CAAC;IACpD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,IAAA,8BAAmB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,YAAY,GAAG,IAAA,yBAAkB,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAuB,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
import type { DeploymentManifest } from './deployments.js';
|
|
3
|
+
export declare function getShroudFiStealth(chainId: number): Address;
|
|
4
|
+
export declare function getShroudFiRegistrar(chainId: number): Address;
|
|
5
|
+
/**
|
|
6
|
+
* MockERC20 lookup. Returns undefined for chains that don't carry one
|
|
7
|
+
* (e.g. mainnet — mocks are testnet-only).
|
|
8
|
+
*/
|
|
9
|
+
export declare function getMockERC20(chainId: number): Address | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* ShroudFiRelayer lookup. Returns undefined for chains where the relayer
|
|
12
|
+
* contract has not yet been deployed (e.g. before Wave 3 populates the manifest).
|
|
13
|
+
*/
|
|
14
|
+
export declare function getRelayer(chainId: number): Address | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* ShroudFiEthRelayer (P5.1) lookup. Returns undefined for chains where the
|
|
17
|
+
* EIP-7702 ETH gasless sweep contract has not yet been deployed.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getEthRelayer(chainId: number): Address | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* MockERC20Permit lookup — the permit-capable ERC-20 mock used by the demo
|
|
22
|
+
* for both direct sweep AND gasless sweep paths. The original MockERC20
|
|
23
|
+
* (non-permit) remains in the manifest as a backward-compatibility entry
|
|
24
|
+
* but new code paths should prefer this one.
|
|
25
|
+
*
|
|
26
|
+
* Returns undefined for chains that don't carry a deployment (mainnet etc.).
|
|
27
|
+
*/
|
|
28
|
+
export declare function getMockERC20Permit(chainId: number): Address | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Canonical USDC (Circle-issued) address lookup. Returns undefined for any
|
|
31
|
+
* chain not in the supported allowlist — callers should treat undefined as
|
|
32
|
+
* "USDC not available on this chain" and surface a clear error, NOT fall back
|
|
33
|
+
* to a zero address or a non-Circle token.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getUSDC(chainId: number): Address | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* EIP-712 domain metadata (`name`, `version`) for USDC on a given chain.
|
|
38
|
+
* Required to sign `TransferWithAuthorization` for x402's `exact` scheme and
|
|
39
|
+
* for `ShroudFiRelayer` ERC-20 permit-based gasless sweeps.
|
|
40
|
+
*
|
|
41
|
+
* Returns undefined when USDC is not supported on the chain.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getUSDCDomain(chainId: number): {
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly version: string;
|
|
46
|
+
} | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Boolean check — is USDC available (and supported by this SDK) on this chain?
|
|
49
|
+
*/
|
|
50
|
+
export declare function hasUSDC(chainId: number): boolean;
|
|
51
|
+
export declare function getDeployment(chainId: number): DeploymentManifest;
|
|
52
|
+
export declare function hasDeployment(chainId: number): boolean;
|
|
53
|
+
export declare function listDeployedChains(): readonly number[];
|
|
54
|
+
//# sourceMappingURL=deployments-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments-helpers.d.ts","sourceRoot":"","sources":["../../src/deployments-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAUpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAI3D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEjE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEjE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAIjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEtD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getShroudFiStealth = getShroudFiStealth;
|
|
4
|
+
exports.getShroudFiRegistrar = getShroudFiRegistrar;
|
|
5
|
+
exports.getMockERC20 = getMockERC20;
|
|
6
|
+
exports.getRelayer = getRelayer;
|
|
7
|
+
exports.getEthRelayer = getEthRelayer;
|
|
8
|
+
exports.getMockERC20Permit = getMockERC20Permit;
|
|
9
|
+
exports.getUSDC = getUSDC;
|
|
10
|
+
exports.getUSDCDomain = getUSDCDomain;
|
|
11
|
+
exports.hasUSDC = hasUSDC;
|
|
12
|
+
exports.getDeployment = getDeployment;
|
|
13
|
+
exports.hasDeployment = hasDeployment;
|
|
14
|
+
exports.listDeployedChains = listDeployedChains;
|
|
15
|
+
const deployments_js_1 = require("./deployments.js");
|
|
16
|
+
const addresses_js_1 = require("./addresses.js");
|
|
17
|
+
const errors_js_1 = require("./errors.js");
|
|
18
|
+
function getShroudFiStealth(chainId) {
|
|
19
|
+
const a = deployments_js_1.SHROUDFI_STEALTH_BY_CHAIN[chainId];
|
|
20
|
+
if (!a)
|
|
21
|
+
throw new errors_js_1.UnknownChainError(chainId);
|
|
22
|
+
return a;
|
|
23
|
+
}
|
|
24
|
+
function getShroudFiRegistrar(chainId) {
|
|
25
|
+
const a = deployments_js_1.SHROUDFI_REGISTRAR_BY_CHAIN[chainId];
|
|
26
|
+
if (!a)
|
|
27
|
+
throw new errors_js_1.UnknownChainError(chainId);
|
|
28
|
+
return a;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* MockERC20 lookup. Returns undefined for chains that don't carry one
|
|
32
|
+
* (e.g. mainnet — mocks are testnet-only).
|
|
33
|
+
*/
|
|
34
|
+
function getMockERC20(chainId) {
|
|
35
|
+
return deployments_js_1.MOCK_ERC20_BY_CHAIN[chainId];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* ShroudFiRelayer lookup. Returns undefined for chains where the relayer
|
|
39
|
+
* contract has not yet been deployed (e.g. before Wave 3 populates the manifest).
|
|
40
|
+
*/
|
|
41
|
+
function getRelayer(chainId) {
|
|
42
|
+
return deployments_js_1.SHROUDFI_RELAYER_BY_CHAIN[chainId];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* ShroudFiEthRelayer (P5.1) lookup. Returns undefined for chains where the
|
|
46
|
+
* EIP-7702 ETH gasless sweep contract has not yet been deployed.
|
|
47
|
+
*/
|
|
48
|
+
function getEthRelayer(chainId) {
|
|
49
|
+
return deployments_js_1.SHROUDFI_ETH_RELAYER_BY_CHAIN[chainId];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* MockERC20Permit lookup — the permit-capable ERC-20 mock used by the demo
|
|
53
|
+
* for both direct sweep AND gasless sweep paths. The original MockERC20
|
|
54
|
+
* (non-permit) remains in the manifest as a backward-compatibility entry
|
|
55
|
+
* but new code paths should prefer this one.
|
|
56
|
+
*
|
|
57
|
+
* Returns undefined for chains that don't carry a deployment (mainnet etc.).
|
|
58
|
+
*/
|
|
59
|
+
function getMockERC20Permit(chainId) {
|
|
60
|
+
return deployments_js_1.MOCK_ERC20_PERMIT_BY_CHAIN[chainId];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Canonical USDC (Circle-issued) address lookup. Returns undefined for any
|
|
64
|
+
* chain not in the supported allowlist — callers should treat undefined as
|
|
65
|
+
* "USDC not available on this chain" and surface a clear error, NOT fall back
|
|
66
|
+
* to a zero address or a non-Circle token.
|
|
67
|
+
*/
|
|
68
|
+
function getUSDC(chainId) {
|
|
69
|
+
return addresses_js_1.USDC_BY_CHAIN[chainId];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* EIP-712 domain metadata (`name`, `version`) for USDC on a given chain.
|
|
73
|
+
* Required to sign `TransferWithAuthorization` for x402's `exact` scheme and
|
|
74
|
+
* for `ShroudFiRelayer` ERC-20 permit-based gasless sweeps.
|
|
75
|
+
*
|
|
76
|
+
* Returns undefined when USDC is not supported on the chain.
|
|
77
|
+
*/
|
|
78
|
+
function getUSDCDomain(chainId) {
|
|
79
|
+
return addresses_js_1.USDC_EIP712_DOMAIN_BY_CHAIN[chainId];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Boolean check — is USDC available (and supported by this SDK) on this chain?
|
|
83
|
+
*/
|
|
84
|
+
function hasUSDC(chainId) {
|
|
85
|
+
return chainId in addresses_js_1.USDC_BY_CHAIN;
|
|
86
|
+
}
|
|
87
|
+
function getDeployment(chainId) {
|
|
88
|
+
const m = deployments_js_1.DEPLOYMENTS[chainId];
|
|
89
|
+
if (!m)
|
|
90
|
+
throw new errors_js_1.UnknownChainError(chainId);
|
|
91
|
+
return m;
|
|
92
|
+
}
|
|
93
|
+
function hasDeployment(chainId) {
|
|
94
|
+
return Boolean(deployments_js_1.DEPLOYMENTS[chainId]);
|
|
95
|
+
}
|
|
96
|
+
function listDeployedChains() {
|
|
97
|
+
return Object.keys(deployments_js_1.DEPLOYMENTS).map(Number);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=deployments-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments-helpers.js","sourceRoot":"","sources":["../../src/deployments-helpers.ts"],"names":[],"mappings":";;AAcA,gDAIC;AAED,oDAIC;AAMD,oCAEC;AAMD,gCAEC;AAMD,sCAEC;AAUD,gDAEC;AAQD,0BAEC;AASD,sCAIC;AAKD,0BAEC;AAED,sCAIC;AAED,sCAEC;AAED,gDAEC;AAvGD,qDAQ0B;AAE1B,iDAA4E;AAC5E,2CAAgD;AAEhD,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,CAAC,GAAG,0CAAyB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,6BAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAe;IAClD,MAAM,CAAC,GAAG,4CAA2B,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,6BAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,OAAe;IAC1C,OAAO,oCAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,OAAO,0CAAyB,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,OAAe;IAC3C,OAAO,8CAA6B,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO,2CAA0B,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,OAAe;IACrC,OAAO,4BAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,OAAe;IAEf,OAAO,0CAA2B,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,OAAe;IACrC,OAAO,OAAO,IAAI,4BAAa,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa,CAAC,OAAe;IAC3C,MAAM,CAAC,GAAG,4BAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,6BAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,aAAa,CAAC,OAAe;IAC3C,OAAO,OAAO,CAAC,4BAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,4BAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem';
|
|
2
|
+
export interface DeploymentManifest {
|
|
3
|
+
readonly chainId: number;
|
|
4
|
+
readonly chainName: string;
|
|
5
|
+
readonly deployedAt: string;
|
|
6
|
+
readonly deployer: Address;
|
|
7
|
+
readonly shroudfiStealth: Address;
|
|
8
|
+
readonly shroudfiRegistrar: Address;
|
|
9
|
+
readonly stealthSalt: Hex;
|
|
10
|
+
readonly registrarSalt: Hex;
|
|
11
|
+
readonly announcer: Address;
|
|
12
|
+
readonly registry: Address;
|
|
13
|
+
readonly block: number;
|
|
14
|
+
readonly blockscoutUrl?: string;
|
|
15
|
+
readonly mockERC20?: Address;
|
|
16
|
+
readonly mockERC20Block?: number;
|
|
17
|
+
readonly shroudfiRelayer?: Address;
|
|
18
|
+
readonly relayerTreasury?: Address;
|
|
19
|
+
readonly relayerForwarder?: Address;
|
|
20
|
+
readonly relayerBlock?: number;
|
|
21
|
+
readonly mockERC20Permit?: Address;
|
|
22
|
+
readonly mockERC20PermitBlock?: number;
|
|
23
|
+
readonly shroudfiEthRelayer?: Address;
|
|
24
|
+
readonly shroudfiEthRelayerBlock?: number;
|
|
25
|
+
readonly ethRelayerOperator?: Address;
|
|
26
|
+
readonly isExample?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare const DEPLOYMENTS: Readonly<Record<number, DeploymentManifest>>;
|
|
29
|
+
export declare const SHROUDFI_STEALTH_BY_CHAIN: Readonly<Record<number, Address>>;
|
|
30
|
+
export declare const SHROUDFI_REGISTRAR_BY_CHAIN: Readonly<Record<number, Address>>;
|
|
31
|
+
export declare const MOCK_ERC20_BY_CHAIN: Readonly<Record<number, Address>>;
|
|
32
|
+
export declare const SHROUDFI_RELAYER_BY_CHAIN: Readonly<Record<number, Address>>;
|
|
33
|
+
export declare const MOCK_ERC20_PERMIT_BY_CHAIN: Readonly<Record<number, Address>>;
|
|
34
|
+
export declare const SHROUDFI_ETH_RELAYER_BY_CHAIN: Readonly<Record<number, Address>>;
|
|
35
|
+
//# sourceMappingURL=deployments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/deployments.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CA+C1D,CAAC;AAEZ,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG7D,CAAC;AAEZ,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG/D,CAAC;AAEZ,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEvD,CAAC;AAEZ,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG7D,CAAC;AAEZ,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE9D,CAAC;AAEZ,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGjE,CAAC"}
|