@vleap/warps-adapter-fastset 0.1.0-alpha.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/dist/index.js ADDED
@@ -0,0 +1,648 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ WarpFastsetBuilder: () => WarpFastsetBuilder,
24
+ WarpFastsetConstants: () => WarpFastsetConstants,
25
+ WarpFastsetExecutor: () => WarpFastsetExecutor,
26
+ WarpFastsetExplorer: () => WarpFastsetExplorer,
27
+ WarpFastsetResults: () => WarpFastsetResults,
28
+ WarpFastsetSerializer: () => WarpFastsetSerializer,
29
+ getFastsetAdapter: () => getFastsetAdapter
30
+ });
31
+ module.exports = __toCommonJS(index_exports);
32
+
33
+ // src/constants.ts
34
+ var WarpFastsetConstants = {
35
+ ChainName: "fastset",
36
+ ChainPrefix: "fastset",
37
+ Pi: {
38
+ Identifier: "PI",
39
+ DisplayName: "Pi",
40
+ Decimals: 18
41
+ },
42
+ GasLimit: {
43
+ Default: 21e3,
44
+ ContractCall: 1e5,
45
+ ContractDeploy: 5e5,
46
+ Transfer: 21e3,
47
+ Approve: 46e3,
48
+ Swap: 2e5
49
+ },
50
+ GasPrice: {
51
+ Default: "20000000000",
52
+ // 20 gwei
53
+ Low: "10000000000",
54
+ // 10 gwei
55
+ Medium: "20000000000",
56
+ // 20 gwei
57
+ High: "50000000000"
58
+ // 50 gwei
59
+ },
60
+ Network: {
61
+ Mainnet: {
62
+ ChainId: "1",
63
+ Name: "Fastset Mainnet",
64
+ BlockTime: 12
65
+ },
66
+ Testnet: {
67
+ ChainId: "11155111",
68
+ Name: "Fastset Testnet",
69
+ BlockTime: 12
70
+ },
71
+ Devnet: {
72
+ ChainId: "1337",
73
+ Name: "Fastset Devnet",
74
+ BlockTime: 12
75
+ }
76
+ },
77
+ Validation: {
78
+ AddressLength: 42,
79
+ HexPrefix: "0x",
80
+ MinGasLimit: 21e3,
81
+ MaxGasLimit: 3e7
82
+ },
83
+ Timeouts: {
84
+ DefaultRpcTimeout: 3e4,
85
+ // 30 seconds
86
+ GasEstimationTimeout: 1e4,
87
+ // 10 seconds
88
+ QueryTimeout: 15e3
89
+ // 15 seconds
90
+ }
91
+ };
92
+
93
+ // src/WarpFastsetBuilder.ts
94
+ var WarpFastsetBuilder = class {
95
+ constructor(config) {
96
+ this.config = config;
97
+ this.warp = {};
98
+ this.actions = [];
99
+ }
100
+ async createFromRaw(encoded) {
101
+ try {
102
+ const parsed = JSON.parse(encoded);
103
+ this.warp = parsed;
104
+ this.actions = parsed.actions || [];
105
+ return this.build();
106
+ } catch (error) {
107
+ throw new Error(`Failed to parse Fastset warp data: ${error}`);
108
+ }
109
+ }
110
+ setTitle(title) {
111
+ this.warp.title = title;
112
+ return this;
113
+ }
114
+ setDescription(description) {
115
+ this.warp.description = description;
116
+ return this;
117
+ }
118
+ setPreview(preview) {
119
+ this.warp.preview = preview;
120
+ return this;
121
+ }
122
+ setActions(actions) {
123
+ this.actions = actions;
124
+ return this;
125
+ }
126
+ addAction(action) {
127
+ this.actions.push(action);
128
+ return this;
129
+ }
130
+ async build() {
131
+ return {
132
+ protocol: "warp",
133
+ name: this.warp.name || "fastset-warp",
134
+ title: this.warp.title || "",
135
+ description: this.warp.description || null,
136
+ preview: this.warp.preview || null,
137
+ actions: this.actions,
138
+ meta: {
139
+ chain: "fastset",
140
+ hash: this.generateHash(this.warp.title || ""),
141
+ creator: this.config.user?.wallets?.fastset || "",
142
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
143
+ }
144
+ };
145
+ }
146
+ createInscriptionTransaction(warp) {
147
+ return {
148
+ type: "fastset-inscription",
149
+ data: JSON.stringify(warp)
150
+ // TODO: Add Fastset-specific transaction fields
151
+ };
152
+ }
153
+ async createFromTransaction(tx, validate = true) {
154
+ try {
155
+ const warpData = tx.data || tx.payload || tx.content;
156
+ if (!warpData) {
157
+ throw new Error("No warp data found in transaction");
158
+ }
159
+ const parsed = typeof warpData === "string" ? JSON.parse(warpData) : warpData;
160
+ if (validate) {
161
+ this.validateWarp(parsed);
162
+ }
163
+ return parsed;
164
+ } catch (error) {
165
+ throw new Error(`Failed to create warp from Fastset transaction: ${error}`);
166
+ }
167
+ }
168
+ async createFromTransactionHash(hash, cache) {
169
+ try {
170
+ const tx = await this.fetchTransaction(hash);
171
+ if (!tx) {
172
+ return null;
173
+ }
174
+ return this.createFromTransaction(tx);
175
+ } catch (error) {
176
+ console.error(`Failed to create warp from Fastset transaction hash: ${error}`);
177
+ return null;
178
+ }
179
+ }
180
+ generateHash(data) {
181
+ let hash = 0;
182
+ for (let i = 0; i < data.length; i++) {
183
+ const char = data.charCodeAt(i);
184
+ hash = (hash << 5) - hash + char;
185
+ hash = hash & hash;
186
+ }
187
+ return hash.toString(16);
188
+ }
189
+ validateWarp(warp) {
190
+ if (!warp.title) {
191
+ throw new Error("Warp must have a title");
192
+ }
193
+ if (!warp.actions || !Array.isArray(warp.actions)) {
194
+ throw new Error("Warp must have actions array");
195
+ }
196
+ }
197
+ async fetchTransaction(hash) {
198
+ const response = await fetch(`${this.getApiUrl()}/transaction/${hash}`);
199
+ if (!response.ok) {
200
+ return null;
201
+ }
202
+ return response.json();
203
+ }
204
+ getApiUrl() {
205
+ return "https://api.fastset.xyz";
206
+ }
207
+ };
208
+
209
+ // src/WarpFastsetExecutor.ts
210
+ var import_warps2 = require("@vleap/warps");
211
+
212
+ // src/config.ts
213
+ var FASTSET_CHAIN_CONFIGS = {
214
+ fastset: {
215
+ mainnet: {
216
+ apiUrl: "https://mainnet.fastset.com/api",
217
+ explorerUrl: "https://explorer.fastset.com",
218
+ chainId: "1",
219
+ registryAddress: "0x0000000000000000000000000000000000000000",
220
+ nativeToken: "PI",
221
+ blockTime: 12
222
+ },
223
+ testnet: {
224
+ apiUrl: "https://testnet.fastset.com/api",
225
+ explorerUrl: "https://testnet-explorer.fastset.com",
226
+ chainId: "11155111",
227
+ registryAddress: "0x0000000000000000000000000000000000000000",
228
+ nativeToken: "PI",
229
+ blockTime: 12
230
+ },
231
+ devnet: {
232
+ apiUrl: "http://localhost:8545",
233
+ explorerUrl: "http://localhost:4000",
234
+ chainId: "1337",
235
+ registryAddress: "0x0000000000000000000000000000000000000000",
236
+ nativeToken: "PI",
237
+ blockTime: 12
238
+ }
239
+ }
240
+ };
241
+ var DEFAULT_CHAIN = "fastset";
242
+ var getFastsetChainConfig = (chain = DEFAULT_CHAIN, env) => {
243
+ const chainConfigs = FASTSET_CHAIN_CONFIGS[chain];
244
+ if (!chainConfigs) {
245
+ throw new Error(`Unsupported Fastset chain: ${chain}`);
246
+ }
247
+ const config = chainConfigs[env];
248
+ if (!config) {
249
+ throw new Error(`Unsupported environment ${env} for chain ${chain}`);
250
+ }
251
+ return config;
252
+ };
253
+ var getFastsetApiUrl = (env, chain = DEFAULT_CHAIN) => {
254
+ return getFastsetChainConfig(chain, env).apiUrl;
255
+ };
256
+
257
+ // src/WarpFastsetSerializer.ts
258
+ var import_warps = require("@vleap/warps");
259
+ var WarpFastsetSerializer = class {
260
+ constructor() {
261
+ this.coreSerializer = new import_warps.WarpSerializer();
262
+ }
263
+ typedToString(value) {
264
+ if (typeof value === "string") {
265
+ return `string:${value}`;
266
+ }
267
+ if (typeof value === "number") {
268
+ return `number:${value}`;
269
+ }
270
+ if (typeof value === "boolean") {
271
+ return `boolean:${value}`;
272
+ }
273
+ if (typeof value === "bigint") {
274
+ return `bigint:${value.toString()}`;
275
+ }
276
+ if (Array.isArray(value)) {
277
+ const items = value.map((item) => this.typedToString(item)).join(",");
278
+ return `array:${items}`;
279
+ }
280
+ if (value === null) {
281
+ return "null:null";
282
+ }
283
+ if (value === void 0) {
284
+ return "undefined:undefined";
285
+ }
286
+ return `string:${String(value)}`;
287
+ }
288
+ typedToNative(value) {
289
+ if (typeof value === "string") {
290
+ return ["string", value];
291
+ }
292
+ if (typeof value === "number") {
293
+ return ["number", value];
294
+ }
295
+ if (typeof value === "boolean") {
296
+ return ["boolean", value];
297
+ }
298
+ if (typeof value === "bigint") {
299
+ return ["bigint", value];
300
+ }
301
+ return ["string", String(value)];
302
+ }
303
+ nativeToTyped(type, value) {
304
+ switch (type) {
305
+ case "string":
306
+ return String(value);
307
+ case "number":
308
+ return Number(value);
309
+ case "boolean":
310
+ return Boolean(value);
311
+ case "bigint":
312
+ return BigInt(value);
313
+ default:
314
+ return String(value);
315
+ }
316
+ }
317
+ nativeToType(type) {
318
+ switch (type) {
319
+ case "string":
320
+ return "string";
321
+ case "number":
322
+ return "number";
323
+ case "boolean":
324
+ return "boolean";
325
+ case "bigint":
326
+ return "bigint";
327
+ default:
328
+ return "string";
329
+ }
330
+ }
331
+ stringToTyped(value) {
332
+ const colonIndex = value.indexOf(":");
333
+ if (colonIndex === -1) {
334
+ return value;
335
+ }
336
+ const type = value.substring(0, colonIndex);
337
+ const stringValue = value.substring(colonIndex + 1);
338
+ switch (type) {
339
+ case "string":
340
+ return stringValue;
341
+ case "number":
342
+ return Number(stringValue);
343
+ case "boolean":
344
+ return stringValue === "true";
345
+ case "bigint":
346
+ return BigInt(stringValue);
347
+ case "array":
348
+ return stringValue.split(",").map((item) => this.stringToTyped(item));
349
+ case "null":
350
+ return null;
351
+ case "undefined":
352
+ return void 0;
353
+ default:
354
+ return stringValue;
355
+ }
356
+ }
357
+ };
358
+
359
+ // src/WarpFastsetExecutor.ts
360
+ var WarpFastsetExecutor = class {
361
+ constructor(config) {
362
+ this.config = config;
363
+ this.serializer = new WarpFastsetSerializer();
364
+ }
365
+ async createTransaction(executable) {
366
+ const action = (0, import_warps2.getWarpActionByIndex)(executable.warp, executable.action);
367
+ let tx = null;
368
+ if (action.type === "transfer") {
369
+ tx = await this.createTransferTransaction(executable);
370
+ } else if (action.type === "contract") {
371
+ tx = await this.createContractCallTransaction(executable);
372
+ } else if (action.type === "query") {
373
+ throw new Error("WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead");
374
+ } else if (action.type === "collect") {
375
+ throw new Error("WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead");
376
+ }
377
+ if (!tx) throw new Error(`WarpFastsetExecutor: Invalid action type (${action.type})`);
378
+ return tx;
379
+ }
380
+ async createTransferTransaction(executable) {
381
+ const userWallet = this.config.user?.wallets?.[executable.chain.name];
382
+ if (!userWallet) throw new Error("WarpFastsetExecutor: createTransfer - user address not set");
383
+ if (!this.isValidFastsetAddress(executable.destination)) {
384
+ throw new Error(`WarpFastsetExecutor: Invalid destination address: ${executable.destination}`);
385
+ }
386
+ if (executable.value < 0) {
387
+ throw new Error(`WarpFastsetExecutor: Transfer value cannot be negative: ${executable.value}`);
388
+ }
389
+ return {
390
+ type: "fastset-transfer",
391
+ from: userWallet,
392
+ to: executable.destination,
393
+ value: executable.value,
394
+ data: executable.data ? this.serializer.stringToTyped(executable.data) : ""
395
+ // TODO: Add Fastset-specific transaction fields
396
+ };
397
+ }
398
+ async createContractCallTransaction(executable) {
399
+ const userWallet = this.config.user?.wallets?.[executable.chain.name];
400
+ if (!userWallet) throw new Error("WarpFastsetExecutor: createContractCall - user address not set");
401
+ const action = (0, import_warps2.getWarpActionByIndex)(executable.warp, executable.action);
402
+ if (!action || !("func" in action) || !action.func) {
403
+ throw new Error("WarpFastsetExecutor: Contract action must have a function name");
404
+ }
405
+ if (!this.isValidFastsetAddress(executable.destination)) {
406
+ throw new Error(`WarpFastsetExecutor: Invalid contract address: ${executable.destination}`);
407
+ }
408
+ if (executable.value < 0) {
409
+ throw new Error(`WarpFastsetExecutor: Contract call value cannot be negative: ${executable.value}`);
410
+ }
411
+ try {
412
+ const encodedData = this.encodeFunctionData(action.func, executable.args);
413
+ return {
414
+ type: "fastset-contract-call",
415
+ from: userWallet,
416
+ to: executable.destination,
417
+ value: executable.value,
418
+ data: encodedData,
419
+ function: action.func
420
+ // TODO: Add Fastset-specific transaction fields
421
+ };
422
+ } catch (error) {
423
+ throw new Error(`WarpFastsetExecutor: Failed to encode function data for ${action.func}: ${error}`);
424
+ }
425
+ }
426
+ async executeQuery(executable) {
427
+ const action = (0, import_warps2.getWarpActionByIndex)(executable.warp, executable.action);
428
+ if (action.type !== "query") {
429
+ throw new Error(`WarpFastsetExecutor: Invalid action type for executeQuery: ${action.type}`);
430
+ }
431
+ if (!action.func) {
432
+ throw new Error("WarpFastsetExecutor: Query action must have a function name");
433
+ }
434
+ if (!this.isValidFastsetAddress(executable.destination)) {
435
+ throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`);
436
+ }
437
+ try {
438
+ const result = await this.executeFastsetQuery(executable.destination, action.func, executable.args);
439
+ return {
440
+ success: true,
441
+ result
442
+ // TODO: Add Fastset-specific result fields
443
+ };
444
+ } catch (error) {
445
+ return {
446
+ success: false,
447
+ error: error instanceof Error ? error.message : String(error)
448
+ // TODO: Add Fastset-specific error fields
449
+ };
450
+ }
451
+ }
452
+ async preprocessInput(chain, input, type, value) {
453
+ const typedValue = this.serializer.stringToTyped(value);
454
+ switch (type) {
455
+ case "address":
456
+ if (!this.isValidFastsetAddress(typedValue)) {
457
+ throw new Error(`Invalid Fastset address format: ${typedValue}`);
458
+ }
459
+ return typedValue;
460
+ case "number":
461
+ const numValue = Number(typedValue);
462
+ if (isNaN(numValue)) {
463
+ throw new Error(`Invalid number format: ${typedValue}`);
464
+ }
465
+ return numValue.toString();
466
+ case "bigint":
467
+ const bigIntValue = BigInt(typedValue);
468
+ if (bigIntValue < 0) {
469
+ throw new Error(`Negative value not allowed for type ${type}: ${typedValue}`);
470
+ }
471
+ return bigIntValue.toString();
472
+ default:
473
+ return String(typedValue);
474
+ }
475
+ }
476
+ isValidFastsetAddress(address) {
477
+ return typeof address === "string" && address.length > 0;
478
+ }
479
+ encodeFunctionData(functionName, args) {
480
+ return JSON.stringify({
481
+ function: functionName,
482
+ arguments: args
483
+ });
484
+ }
485
+ async executeFastsetQuery(contractAddress, functionName, args) {
486
+ const response = await fetch(`${getFastsetApiUrl(this.config.env, "fastset")}/query`, {
487
+ method: "POST",
488
+ headers: {
489
+ "Content-Type": "application/json"
490
+ },
491
+ body: JSON.stringify({
492
+ contract: contractAddress,
493
+ function: functionName,
494
+ arguments: args
495
+ })
496
+ });
497
+ if (!response.ok) {
498
+ throw new Error(`Fastset query failed: ${response.statusText}`);
499
+ }
500
+ return response.json();
501
+ }
502
+ async signMessage(message, privateKey) {
503
+ throw new Error("Not implemented");
504
+ }
505
+ };
506
+
507
+ // src/WarpFastsetExplorer.ts
508
+ var WarpFastsetExplorer = class {
509
+ constructor(chainInfo, chainName = "fastset") {
510
+ this.chainInfo = chainInfo;
511
+ this.chainName = chainName;
512
+ }
513
+ getAccountUrl(address) {
514
+ const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl();
515
+ return `${baseUrl}/address/${address}`;
516
+ }
517
+ getTransactionUrl(hash) {
518
+ const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl();
519
+ return `${baseUrl}/tx/${hash}`;
520
+ }
521
+ getBlockUrl(blockNumber) {
522
+ const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl();
523
+ return `${baseUrl}/block/${blockNumber}`;
524
+ }
525
+ getContractUrl(address) {
526
+ const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl();
527
+ return `${baseUrl}/contract/${address}`;
528
+ }
529
+ getTokenUrl(address) {
530
+ const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl();
531
+ return `${baseUrl}/token/${address}`;
532
+ }
533
+ getDefaultExplorerUrl() {
534
+ return `https://explorer.fastset.xyz`;
535
+ }
536
+ };
537
+
538
+ // src/WarpFastsetResults.ts
539
+ var import_warps3 = require("@vleap/warps");
540
+ var WarpFastsetResults = class {
541
+ constructor(config) {
542
+ this.config = config;
543
+ this.serializer = new WarpFastsetSerializer();
544
+ }
545
+ async getTransactionExecutionResults(warp, tx) {
546
+ const success = this.isTransactionSuccessful(tx);
547
+ const gasUsed = this.extractGasUsed(tx);
548
+ const gasPrice = this.extractGasPrice(tx);
549
+ const blockNumber = this.extractBlockNumber(tx);
550
+ const transactionHash = this.extractTransactionHash(tx);
551
+ const logs = this.extractLogs(tx);
552
+ return {
553
+ success,
554
+ warp,
555
+ action: 0,
556
+ user: this.config.user?.wallets?.fastset || null,
557
+ txHash: transactionHash,
558
+ next: null,
559
+ values: [transactionHash, blockNumber, gasUsed, gasPrice, ...logs.length > 0 ? logs : []],
560
+ results: {},
561
+ messages: {}
562
+ };
563
+ }
564
+ async extractQueryResults(warp, typedValues, actionIndex, inputs) {
565
+ const values = typedValues.map((t) => this.serializer.typedToString(t));
566
+ const valuesRaw = typedValues.map((t) => this.serializer.typedToNative(t)[1]);
567
+ let results = {};
568
+ if (!warp.results) return { values, results };
569
+ const getNestedValue = (path) => {
570
+ const indices = path.split(".").slice(1).map((i) => parseInt(i) - 1);
571
+ if (indices.length === 0) return void 0;
572
+ let value = valuesRaw[indices[0]];
573
+ for (let i = 1; i < indices.length; i++) {
574
+ if (value === void 0 || value === null) return void 0;
575
+ value = value[indices[i]];
576
+ }
577
+ return value;
578
+ };
579
+ for (const [key, path] of Object.entries(warp.results)) {
580
+ if (path.startsWith(import_warps3.WarpConstants.Transform.Prefix)) continue;
581
+ const currentActionIndex = (0, import_warps3.parseResultsOutIndex)(path);
582
+ if (currentActionIndex !== null && currentActionIndex !== actionIndex) {
583
+ results[key] = null;
584
+ continue;
585
+ }
586
+ if (path.startsWith("out.") || path === "out" || path.startsWith("out[")) {
587
+ results[key] = getNestedValue(path) || null;
588
+ } else {
589
+ results[key] = path;
590
+ }
591
+ }
592
+ return { values, results: await (0, import_warps3.evaluateResultsCommon)(warp, results, actionIndex, inputs) };
593
+ }
594
+ isTransactionSuccessful(tx) {
595
+ return tx.status === "success" || tx.status === 1 || tx.success === true;
596
+ }
597
+ extractGasUsed(tx) {
598
+ return tx.gasUsed?.toString() || tx.gas_used?.toString() || "0";
599
+ }
600
+ extractGasPrice(tx) {
601
+ return tx.gasPrice?.toString() || tx.gas_price?.toString() || "0";
602
+ }
603
+ extractBlockNumber(tx) {
604
+ return tx.blockNumber?.toString() || tx.block_number?.toString() || "0";
605
+ }
606
+ extractTransactionHash(tx) {
607
+ return tx.hash || tx.transactionHash || tx.transaction_hash || "";
608
+ }
609
+ extractLogs(tx) {
610
+ const logs = tx.logs || tx.events || [];
611
+ return logs.map((log) => ({
612
+ address: log.address || log.contract,
613
+ topics: log.topics || log.topics || [],
614
+ data: log.data || log.payload || "",
615
+ blockNumber: log.blockNumber?.toString() || log.block_number?.toString() || "0",
616
+ transactionHash: log.transactionHash || log.transaction_hash || "",
617
+ index: log.index?.toString() || "0"
618
+ }));
619
+ }
620
+ };
621
+
622
+ // src/main.ts
623
+ var getFastsetAdapter = (config, fallback) => {
624
+ if (!fallback) throw new Error("Fastset adapter requires a fallback adapter");
625
+ return {
626
+ chain: WarpFastsetConstants.ChainName,
627
+ prefix: WarpFastsetConstants.ChainPrefix,
628
+ builder: () => new WarpFastsetBuilder(config),
629
+ executor: new WarpFastsetExecutor(config),
630
+ results: new WarpFastsetResults(config),
631
+ serializer: new WarpFastsetSerializer(),
632
+ registry: fallback.registry,
633
+ explorer: (chainInfo) => new WarpFastsetExplorer(chainInfo),
634
+ abiBuilder: () => fallback.abiBuilder(),
635
+ brandBuilder: () => fallback.brandBuilder()
636
+ };
637
+ };
638
+ // Annotate the CommonJS export names for ESM import in node:
639
+ 0 && (module.exports = {
640
+ WarpFastsetBuilder,
641
+ WarpFastsetConstants,
642
+ WarpFastsetExecutor,
643
+ WarpFastsetExplorer,
644
+ WarpFastsetResults,
645
+ WarpFastsetSerializer,
646
+ getFastsetAdapter
647
+ });
648
+ //# sourceMappingURL=index.js.map