@0xsequence/relayer 2.3.35 → 3.0.0-beta.2
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/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +3862 -0
- package/LICENSE +0 -17
- package/README.md +1 -2
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/preconditions/codec.d.ts +12 -0
- package/dist/preconditions/codec.d.ts.map +1 -0
- package/dist/preconditions/codec.js +125 -0
- package/dist/preconditions/index.d.ts +4 -0
- package/dist/preconditions/index.d.ts.map +1 -0
- package/dist/preconditions/index.js +3 -0
- package/dist/preconditions/selectors.d.ts +7 -0
- package/dist/preconditions/selectors.d.ts.map +1 -0
- package/dist/preconditions/selectors.js +27 -0
- package/dist/preconditions/types.d.ts +70 -0
- package/dist/preconditions/types.d.ts.map +1 -0
- package/dist/preconditions/types.js +203 -0
- package/dist/relayer/index.d.ts +45 -0
- package/dist/relayer/index.d.ts.map +1 -0
- package/dist/relayer/index.js +3 -0
- package/dist/relayer/relayer.d.ts +26 -0
- package/dist/relayer/relayer.d.ts.map +1 -0
- package/dist/relayer/relayer.js +7 -0
- package/dist/relayer/rpc-relayer/index.d.ts +38 -0
- package/dist/relayer/rpc-relayer/index.d.ts.map +1 -0
- package/dist/relayer/rpc-relayer/index.js +375 -0
- package/dist/{declarations/src → relayer}/rpc-relayer/relayer.gen.d.ts +218 -178
- package/dist/relayer/rpc-relayer/relayer.gen.d.ts.map +1 -0
- package/dist/relayer/rpc-relayer/relayer.gen.js +1246 -0
- package/dist/relayer/standard/abi.d.ts +73 -0
- package/dist/relayer/standard/abi.d.ts.map +1 -0
- package/dist/relayer/standard/abi.js +10 -0
- package/dist/relayer/standard/eip6963.d.ts +31 -0
- package/dist/relayer/standard/eip6963.d.ts.map +1 -0
- package/dist/relayer/standard/eip6963.js +51 -0
- package/dist/relayer/standard/index.d.ts +5 -0
- package/dist/relayer/standard/index.d.ts.map +1 -0
- package/dist/relayer/standard/index.js +4 -0
- package/dist/relayer/standard/local.d.ts +60 -0
- package/dist/relayer/standard/local.d.ts.map +1 -0
- package/dist/relayer/standard/local.js +285 -0
- package/dist/relayer/standard/pk-relayer.d.ts +28 -0
- package/dist/relayer/standard/pk-relayer.d.ts.map +1 -0
- package/dist/relayer/standard/pk-relayer.js +112 -0
- package/dist/relayer/standard/sequence.d.ts +27 -0
- package/dist/relayer/standard/sequence.d.ts.map +1 -0
- package/dist/relayer/standard/sequence.js +84 -0
- package/package.json +28 -25
- package/src/index.ts +3 -111
- package/src/preconditions/codec.ts +190 -0
- package/src/preconditions/index.ts +3 -0
- package/src/preconditions/selectors.ts +38 -0
- package/src/preconditions/types.ts +201 -0
- package/src/relayer/index.ts +60 -0
- package/src/relayer/relayer.ts +37 -0
- package/src/relayer/rpc-relayer/index.ts +449 -0
- package/src/relayer/rpc-relayer/relayer.gen.ts +2268 -0
- package/src/relayer/standard/abi.ts +13 -0
- package/src/relayer/standard/eip6963.ts +74 -0
- package/src/relayer/standard/index.ts +4 -0
- package/src/relayer/standard/local.ts +353 -0
- package/src/relayer/standard/pk-relayer.ts +138 -0
- package/src/relayer/standard/sequence.ts +110 -0
- package/test/preconditions/codec.test.ts +531 -0
- package/test/preconditions/preconditions.test.ts +283 -0
- package/test/preconditions/selectors.test.ts +415 -0
- package/test/preconditions/types.test.ts +443 -0
- package/test/relayer/relayer.test.ts +355 -0
- package/tsconfig.json +10 -0
- package/dist/0xsequence-relayer.cjs.d.ts +0 -2
- package/dist/0xsequence-relayer.cjs.dev.js +0 -1626
- package/dist/0xsequence-relayer.cjs.js +0 -7
- package/dist/0xsequence-relayer.cjs.prod.js +0 -1626
- package/dist/0xsequence-relayer.esm.js +0 -1613
- package/dist/declarations/src/index.d.ts +0 -42
- package/dist/declarations/src/local-relayer.d.ts +0 -35
- package/dist/declarations/src/provider-relayer.d.ts +0 -47
- package/dist/declarations/src/rpc-relayer/index.d.ts +0 -72
- package/src/local-relayer.ts +0 -125
- package/src/provider-relayer.ts +0 -284
- package/src/rpc-relayer/index.ts +0 -380
- package/src/rpc-relayer/relayer.gen.ts +0 -1900
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { describe, expect, it, vi, beforeEach } from 'vitest'
|
|
2
|
+
import { Address, Hex } from 'ox'
|
|
3
|
+
import { Network, Payload } from '@0xsequence/wallet-primitives'
|
|
4
|
+
import { Relayer, RelayerGen } from '@0xsequence/relayer'
|
|
5
|
+
|
|
6
|
+
// Test addresses and data
|
|
7
|
+
const TEST_WALLET_ADDRESS = Address.from('0x1234567890123456789012345678901234567890')
|
|
8
|
+
const TEST_TO_ADDRESS = Address.from('0xabcdefabcdefabcdefabcdefabcdefabcdefabcd')
|
|
9
|
+
const TEST_DATA = Hex.from('0x12345678')
|
|
10
|
+
const TEST_CHAIN_ID = Network.ChainId.MAINNET
|
|
11
|
+
const TEST_OP_HASH = Hex.from('0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef')
|
|
12
|
+
|
|
13
|
+
describe('Relayer', () => {
|
|
14
|
+
describe('Relayer.isRelayer type guard', () => {
|
|
15
|
+
it('should return true for valid relayer objects', () => {
|
|
16
|
+
const mockRelayer: Relayer.Relayer = {
|
|
17
|
+
kind: 'relayer',
|
|
18
|
+
type: 'test',
|
|
19
|
+
id: 'test-relayer',
|
|
20
|
+
isAvailable: vi.fn(),
|
|
21
|
+
feeTokens: vi.fn(),
|
|
22
|
+
feeOptions: vi.fn(),
|
|
23
|
+
relay: vi.fn(),
|
|
24
|
+
status: vi.fn(),
|
|
25
|
+
checkPrecondition: vi.fn(),
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
expect(Relayer.isRelayer(mockRelayer)).toBe(true)
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('should return false for objects missing required methods', () => {
|
|
32
|
+
// Missing isAvailable
|
|
33
|
+
const missing1 = {
|
|
34
|
+
kind: 'relayer' as const,
|
|
35
|
+
type: 'test',
|
|
36
|
+
id: 'test-relayer',
|
|
37
|
+
feeOptions: vi.fn(),
|
|
38
|
+
relay: vi.fn(),
|
|
39
|
+
status: vi.fn(),
|
|
40
|
+
checkPrecondition: vi.fn(),
|
|
41
|
+
}
|
|
42
|
+
expect(Relayer.isRelayer(missing1)).toBe(false)
|
|
43
|
+
|
|
44
|
+
// Missing feeOptions
|
|
45
|
+
const missing2 = {
|
|
46
|
+
kind: 'relayer' as const,
|
|
47
|
+
type: 'test',
|
|
48
|
+
id: 'test-relayer',
|
|
49
|
+
isAvailable: vi.fn(),
|
|
50
|
+
relay: vi.fn(),
|
|
51
|
+
status: vi.fn(),
|
|
52
|
+
checkPrecondition: vi.fn(),
|
|
53
|
+
}
|
|
54
|
+
expect(Relayer.isRelayer(missing2)).toBe(false)
|
|
55
|
+
|
|
56
|
+
// Missing relay
|
|
57
|
+
const missing3 = {
|
|
58
|
+
kind: 'relayer' as const,
|
|
59
|
+
type: 'test',
|
|
60
|
+
id: 'test-relayer',
|
|
61
|
+
isAvailable: vi.fn(),
|
|
62
|
+
feeOptions: vi.fn(),
|
|
63
|
+
status: vi.fn(),
|
|
64
|
+
checkPrecondition: vi.fn(),
|
|
65
|
+
}
|
|
66
|
+
expect(Relayer.isRelayer(missing3)).toBe(false)
|
|
67
|
+
|
|
68
|
+
// Missing status
|
|
69
|
+
const missing4 = {
|
|
70
|
+
kind: 'relayer' as const,
|
|
71
|
+
type: 'test',
|
|
72
|
+
id: 'test-relayer',
|
|
73
|
+
isAvailable: vi.fn(),
|
|
74
|
+
feeOptions: vi.fn(),
|
|
75
|
+
relay: vi.fn(),
|
|
76
|
+
checkPrecondition: vi.fn(),
|
|
77
|
+
}
|
|
78
|
+
expect(Relayer.isRelayer(missing4)).toBe(false)
|
|
79
|
+
|
|
80
|
+
// Missing checkPrecondition
|
|
81
|
+
const missing5 = {
|
|
82
|
+
kind: 'relayer' as const,
|
|
83
|
+
type: 'test',
|
|
84
|
+
id: 'test-relayer',
|
|
85
|
+
isAvailable: vi.fn(),
|
|
86
|
+
feeOptions: vi.fn(),
|
|
87
|
+
relay: vi.fn(),
|
|
88
|
+
status: vi.fn(),
|
|
89
|
+
}
|
|
90
|
+
expect(Relayer.isRelayer(missing5)).toBe(false)
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
it('should return false for non-objects', () => {
|
|
94
|
+
// These will throw due to the 'in' operator, so we need to test the actual behavior
|
|
95
|
+
expect(() => Relayer.isRelayer(null)).toThrow()
|
|
96
|
+
expect(() => Relayer.isRelayer(undefined)).toThrow()
|
|
97
|
+
expect(() => Relayer.isRelayer('string')).toThrow()
|
|
98
|
+
expect(() => Relayer.isRelayer(123)).toThrow()
|
|
99
|
+
expect(() => Relayer.isRelayer(true)).toThrow()
|
|
100
|
+
// Arrays and objects should not throw, but should return false
|
|
101
|
+
expect(Relayer.isRelayer([])).toBe(false)
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
it('should return false for objects with properties but wrong types', () => {
|
|
105
|
+
const wrongTypes = {
|
|
106
|
+
kind: 'relayer' as const,
|
|
107
|
+
type: 'test',
|
|
108
|
+
id: 'test-relayer',
|
|
109
|
+
isAvailable: 'not a function',
|
|
110
|
+
feeOptions: vi.fn(),
|
|
111
|
+
relay: vi.fn(),
|
|
112
|
+
status: vi.fn(),
|
|
113
|
+
checkPrecondition: vi.fn(),
|
|
114
|
+
}
|
|
115
|
+
// The current implementation only checks if properties exist, not their types
|
|
116
|
+
// So this will actually return true since all required properties exist
|
|
117
|
+
expect(Relayer.isRelayer(wrongTypes)).toBe(true)
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
describe('FeeOption interface', () => {
|
|
122
|
+
it('should accept valid fee option objects', () => {
|
|
123
|
+
const feeOption: Relayer.FeeOption = {
|
|
124
|
+
token: {
|
|
125
|
+
chainId: Network.ChainId.MAINNET,
|
|
126
|
+
name: 'Ethereum',
|
|
127
|
+
symbol: 'ETH',
|
|
128
|
+
decimals: 18,
|
|
129
|
+
logoURL: 'https://example.com/eth.png',
|
|
130
|
+
type: 'NATIVE' as RelayerGen.FeeTokenType,
|
|
131
|
+
contractAddress: undefined,
|
|
132
|
+
},
|
|
133
|
+
to: TEST_TO_ADDRESS,
|
|
134
|
+
value: '1000000000000000000',
|
|
135
|
+
gasLimit: 21000,
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
expect(feeOption.token).toBeDefined()
|
|
139
|
+
expect(feeOption.to).toBe(TEST_TO_ADDRESS)
|
|
140
|
+
expect(feeOption.value).toBe('1000000000000000000')
|
|
141
|
+
expect(feeOption.gasLimit).toBe(21000)
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
describe('FeeQuote interface', () => {
|
|
146
|
+
it('should accept valid fee quote objects', () => {
|
|
147
|
+
const feeQuote: Relayer.FeeQuote = {
|
|
148
|
+
_tag: 'FeeQuote',
|
|
149
|
+
_quote: { someQuoteData: 'value' },
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
expect(feeQuote._tag).toBe('FeeQuote')
|
|
153
|
+
expect(feeQuote._quote).toBeDefined()
|
|
154
|
+
})
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
describe('OperationStatus types', () => {
|
|
158
|
+
it('should accept OperationUnknownStatus', () => {
|
|
159
|
+
const status: Relayer.OperationUnknownStatus = {
|
|
160
|
+
status: 'unknown',
|
|
161
|
+
reason: 'Transaction not found',
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
expect(status.status).toBe('unknown')
|
|
165
|
+
expect(status.reason).toBe('Transaction not found')
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
it('should accept OperationQueuedStatus', () => {
|
|
169
|
+
const status: Relayer.OperationQueuedStatus = {
|
|
170
|
+
status: 'queued',
|
|
171
|
+
reason: 'Transaction queued for processing',
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
expect(status.status).toBe('queued')
|
|
175
|
+
expect(status.reason).toBeDefined()
|
|
176
|
+
})
|
|
177
|
+
|
|
178
|
+
it('should accept OperationPendingStatus', () => {
|
|
179
|
+
const status: Relayer.OperationPendingStatus = {
|
|
180
|
+
status: 'pending',
|
|
181
|
+
reason: 'Transaction pending confirmation',
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
expect(status.status).toBe('pending')
|
|
185
|
+
expect(status.reason).toBeDefined()
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
it('should accept OperationPendingPreconditionStatus', () => {
|
|
189
|
+
const status: Relayer.OperationPendingPreconditionStatus = {
|
|
190
|
+
status: 'pending-precondition',
|
|
191
|
+
reason: 'Waiting for preconditions to be met',
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
expect(status.status).toBe('pending-precondition')
|
|
195
|
+
expect(status.reason).toBeDefined()
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
it('should accept OperationConfirmedStatus', () => {
|
|
199
|
+
const status: Relayer.OperationConfirmedStatus = {
|
|
200
|
+
status: 'confirmed',
|
|
201
|
+
transactionHash: TEST_OP_HASH,
|
|
202
|
+
data: {
|
|
203
|
+
receipt: {
|
|
204
|
+
id: 'receipt123',
|
|
205
|
+
status: 'success',
|
|
206
|
+
index: 0,
|
|
207
|
+
logs: [],
|
|
208
|
+
receipts: [],
|
|
209
|
+
blockNumber: '12345',
|
|
210
|
+
txnHash: 'hash123',
|
|
211
|
+
txnReceipt: 'receipt_data',
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
expect(status.status).toBe('confirmed')
|
|
217
|
+
expect(status.transactionHash).toBe(TEST_OP_HASH)
|
|
218
|
+
expect(status.data).toBeDefined()
|
|
219
|
+
})
|
|
220
|
+
|
|
221
|
+
it('should accept OperationFailedStatus', () => {
|
|
222
|
+
const status: Relayer.OperationFailedStatus = {
|
|
223
|
+
status: 'failed',
|
|
224
|
+
transactionHash: TEST_OP_HASH,
|
|
225
|
+
reason: 'Transaction reverted',
|
|
226
|
+
data: {
|
|
227
|
+
receipt: {
|
|
228
|
+
id: 'receipt456',
|
|
229
|
+
status: 'failed',
|
|
230
|
+
index: 0,
|
|
231
|
+
logs: [],
|
|
232
|
+
receipts: [],
|
|
233
|
+
blockNumber: '12345',
|
|
234
|
+
txnHash: 'hash123',
|
|
235
|
+
txnReceipt: 'receipt_data',
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
expect(status.status).toBe('failed')
|
|
241
|
+
expect(status.transactionHash).toBe(TEST_OP_HASH)
|
|
242
|
+
expect(status.reason).toBe('Transaction reverted')
|
|
243
|
+
expect(status.data).toBeDefined()
|
|
244
|
+
})
|
|
245
|
+
|
|
246
|
+
it('should handle OperationStatus union type', () => {
|
|
247
|
+
const statuses: Relayer.OperationStatus[] = [
|
|
248
|
+
{ status: 'unknown' },
|
|
249
|
+
{ status: 'queued' },
|
|
250
|
+
{ status: 'pending' },
|
|
251
|
+
{ status: 'pending-precondition' },
|
|
252
|
+
{ status: 'confirmed', transactionHash: TEST_OP_HASH },
|
|
253
|
+
{ status: 'failed', reason: 'Error occurred' },
|
|
254
|
+
]
|
|
255
|
+
|
|
256
|
+
statuses.forEach((status) => {
|
|
257
|
+
expect(['unknown', 'queued', 'pending', 'pending-precondition', 'confirmed', 'failed']).toContain(status.status)
|
|
258
|
+
})
|
|
259
|
+
})
|
|
260
|
+
})
|
|
261
|
+
|
|
262
|
+
describe('Relayer interface contract', () => {
|
|
263
|
+
let mockRelayer: Relayer.Relayer
|
|
264
|
+
|
|
265
|
+
beforeEach(() => {
|
|
266
|
+
mockRelayer = {
|
|
267
|
+
kind: 'relayer',
|
|
268
|
+
type: 'mock',
|
|
269
|
+
id: 'mock-relayer',
|
|
270
|
+
isAvailable: vi.fn(),
|
|
271
|
+
feeTokens: vi.fn(),
|
|
272
|
+
feeOptions: vi.fn(),
|
|
273
|
+
relay: vi.fn(),
|
|
274
|
+
status: vi.fn(),
|
|
275
|
+
checkPrecondition: vi.fn(),
|
|
276
|
+
}
|
|
277
|
+
})
|
|
278
|
+
|
|
279
|
+
it('should have required properties', () => {
|
|
280
|
+
expect(mockRelayer.kind).toBe('relayer')
|
|
281
|
+
expect(mockRelayer.type).toBe('mock')
|
|
282
|
+
expect(mockRelayer.id).toBe('mock-relayer')
|
|
283
|
+
})
|
|
284
|
+
|
|
285
|
+
it('should have required methods with correct signatures', () => {
|
|
286
|
+
expect(typeof mockRelayer.isAvailable).toBe('function')
|
|
287
|
+
expect(typeof mockRelayer.feeOptions).toBe('function')
|
|
288
|
+
expect(typeof mockRelayer.relay).toBe('function')
|
|
289
|
+
expect(typeof mockRelayer.status).toBe('function')
|
|
290
|
+
expect(typeof mockRelayer.checkPrecondition).toBe('function')
|
|
291
|
+
})
|
|
292
|
+
|
|
293
|
+
it('should support typical relayer workflow methods', async () => {
|
|
294
|
+
// Mock the methods to return expected types
|
|
295
|
+
vi.mocked(mockRelayer.isAvailable).mockResolvedValue(true)
|
|
296
|
+
vi.mocked(mockRelayer.feeOptions).mockResolvedValue({
|
|
297
|
+
options: [],
|
|
298
|
+
quote: undefined,
|
|
299
|
+
})
|
|
300
|
+
vi.mocked(mockRelayer.relay).mockResolvedValue({
|
|
301
|
+
opHash: TEST_OP_HASH,
|
|
302
|
+
})
|
|
303
|
+
vi.mocked(mockRelayer.status).mockResolvedValue({
|
|
304
|
+
status: 'confirmed',
|
|
305
|
+
transactionHash: TEST_OP_HASH,
|
|
306
|
+
})
|
|
307
|
+
vi.mocked(mockRelayer.checkPrecondition).mockResolvedValue(true)
|
|
308
|
+
|
|
309
|
+
// Test method calls
|
|
310
|
+
const isAvailable = await mockRelayer.isAvailable(TEST_WALLET_ADDRESS, TEST_CHAIN_ID)
|
|
311
|
+
expect(isAvailable).toBe(true)
|
|
312
|
+
|
|
313
|
+
const feeOptions = await mockRelayer.feeOptions(TEST_WALLET_ADDRESS, TEST_CHAIN_ID, [])
|
|
314
|
+
expect(feeOptions.options).toEqual([])
|
|
315
|
+
|
|
316
|
+
const relayResult = await mockRelayer.relay(TEST_TO_ADDRESS, TEST_DATA, TEST_CHAIN_ID)
|
|
317
|
+
expect(relayResult.opHash).toBe(TEST_OP_HASH)
|
|
318
|
+
|
|
319
|
+
const statusResult = await mockRelayer.status(TEST_OP_HASH, TEST_CHAIN_ID)
|
|
320
|
+
expect(statusResult.status).toBe('confirmed')
|
|
321
|
+
|
|
322
|
+
const preconditionResult = await mockRelayer.checkPrecondition({} as any)
|
|
323
|
+
expect(preconditionResult).toBe(true)
|
|
324
|
+
})
|
|
325
|
+
})
|
|
326
|
+
|
|
327
|
+
describe('Type compatibility', () => {
|
|
328
|
+
it('should work with Address and Hex types from ox', () => {
|
|
329
|
+
// Test that the interfaces work correctly with ox types
|
|
330
|
+
const address = Address.from('0x1234567890123456789012345678901234567890')
|
|
331
|
+
const hex = Hex.from('0xabcdef')
|
|
332
|
+
const chainId = 1n
|
|
333
|
+
|
|
334
|
+
expect(Address.validate(address)).toBe(true)
|
|
335
|
+
expect(Hex.validate(hex)).toBe(true)
|
|
336
|
+
expect(typeof chainId).toBe('bigint')
|
|
337
|
+
})
|
|
338
|
+
|
|
339
|
+
it('should work with wallet-primitives types', () => {
|
|
340
|
+
// Test basic compatibility with imported types
|
|
341
|
+
const mockCall: Payload.Call = {
|
|
342
|
+
to: TEST_TO_ADDRESS,
|
|
343
|
+
value: 0n,
|
|
344
|
+
data: TEST_DATA,
|
|
345
|
+
gasLimit: 21000n,
|
|
346
|
+
delegateCall: false,
|
|
347
|
+
onlyFallback: false,
|
|
348
|
+
behaviorOnError: 'revert',
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
expect(mockCall.to).toBe(TEST_TO_ADDRESS)
|
|
352
|
+
expect(mockCall.data).toBe(TEST_DATA)
|
|
353
|
+
})
|
|
354
|
+
})
|
|
355
|
+
})
|
package/tsconfig.json
ADDED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from "./declarations/src/index.js";
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMHhzZXF1ZW5jZS1yZWxheWVyLmNqcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi9kZWNsYXJhdGlvbnMvc3JjL2luZGV4LmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEifQ==
|