@vleap/warps-adapter-fastset 0.1.0-alpha.5 → 0.1.0-alpha.7

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.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { AdapterFactory, CombinedWarpBuilder, WarpClientConfig, Warp, BaseWarpBuilder, WarpAction, AdapterWarpExecutor, WarpExecutable, WarpChainInfo, WarpActionInputType, AdapterWarpExplorer, AdapterWarpResults, WarpExecution, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
1
+ import { AdapterFactory, AdapterWarpExecutor, WarpClientConfig, WarpExecutable, WarpChainInfo, WarpActionInputType, AdapterWarpExplorer, AdapterWarpResults, Warp, WarpExecution, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
2
2
  import * as _mysten_bcs from '@mysten/bcs';
3
3
 
4
4
  declare const WarpFastsetConstants: {
@@ -204,27 +204,6 @@ declare function normalizeAmount(amount: string): string;
204
204
  declare function validatePrivateKey(privateKey: string | Uint8Array): boolean;
205
205
  declare function validatePublicKey(publicKey: string | Uint8Array): boolean;
206
206
 
207
- declare class WarpFastsetBuilder implements CombinedWarpBuilder {
208
- private readonly config;
209
- private warp;
210
- private actions;
211
- constructor(config: WarpClientConfig);
212
- createFromRaw(encoded: string): Promise<Warp>;
213
- setTitle(title: string): BaseWarpBuilder;
214
- setDescription(description: string): BaseWarpBuilder;
215
- setPreview(preview: string): BaseWarpBuilder;
216
- setActions(actions: WarpAction[]): BaseWarpBuilder;
217
- addAction(action: WarpAction): BaseWarpBuilder;
218
- build(): Promise<Warp>;
219
- createInscriptionTransaction(warp: Warp): any;
220
- createFromTransaction(tx: any, validate?: boolean): Promise<Warp>;
221
- createFromTransactionHash(hash: string, cache?: any): Promise<Warp | null>;
222
- private generateHash;
223
- private validateWarp;
224
- private fetchTransaction;
225
- private getApiUrl;
226
- }
227
-
228
207
  declare class WarpFastsetExecutor implements AdapterWarpExecutor {
229
208
  private readonly config;
230
209
  private readonly serializer;
@@ -249,7 +228,7 @@ declare class WarpFastsetExplorer implements AdapterWarpExplorer {
249
228
  getTransactionUrl(hash: string): string;
250
229
  getBlockUrl(blockNumber: string | number): string;
251
230
  getContractUrl(address: string): string;
252
- getTokenUrl(address: string): string;
231
+ getAssetUrl(identifier: string): string;
253
232
  private getDefaultExplorerUrl;
254
233
  }
255
234
 
@@ -280,4 +259,4 @@ declare class WarpFastsetSerializer implements AdapterWarpSerializer {
280
259
  stringToTyped(value: string): any;
281
260
  }
282
261
 
283
- export { Address, Amount, Bytes32, ClaimType, type FastsetAccountInfo, FastsetClient, type FastsetClientConfig, type FastsetFaucetRequest, type FastsetFaucetResponse, type FastsetJsonRpcRequest, type FastsetJsonRpcResponse, type FastsetSubmitCertificateRequest, type FastsetSubmitTransactionRequest, type FastsetSubmitTransactionResponse, type FastsetTransaction, type FastsetTransferRequest, Nonce, PublicKey, Transaction, Transfer, UserData, WarpFastsetBuilder, WarpFastsetConstants, WarpFastsetExecutor, WarpFastsetExplorer, WarpFastsetResults, WarpFastsetSerializer, decimalToHex, fromBase64, getFastsetAdapter, hexToDecimal, isValidFastsetAddress, normalizeAmount, toBase64String, toHexString, validateAmount, validatePrivateKey, validatePublicKey };
262
+ export { Address, Amount, Bytes32, ClaimType, type FastsetAccountInfo, FastsetClient, type FastsetClientConfig, type FastsetFaucetRequest, type FastsetFaucetResponse, type FastsetJsonRpcRequest, type FastsetJsonRpcResponse, type FastsetSubmitCertificateRequest, type FastsetSubmitTransactionRequest, type FastsetSubmitTransactionResponse, type FastsetTransaction, type FastsetTransferRequest, Nonce, PublicKey, Transaction, Transfer, UserData, WarpFastsetConstants, WarpFastsetExecutor, WarpFastsetExplorer, WarpFastsetResults, WarpFastsetSerializer, decimalToHex, fromBase64, getFastsetAdapter, hexToDecimal, isValidFastsetAddress, normalizeAmount, toBase64String, toHexString, validateAmount, validatePrivateKey, validatePublicKey };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AdapterFactory, CombinedWarpBuilder, WarpClientConfig, Warp, BaseWarpBuilder, WarpAction, AdapterWarpExecutor, WarpExecutable, WarpChainInfo, WarpActionInputType, AdapterWarpExplorer, AdapterWarpResults, WarpExecution, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
1
+ import { AdapterFactory, AdapterWarpExecutor, WarpClientConfig, WarpExecutable, WarpChainInfo, WarpActionInputType, AdapterWarpExplorer, AdapterWarpResults, Warp, WarpExecution, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
2
2
  import * as _mysten_bcs from '@mysten/bcs';
3
3
 
4
4
  declare const WarpFastsetConstants: {
@@ -204,27 +204,6 @@ declare function normalizeAmount(amount: string): string;
204
204
  declare function validatePrivateKey(privateKey: string | Uint8Array): boolean;
205
205
  declare function validatePublicKey(publicKey: string | Uint8Array): boolean;
206
206
 
207
- declare class WarpFastsetBuilder implements CombinedWarpBuilder {
208
- private readonly config;
209
- private warp;
210
- private actions;
211
- constructor(config: WarpClientConfig);
212
- createFromRaw(encoded: string): Promise<Warp>;
213
- setTitle(title: string): BaseWarpBuilder;
214
- setDescription(description: string): BaseWarpBuilder;
215
- setPreview(preview: string): BaseWarpBuilder;
216
- setActions(actions: WarpAction[]): BaseWarpBuilder;
217
- addAction(action: WarpAction): BaseWarpBuilder;
218
- build(): Promise<Warp>;
219
- createInscriptionTransaction(warp: Warp): any;
220
- createFromTransaction(tx: any, validate?: boolean): Promise<Warp>;
221
- createFromTransactionHash(hash: string, cache?: any): Promise<Warp | null>;
222
- private generateHash;
223
- private validateWarp;
224
- private fetchTransaction;
225
- private getApiUrl;
226
- }
227
-
228
207
  declare class WarpFastsetExecutor implements AdapterWarpExecutor {
229
208
  private readonly config;
230
209
  private readonly serializer;
@@ -249,7 +228,7 @@ declare class WarpFastsetExplorer implements AdapterWarpExplorer {
249
228
  getTransactionUrl(hash: string): string;
250
229
  getBlockUrl(blockNumber: string | number): string;
251
230
  getContractUrl(address: string): string;
252
- getTokenUrl(address: string): string;
231
+ getAssetUrl(identifier: string): string;
253
232
  private getDefaultExplorerUrl;
254
233
  }
255
234
 
@@ -280,4 +259,4 @@ declare class WarpFastsetSerializer implements AdapterWarpSerializer {
280
259
  stringToTyped(value: string): any;
281
260
  }
282
261
 
283
- export { Address, Amount, Bytes32, ClaimType, type FastsetAccountInfo, FastsetClient, type FastsetClientConfig, type FastsetFaucetRequest, type FastsetFaucetResponse, type FastsetJsonRpcRequest, type FastsetJsonRpcResponse, type FastsetSubmitCertificateRequest, type FastsetSubmitTransactionRequest, type FastsetSubmitTransactionResponse, type FastsetTransaction, type FastsetTransferRequest, Nonce, PublicKey, Transaction, Transfer, UserData, WarpFastsetBuilder, WarpFastsetConstants, WarpFastsetExecutor, WarpFastsetExplorer, WarpFastsetResults, WarpFastsetSerializer, decimalToHex, fromBase64, getFastsetAdapter, hexToDecimal, isValidFastsetAddress, normalizeAmount, toBase64String, toHexString, validateAmount, validatePrivateKey, validatePublicKey };
262
+ export { Address, Amount, Bytes32, ClaimType, type FastsetAccountInfo, FastsetClient, type FastsetClientConfig, type FastsetFaucetRequest, type FastsetFaucetResponse, type FastsetJsonRpcRequest, type FastsetJsonRpcResponse, type FastsetSubmitCertificateRequest, type FastsetSubmitTransactionRequest, type FastsetSubmitTransactionResponse, type FastsetTransaction, type FastsetTransferRequest, Nonce, PublicKey, Transaction, Transfer, UserData, WarpFastsetConstants, WarpFastsetExecutor, WarpFastsetExplorer, WarpFastsetResults, WarpFastsetSerializer, decimalToHex, fromBase64, getFastsetAdapter, hexToDecimal, isValidFastsetAddress, normalizeAmount, toBase64String, toHexString, validateAmount, validatePrivateKey, validatePublicKey };
package/dist/index.js CHANGED
@@ -30,7 +30,6 @@ __export(index_exports, {
30
30
  Transaction: () => Transaction,
31
31
  Transfer: () => Transfer,
32
32
  UserData: () => UserData,
33
- WarpFastsetBuilder: () => WarpFastsetBuilder,
34
33
  WarpFastsetConstants: () => WarpFastsetConstants,
35
34
  WarpFastsetExecutor: () => WarpFastsetExecutor,
36
35
  WarpFastsetExplorer: () => WarpFastsetExplorer,
@@ -91,122 +90,6 @@ var WarpFastsetConstants = {
91
90
  }
92
91
  };
93
92
 
94
- // src/WarpFastsetBuilder.ts
95
- var WarpFastsetBuilder = class {
96
- constructor(config) {
97
- this.config = config;
98
- this.warp = {};
99
- this.actions = [];
100
- }
101
- async createFromRaw(encoded) {
102
- try {
103
- const parsed = JSON.parse(encoded);
104
- this.warp = parsed;
105
- this.actions = parsed.actions || [];
106
- return this.build();
107
- } catch (error) {
108
- throw new Error(`Failed to parse Fastset warp data: ${error}`);
109
- }
110
- }
111
- setTitle(title) {
112
- this.warp.title = title;
113
- return this;
114
- }
115
- setDescription(description) {
116
- this.warp.description = description;
117
- return this;
118
- }
119
- setPreview(preview) {
120
- this.warp.preview = preview;
121
- return this;
122
- }
123
- setActions(actions) {
124
- this.actions = actions;
125
- return this;
126
- }
127
- addAction(action) {
128
- this.actions.push(action);
129
- return this;
130
- }
131
- async build() {
132
- return {
133
- protocol: "warp",
134
- name: this.warp.name || "fastset-warp",
135
- title: this.warp.title || "",
136
- description: this.warp.description || null,
137
- preview: this.warp.preview || null,
138
- actions: this.actions,
139
- meta: {
140
- chain: "fastset",
141
- hash: this.generateHash(this.warp.title || ""),
142
- creator: this.config.user?.wallets?.fastset || "",
143
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
144
- }
145
- };
146
- }
147
- createInscriptionTransaction(warp) {
148
- return {
149
- type: "fastset-inscription",
150
- data: JSON.stringify(warp)
151
- // TODO: Add Fastset-specific transaction fields
152
- };
153
- }
154
- async createFromTransaction(tx, validate = true) {
155
- try {
156
- const warpData = tx.data || tx.payload || tx.content;
157
- if (!warpData) {
158
- throw new Error("No warp data found in transaction");
159
- }
160
- const parsed = typeof warpData === "string" ? JSON.parse(warpData) : warpData;
161
- if (validate) {
162
- this.validateWarp(parsed);
163
- }
164
- return parsed;
165
- } catch (error) {
166
- throw new Error(`Failed to create warp from Fastset transaction: ${error}`);
167
- }
168
- }
169
- async createFromTransactionHash(hash, cache) {
170
- try {
171
- const tx = await this.fetchTransaction(hash);
172
- if (!tx) {
173
- return null;
174
- }
175
- return this.createFromTransaction(tx);
176
- } catch (error) {
177
- console.error(`Failed to create warp from Fastset transaction hash: ${error}`);
178
- return null;
179
- }
180
- }
181
- generateHash(data) {
182
- let hash = 0;
183
- for (let i = 0; i < data.length; i++) {
184
- const char = data.charCodeAt(i);
185
- hash = (hash << 5) - hash + char;
186
- hash = hash & hash;
187
- }
188
- return hash.toString(16);
189
- }
190
- validateWarp(warp) {
191
- if (!warp.title) {
192
- throw new Error("Warp must have a title");
193
- }
194
- if (!warp.actions || !Array.isArray(warp.actions)) {
195
- throw new Error("Warp must have actions array");
196
- }
197
- }
198
- async fetchTransaction(hash) {
199
- const response = await fetch(`${this.getApiUrl()}/transaction/${hash}`);
200
- if (!response.ok) {
201
- return null;
202
- }
203
- return response.json();
204
- }
205
- getApiUrl() {
206
- return "https://api.fastset.xyz";
207
- }
208
- };
209
-
210
93
  // src/WarpFastsetDataLoader.ts
211
94
  var WarpFastsetDataLoader = class {
212
95
  constructor(config, chain) {
@@ -817,9 +700,9 @@ var WarpFastsetExplorer = class {
817
700
  const baseUrl = this.getDefaultExplorerUrl();
818
701
  return `${baseUrl}/contract/${address}`;
819
702
  }
820
- getTokenUrl(address) {
703
+ getAssetUrl(identifier) {
821
704
  const baseUrl = this.getDefaultExplorerUrl();
822
- return `${baseUrl}/token/${address}`;
705
+ return `${baseUrl}/token/${identifier}`;
823
706
  }
824
707
  getDefaultExplorerUrl() {
825
708
  return `https://explorer.fastset.xyz`;
@@ -927,7 +810,7 @@ var getFastsetAdapter = (config, fallback) => {
927
810
  chain: ChainName,
928
811
  chainInfo,
929
812
  prefix: "fastset",
930
- builder: () => new WarpFastsetBuilder(config),
813
+ builder: () => fallback.builder(),
931
814
  executor: new WarpFastsetExecutor(config),
932
815
  results: new WarpFastsetResults(config),
933
816
  serializer: new WarpFastsetSerializer(),
@@ -950,7 +833,6 @@ var getFastsetAdapter = (config, fallback) => {
950
833
  Transaction,
951
834
  Transfer,
952
835
  UserData,
953
- WarpFastsetBuilder,
954
836
  WarpFastsetConstants,
955
837
  WarpFastsetExecutor,
956
838
  WarpFastsetExplorer,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/WarpFastsetBuilder.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/config.ts","../src/sdk/FastsetClient.ts","../src/sdk/types.ts","../src/sdk/utils.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts","../src/main.ts"],"sourcesContent":["export * from './constants'\nexport * from './main'\nexport * from './sdk'\nexport * from './WarpFastsetBuilder'\nexport * from './WarpFastsetExecutor'\nexport * from './WarpFastsetExplorer'\nexport * from './WarpFastsetResults'\nexport * from './WarpFastsetSerializer'\n","export const WarpFastsetConstants = {\n Pi: {\n Identifier: 'PI',\n DisplayName: 'Pi',\n Decimals: 18,\n },\n GasLimit: {\n Default: 21000,\n ContractCall: 100000,\n ContractDeploy: 500000,\n Transfer: 21000,\n Approve: 46000,\n Swap: 200000,\n },\n GasPrice: {\n Default: '20000000000', // 20 gwei\n Low: '10000000000', // 10 gwei\n Medium: '20000000000', // 20 gwei\n High: '50000000000', // 50 gwei\n },\n Validation: {\n AddressLength: 42,\n HexPrefix: '0x',\n MinGasLimit: 21000,\n MaxGasLimit: 30000000,\n },\n Timeouts: {\n DefaultRpcTimeout: 30000, // 30 seconds\n GasEstimationTimeout: 10000, // 10 seconds\n QueryTimeout: 15000, // 15 seconds\n },\n}\n","import { BaseWarpBuilder, CombinedWarpBuilder, Warp, WarpAction, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetBuilder implements CombinedWarpBuilder {\n private warp: Partial<Warp> = {}\n private actions: WarpAction[] = []\n\n constructor(private readonly config: WarpClientConfig) {}\n\n async createFromRaw(encoded: string): Promise<Warp> {\n // TODO: Implement Fastset-specific raw data parsing\n // This should parse Fastset-specific encoded data format\n\n try {\n const parsed = JSON.parse(encoded)\n this.warp = parsed\n this.actions = parsed.actions || []\n return this.build()\n } catch (error) {\n throw new Error(`Failed to parse Fastset warp data: ${error}`)\n }\n }\n\n setTitle(title: string): BaseWarpBuilder {\n this.warp.title = title\n return this\n }\n\n setDescription(description: string): BaseWarpBuilder {\n this.warp.description = description\n return this\n }\n\n setPreview(preview: string): BaseWarpBuilder {\n this.warp.preview = preview\n return this\n }\n\n setActions(actions: WarpAction[]): BaseWarpBuilder {\n this.actions = actions\n return this\n }\n\n addAction(action: WarpAction): BaseWarpBuilder {\n this.actions.push(action)\n return this\n }\n\n async build(): Promise<Warp> {\n // TODO: Implement Fastset-specific warp building logic\n // This should create a Fastset-specific warp object\n\n return {\n protocol: 'warp',\n name: this.warp.name || 'fastset-warp',\n title: this.warp.title || '',\n description: this.warp.description || null,\n preview: this.warp.preview || null,\n actions: this.actions,\n meta: {\n chain: 'fastset',\n hash: this.generateHash(this.warp.title || ''),\n creator: this.config.user?.wallets?.fastset || '',\n createdAt: new Date().toISOString(),\n },\n } as Warp\n }\n\n createInscriptionTransaction(warp: Warp): any {\n // TODO: Implement Fastset-specific inscription transaction creation\n // This should create a transaction that inscribes the warp on Fastset\n\n return {\n type: 'fastset-inscription',\n data: JSON.stringify(warp),\n // TODO: Add Fastset-specific transaction fields\n }\n }\n\n async createFromTransaction(tx: any, validate: boolean = true): Promise<Warp> {\n // TODO: Implement Fastset-specific transaction parsing\n // This should parse Fastset transactions to extract warp data\n\n try {\n const warpData = tx.data || tx.payload || tx.content\n if (!warpData) {\n throw new Error('No warp data found in transaction')\n }\n\n const parsed = typeof warpData === 'string' ? JSON.parse(warpData) : warpData\n\n if (validate) {\n // TODO: Add Fastset-specific validation\n this.validateWarp(parsed)\n }\n\n return parsed\n } catch (error) {\n throw new Error(`Failed to create warp from Fastset transaction: ${error}`)\n }\n }\n\n async createFromTransactionHash(hash: string, cache?: any): Promise<Warp | null> {\n // TODO: Implement Fastset-specific transaction hash lookup\n // This should fetch transaction data from Fastset blockchain\n\n try {\n // TODO: Implement Fastset RPC call to get transaction\n const tx = await this.fetchTransaction(hash)\n if (!tx) {\n return null\n }\n\n return this.createFromTransaction(tx)\n } catch (error) {\n console.error(`Failed to create warp from Fastset transaction hash: ${error}`)\n return null\n }\n }\n\n private generateHash(data: string): string {\n // TODO: Implement Fastset-specific hash generation\n // This should use Fastset's preferred hashing algorithm\n\n // Simple hash for now - replace with Fastset-specific implementation\n let hash = 0\n for (let i = 0; i < data.length; i++) {\n const char = data.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32-bit integer\n }\n return hash.toString(16)\n }\n\n private validateWarp(warp: any): void {\n // TODO: Implement Fastset-specific warp validation\n // This should validate warp data according to Fastset rules\n\n if (!warp.title) {\n throw new Error('Warp must have a title')\n }\n\n if (!warp.actions || !Array.isArray(warp.actions)) {\n throw new Error('Warp must have actions array')\n }\n\n // TODO: Add more Fastset-specific validation rules\n }\n\n private async fetchTransaction(hash: string): Promise<any> {\n // TODO: Implement Fastset RPC call\n // This should fetch transaction data from Fastset blockchain\n\n // Placeholder implementation\n const response = await fetch(`${this.getApiUrl()}/transaction/${hash}`)\n if (!response.ok) {\n return null\n }\n\n return response.json()\n }\n\n private getApiUrl(): string {\n // TODO: Get Fastset API URL from config\n return 'https://api.fastset.xyz'\n }\n}\n","import { AdapterWarpDataLoader, WarpChainAccount, WarpChainAsset, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {}\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return a basic structure\n return {\n address,\n balance: BigInt(0), // TODO: Implement actual balance fetching from Fastset API\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return empty array\n return []\n }\n}\n","import {\n AdapterWarpExecutor,\n getWarpActionByIndex,\n WarpActionInputType,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { getFastsetApiUrl, getFastsetProxyUrl } from './config'\nimport { FastsetClient, fromBase64, isValidFastsetAddress, normalizeAmount } from './sdk'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n this.fastsetClient = new FastsetClient({\n validatorUrl: getFastsetApiUrl(this.config.env, 'fastset'),\n proxyUrl: getFastsetProxyUrl(this.config.env, 'fastset'),\n })\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n\n switch (action.type) {\n case 'transfer':\n return this.createTransferTransaction(executable)\n case 'contract':\n return this.createContractCallTransaction(executable)\n case 'query':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n case 'collect':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n default:\n throw new Error(`WarpFastsetExecutor: Invalid action type (${action.type})`)\n }\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createTransfer - user address not set')\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid destination address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Transfer value cannot be negative: ${executable.value}`)\n }\n\n const recipientAddress = fromBase64(executable.destination)\n const amount = normalizeAmount(executable.value.toString())\n const userData = executable.data ? fromBase64(this.serializer.stringToTyped(executable.data)) : undefined\n\n return {\n type: 'fastset-transfer',\n recipient: recipientAddress,\n amount,\n userData,\n chain: executable.chain,\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createContractCall - user address not set')\n\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (!action || !('func' in action) || !action.func) {\n throw new Error('WarpFastsetExecutor: Contract action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Contract call value cannot be negative: ${executable.value}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const encodedData = this.encodeFunctionData(action.func, executable.args)\n\n return {\n type: 'fastset-contract-call',\n contract: contractAddress,\n function: action.func,\n data: encodedData,\n value: executable.value,\n chain: executable.chain,\n }\n } catch (error) {\n throw new Error(`WarpFastsetExecutor: Failed to encode function data for ${action.func}: ${error}`)\n }\n }\n\n async executeQuery(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action) as WarpQueryAction\n if (action.type !== 'query') {\n throw new Error(`WarpFastsetExecutor: Invalid action type for executeQuery: ${action.type}`)\n }\n if (!action.func) {\n throw new Error('WarpFastsetExecutor: Query action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const result = await this.executeFastsetQuery(contractAddress, action.func, executable.args)\n\n return {\n success: true,\n result,\n chain: executable.chain,\n }\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n chain: executable.chain,\n }\n }\n }\n\n async preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string> {\n const typedValue = this.serializer.stringToTyped(value)\n\n switch (type) {\n case 'address':\n if (!isValidFastsetAddress(typedValue)) {\n throw new Error(`Invalid Fastset address format: ${typedValue}`)\n }\n return typedValue\n case 'hex':\n // Validate hex format (allow 0x prefix)\n const hexValue = typedValue.startsWith('0x') ? typedValue.slice(2) : typedValue\n if (!/^[0-9a-fA-F]+$/.test(hexValue)) {\n throw new Error(`Invalid hex format: ${typedValue}`)\n }\n return typedValue\n case 'number':\n const numValue = Number(typedValue)\n if (isNaN(numValue)) {\n throw new Error(`Invalid number format: ${typedValue}`)\n }\n return numValue.toString()\n case 'biguint':\n const bigIntValue = BigInt(typedValue)\n if (bigIntValue < 0) {\n throw new Error(`Negative value not allowed`)\n }\n return bigIntValue.toString()\n default:\n return String(typedValue)\n }\n }\n\n private encodeFunctionData(functionName: string, args: unknown[]): string {\n return JSON.stringify({\n function: functionName,\n arguments: args,\n })\n }\n\n private async executeFastsetQuery(contractAddress: Uint8Array, functionName: string, args: unknown[]): Promise<unknown> {\n const response = await fetch(`${getFastsetApiUrl(this.config.env, 'fastset')}/query`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n contract: Array.from(contractAddress),\n function: functionName,\n arguments: args,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`Fastset query failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n async signMessage(message: string, privateKey: string): Promise<string> {\n throw new Error('Not implemented')\n }\n\n async executeTransfer(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n\n return {\n success: true,\n transaction,\n chain: executable.chain.name,\n message: 'Transaction created successfully. Use executeTransferWithKey to execute with private key.',\n }\n }\n\n async executeTransferWithKey(executable: WarpExecutable, privateKey: string): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n const privateKeyBytes = fromBase64(privateKey)\n const transactionHash = await this.fastsetClient.executeTransfer(\n privateKeyBytes,\n transaction.recipient,\n transaction.amount,\n transaction.userData\n )\n\n return {\n success: true,\n transactionHash: Array.from(transactionHash),\n chain: executable.chain.name,\n }\n }\n}\n","import { WarpChainEnv } from '@vleap/warps'\n\n// Fastset Chain configurations\nexport interface FastsetChainConfig {\n apiUrl: string\n proxyUrl: string\n explorerUrl: string\n chainId: string\n registryAddress: string\n nativeToken: string\n blockTime?: number\n}\n\n// Predefined chain configurations\nexport const FASTSET_CHAIN_CONFIGS: Record<string, Record<WarpChainEnv, FastsetChainConfig>> = {\n fastset: {\n mainnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://explorer.fastset.com',\n chainId: '1',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n testnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://testnet-explorer.fastset.com',\n chainId: '11155111',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n devnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'http://localhost:4000',\n chainId: '1337',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n },\n}\n\n// Default chain\nconst DEFAULT_CHAIN = 'fastset'\n\nexport const getFastsetChainConfig = (chain: string = DEFAULT_CHAIN, env: WarpChainEnv): FastsetChainConfig => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n throw new Error(`Unsupported Fastset chain: ${chain}`)\n }\n\n const config = chainConfigs[env]\n if (!config) {\n throw new Error(`Unsupported environment ${env} for chain ${chain}`)\n }\n\n return config\n}\n\nexport const getFastsetApiUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).apiUrl\n}\n\nexport const getFastsetProxyUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).proxyUrl\n}\n\nexport const getFastsetExplorerUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).explorerUrl\n}\n\nexport const getFastsetChainId = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).chainId\n}\n\nexport const getFastsetRegistryAddress = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).registryAddress\n}\n\nexport const getFastsetNativeToken = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).nativeToken\n}\n\nexport const getFastsetBlockTime = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): number => {\n return getFastsetChainConfig(chain, env).blockTime || 12000\n}\n\n// Helper function to get all supported chains\nexport const getSupportedFastsetChains = (): string[] => {\n return Object.keys(FASTSET_CHAIN_CONFIGS)\n}\n\n// Helper function to get all supported environments for a chain\nexport const getSupportedEnvironments = (chain: string): WarpChainEnv[] => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n return []\n }\n return Object.keys(chainConfigs) as WarpChainEnv[]\n}\n","import { getPublicKey, sign } from '@noble/ed25519'\nimport {\n FastsetAccountInfo,\n FastsetFaucetRequest,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n Transaction,\n} from './types'\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config: FastsetClientConfig) {\n this.config = config\n }\n\n async getAccountInfo(address: Uint8Array): Promise<FastsetAccountInfo | null> {\n try {\n const response = await this.requestValidator('set_getAccountInfo', {\n address: Array.from(address),\n })\n\n if (response.error) {\n return null\n }\n\n return response.result as FastsetAccountInfo\n } catch (error) {\n return null\n }\n }\n\n async getNextNonce(senderAddress: Uint8Array): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async fundFromFaucet(request: FastsetFaucetRequest): Promise<FastsetFaucetResponse> {\n const response = await this.requestProxy('faucetDrip', {\n recipient: Array.from(request.recipient),\n amount: request.amount,\n })\n\n if (response.error) {\n throw new Error(`Faucet request failed: ${response.error.message}`)\n }\n\n return response.result as FastsetFaucetResponse\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.requestValidator('set_submitTransaction', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n })\n\n if (response.error) {\n throw new Error(`Transaction submission failed: ${response.error.message}`)\n }\n\n const result = response.result as {\n transaction_hash: number[]\n validator: number[]\n signature: number[]\n }\n return {\n transaction_hash: new Uint8Array(result.transaction_hash),\n validator: new Uint8Array(result.validator),\n signature: new Uint8Array(result.signature),\n }\n }\n\n async submitCertificate(request: FastsetSubmitCertificateRequest): Promise<void> {\n const response = await this.requestValidator('set_submitTransactionCertificate', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n validator_signatures: request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n })\n\n if (response.error) {\n throw new Error(`Certificate submission failed: ${response.error.message}`)\n }\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: Uint8Array, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const nonce = await this.getNextNonce(senderPublicKey)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim: {\n Transfer: {\n recipient: { FastSet: recipient },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n return submitResponse.transaction_hash\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = Transaction.serialize(transaction)\n const msgBytes = msg.toBytes()\n\n const prefix = new TextEncoder().encode('Transaction::')\n const dataToSign = new Uint8Array(prefix.length + msgBytes.length)\n dataToSign.set(prefix, 0)\n dataToSign.set(msgBytes, prefix.length)\n\n return sign(dataToSign, privateKey)\n }\n\n private serializeTransaction(transaction: FastsetTransaction): unknown {\n return JSON.stringify(transaction, this.jsonReplacer)\n }\n\n private async requestValidator(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.validatorUrl, method, params)\n }\n\n private async requestProxy(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.proxyUrl, method, params)\n }\n\n private async request(url: string, method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request, this.jsonReplacer),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP request failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n private jsonReplacer(key: string, value: unknown): unknown {\n if (value instanceof Uint8Array) {\n return Array.from(value)\n }\n return value\n }\n}\n","import { bcs } from '@mysten/bcs'\n\n// BigInt serialization workaround\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\n// BCS Type Definitions\nexport const Bytes32 = bcs.fixedArray(32, bcs.u8())\nexport const PublicKey = Bytes32\n\nexport const Address = bcs.enum('Address', {\n External: PublicKey,\n FastSet: PublicKey,\n})\n\nexport const Amount = bcs.u256().transform({\n input: (val: unknown) => hexToDecimal((val as string).toString()),\n output: (value: string) => value,\n})\n\nexport const UserData = bcs.option(Bytes32)\nexport const Nonce = bcs.u64()\n\nexport const Transfer = bcs.struct('Transfer', {\n recipient: Address,\n amount: Amount,\n user_data: UserData,\n})\n\nexport const ClaimType = bcs.enum('ClaimType', {\n Transfer: Transfer,\n})\n\nexport const Transaction = bcs.struct('Transaction', {\n sender: PublicKey,\n nonce: Nonce,\n timestamp_nanos: bcs.u128(),\n claim: ClaimType,\n})\n\n// TypeScript interfaces\nexport interface FastsetTransaction {\n sender: Uint8Array\n nonce: number\n timestamp_nanos: bigint\n claim: {\n Transfer: {\n recipient: { FastSet: Uint8Array } | { External: Uint8Array }\n amount: string\n user_data: Uint8Array | null\n }\n }\n}\n\nexport interface FastsetTransferRequest {\n recipient: Uint8Array\n amount: string\n user_data?: Uint8Array\n}\n\nexport interface FastsetAccountInfo {\n balance: string\n next_nonce: number\n sequence_number: number\n}\n\nexport interface FastsetSubmitTransactionRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitTransactionResponse {\n transaction_hash: Uint8Array\n validator: Uint8Array\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitCertificateRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n validator_signatures: [Uint8Array, Uint8Array][]\n}\n\nexport interface FastsetFaucetRequest {\n recipient: Uint8Array\n amount: string\n}\n\nexport interface FastsetFaucetResponse {\n balance: string\n}\n\nexport interface FastsetJsonRpcRequest {\n jsonrpc: '2.0'\n id: number\n method: string\n params: Record<string, unknown>\n}\n\nexport interface FastsetJsonRpcResponse<T = unknown> {\n jsonrpc: '2.0'\n id: number\n result?: T\n error?: {\n code: number\n message: string\n data?: unknown\n }\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import { toBase64, toHex } from '@mysten/bcs'\n\nexport function isValidFastsetAddress(address: string): boolean {\n if (typeof address !== 'string' || address.length === 0) {\n return false\n }\n\n // For testing purposes, allow addresses that start with 'fs' or 'pi'\n if (address.startsWith('fs') || address.startsWith('pi')) {\n return true\n }\n\n try {\n // Try to decode as base64 (FastSet addresses are typically base64 encoded)\n const decoded = fromBase64(address)\n return decoded.length === 32 // FastSet addresses are 32 bytes\n } catch {\n return false\n }\n}\n\nexport function fromBase64(base64: string): Uint8Array {\n return new Uint8Array(Buffer.from(base64, 'base64'))\n}\n\nexport function toBase64String(bytes: Uint8Array): string {\n return toBase64(bytes)\n}\n\nexport function toHexString(bytes: Uint8Array): string {\n return toHex(bytes)\n}\n\nexport function hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n\nexport function decimalToHex(decimal: string): string {\n return BigInt(decimal).toString(16)\n}\n\nexport function validateAmount(amount: string): boolean {\n try {\n const bigInt = BigInt(amount)\n return bigInt >= 0\n } catch {\n return false\n }\n}\n\nexport function normalizeAmount(amount: string): string {\n // Ensure amount is in hex format for FastSet\n try {\n const bigInt = BigInt(amount)\n return bigInt.toString(16)\n } catch {\n throw new Error(`Invalid amount format: ${amount}`)\n }\n}\n\nexport function validatePrivateKey(privateKey: string | Uint8Array): boolean {\n try {\n const key = typeof privateKey === 'string' ? fromBase64(privateKey) : privateKey\n return key.length === 32\n } catch {\n return false\n }\n}\n\nexport function validatePublicKey(publicKey: string | Uint8Array): boolean {\n try {\n const key = typeof publicKey === 'string' ? fromBase64(publicKey) : publicKey\n return key.length === 32\n } catch {\n return false\n }\n}\n","import {\n AdapterWarpSerializer,\n BaseWarpActionInputType,\n WarpActionInputType,\n WarpAdapterGenericType,\n WarpNativeValue,\n WarpSerializer,\n} from '@vleap/warps'\n\nexport class WarpFastsetSerializer implements AdapterWarpSerializer {\n public readonly coreSerializer: WarpSerializer\n\n constructor() {\n this.coreSerializer = new WarpSerializer()\n }\n\n typedToString(value: any): string {\n // TODO: Implement Fastset-specific serialization logic\n // This should handle Fastset-specific data types and formats\n\n if (typeof value === 'string') {\n // TODO: Add Fastset address validation if needed\n return `string:${value}`\n }\n\n if (typeof value === 'number') {\n return `number:${value}`\n }\n\n if (typeof value === 'boolean') {\n return `boolean:${value}`\n }\n\n if (typeof value === 'bigint') {\n return `bigint:${value.toString()}`\n }\n\n if (Array.isArray(value)) {\n const items = value.map((item) => this.typedToString(item)).join(',')\n return `array:${items}`\n }\n\n if (value === null) {\n return 'null:null'\n }\n\n if (value === undefined) {\n return 'undefined:undefined'\n }\n\n // Default to string representation\n return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\n // TODO: Implement Fastset-specific type conversion\n // This should convert Fastset-specific types to native types\n\n if (typeof value === 'string') {\n return ['string', value]\n }\n\n if (typeof value === 'number') {\n return ['number', value]\n }\n\n if (typeof value === 'boolean') {\n return ['boolean', value]\n }\n\n if (typeof value === 'bigint') {\n return ['bigint', value]\n }\n\n // Default to string\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\n // TODO: Implement Fastset-specific type conversion\n // This should convert native types to Fastset-specific types\n\n switch (type) {\n case 'string':\n return String(value)\n case 'number':\n return Number(value)\n case 'boolean':\n return Boolean(value)\n case 'bigint':\n return BigInt(value as string | number)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n // TODO: Implement Fastset-specific type mapping\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'bigint':\n return 'bigint'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\n // TODO: Implement Fastset-specific string parsing\n // This should parse Fastset-specific string formats\n\n const colonIndex = value.indexOf(':')\n if (colonIndex === -1) {\n return value\n }\n\n const type = value.substring(0, colonIndex)\n const stringValue = value.substring(colonIndex + 1)\n\n switch (type) {\n case 'string':\n return stringValue\n case 'number':\n return Number(stringValue)\n case 'boolean':\n return stringValue === 'true'\n case 'bigint':\n return BigInt(stringValue)\n case 'array':\n return stringValue.split(',').map((item) => this.stringToTyped(item))\n case 'null':\n return null\n case 'undefined':\n return undefined\n default:\n return stringValue\n }\n }\n}\n","import { AdapterWarpExplorer, WarpChainInfo } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n constructor(private readonly chainInfo: WarpChainInfo) {}\n\n getAccountUrl(address: string): string {\n // TODO: Implement Fastset-specific account URL generation\n // This should generate a URL to view an account on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/address/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n // TODO: Implement Fastset-specific transaction URL generation\n // This should generate a URL to view a transaction on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/tx/${hash}`\n }\n\n getBlockUrl(blockNumber: string | number): string {\n // TODO: Implement Fastset-specific block URL generation\n // This should generate a URL to view a block on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/block/${blockNumber}`\n }\n\n getContractUrl(address: string): string {\n // TODO: Implement Fastset-specific contract URL generation\n // This should generate a URL to view a contract on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/contract/${address}`\n }\n\n getTokenUrl(address: string): string {\n // TODO: Implement Fastset-specific token URL generation\n // This should generate a URL to view a token on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/token/${address}`\n }\n\n private getDefaultExplorerUrl(): string {\n // TODO: Replace with actual Fastset explorer URL when available\n return `https://explorer.fastset.xyz`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpClientConfig,\n WarpConstants,\n WarpExecution,\n WarpExecutionResults,\n} from '@vleap/warps'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetResults implements AdapterWarpResults {\n private readonly serializer: WarpFastsetSerializer\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n // TODO: Implement Fastset-specific transaction result processing\n // This should process Fastset transaction results into WarpExecution format\n\n const success = this.isTransactionSuccessful(tx)\n const gasUsed = this.extractGasUsed(tx)\n const gasPrice = this.extractGasPrice(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const transactionHash = this.extractTransactionHash(tx)\n\n const logs = this.extractLogs(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.fastset || null,\n txHash: transactionHash,\n next: null,\n values: [transactionHash, blockNumber, gasUsed, gasPrice, ...(logs.length > 0 ? logs : [])],\n results: {},\n messages: {},\n }\n }\n\n async extractQueryResults(\n warp: Warp,\n typedValues: any[],\n actionIndex: number,\n inputs: ResolvedInput[]\n ): Promise<{ values: any[]; results: WarpExecutionResults }> {\n // TODO: Implement Fastset-specific query result extraction\n // This should extract and process query results according to Fastset format\n\n const values = typedValues.map((t) => this.serializer.typedToString(t))\n const valuesRaw = typedValues.map((t) => this.serializer.typedToNative(t)[1])\n let results: WarpExecutionResults = {}\n\n if (!warp.results) return { values, results }\n\n const getNestedValue = (path: string): unknown => {\n const indices = path\n .split('.')\n .slice(1)\n .map((i) => parseInt(i) - 1)\n if (indices.length === 0) return undefined\n let value: any = valuesRaw[indices[0]]\n for (let i = 1; i < indices.length; i++) {\n if (value === undefined || value === null) return undefined\n value = value[indices[i]]\n }\n return value\n }\n\n for (const [key, path] of Object.entries(warp.results)) {\n if (path.startsWith(WarpConstants.Transform.Prefix)) continue\n const currentActionIndex = parseResultsOutIndex(path)\n if (currentActionIndex !== null && currentActionIndex !== actionIndex) {\n results[key] = null\n continue\n }\n if (path.startsWith('out.') || path === 'out' || path.startsWith('out[')) {\n results[key] = getNestedValue(path) || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n // TODO: Implement Fastset-specific transaction success detection\n // This should determine if a Fastset transaction was successful\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.status === 'success' || tx.status === 1 || tx.success === true\n }\n\n private extractGasUsed(tx: any): string {\n // TODO: Implement Fastset-specific gas used extraction\n // This should extract gas used from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasUsed?.toString() || tx.gas_used?.toString() || '0'\n }\n\n private extractGasPrice(tx: any): string {\n // TODO: Implement Fastset-specific gas price extraction\n // This should extract gas price from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasPrice?.toString() || tx.gas_price?.toString() || '0'\n }\n\n private extractBlockNumber(tx: any): string {\n // TODO: Implement Fastset-specific block number extraction\n // This should extract block number from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.blockNumber?.toString() || tx.block_number?.toString() || '0'\n }\n\n private extractTransactionHash(tx: any): string {\n // TODO: Implement Fastset-specific transaction hash extraction\n // This should extract transaction hash from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.hash || tx.transactionHash || tx.transaction_hash || ''\n }\n\n private extractLogs(tx: any): any[] {\n // TODO: Implement Fastset-specific log extraction\n // This should extract logs from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n const logs = tx.logs || tx.events || []\n\n return logs.map((log: any) => ({\n address: log.address || log.contract,\n topics: log.topics || log.topics || [],\n data: log.data || log.payload || '',\n blockNumber: log.blockNumber?.toString() || log.block_number?.toString() || '0',\n transactionHash: log.transactionHash || log.transaction_hash || '',\n index: log.index?.toString() || '0',\n }))\n }\n}\n","import { Adapter, AdapterFactory, WarpChain, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { WarpFastsetBuilder } from './WarpFastsetBuilder'\nimport { WarpFastsetDataLoader } from './WarpFastsetDataLoader'\nimport { WarpFastsetExecutor } from './WarpFastsetExecutor'\nimport { WarpFastsetExplorer } from './WarpFastsetExplorer'\nimport { WarpFastsetResults } from './WarpFastsetResults'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nconst ChainName: WarpChain = 'fastset'\n\nexport const getFastsetAdapter: AdapterFactory = (config: WarpClientConfig, fallback?: Adapter) => {\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n const chainInfo: WarpChainInfo = {\n name: ChainName,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 100,\n addressHrp: 'set',\n apiUrl: 'TODO',\n nativeToken: 'SET',\n }\n\n return {\n chain: ChainName,\n chainInfo,\n prefix: 'fastset',\n builder: () => new WarpFastsetBuilder(config),\n executor: new WarpFastsetExecutor(config),\n results: new WarpFastsetResults(config),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n}\n"],"mappings":"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","names":["hexToDecimal","import_warps","import_bcs","hexToDecimal","import_warps"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/config.ts","../src/sdk/FastsetClient.ts","../src/sdk/types.ts","../src/sdk/utils.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts","../src/main.ts"],"sourcesContent":["export * from './constants'\nexport * from './main'\nexport * from './sdk'\nexport * from './WarpFastsetExecutor'\nexport * from './WarpFastsetExplorer'\nexport * from './WarpFastsetResults'\nexport * from './WarpFastsetSerializer'\n","export const WarpFastsetConstants = {\n Pi: {\n Identifier: 'PI',\n DisplayName: 'Pi',\n Decimals: 18,\n },\n GasLimit: {\n Default: 21000,\n ContractCall: 100000,\n ContractDeploy: 500000,\n Transfer: 21000,\n Approve: 46000,\n Swap: 200000,\n },\n GasPrice: {\n Default: '20000000000', // 20 gwei\n Low: '10000000000', // 10 gwei\n Medium: '20000000000', // 20 gwei\n High: '50000000000', // 50 gwei\n },\n Validation: {\n AddressLength: 42,\n HexPrefix: '0x',\n MinGasLimit: 21000,\n MaxGasLimit: 30000000,\n },\n Timeouts: {\n DefaultRpcTimeout: 30000, // 30 seconds\n GasEstimationTimeout: 10000, // 10 seconds\n QueryTimeout: 15000, // 15 seconds\n },\n}\n","import { AdapterWarpDataLoader, WarpChainAccount, WarpChainAsset, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {}\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return a basic structure\n return {\n address,\n balance: BigInt(0), // TODO: Implement actual balance fetching from Fastset API\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return empty array\n return []\n }\n}\n","import {\n AdapterWarpExecutor,\n getWarpActionByIndex,\n WarpActionInputType,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { getFastsetApiUrl, getFastsetProxyUrl } from './config'\nimport { FastsetClient, fromBase64, isValidFastsetAddress, normalizeAmount } from './sdk'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n this.fastsetClient = new FastsetClient({\n validatorUrl: getFastsetApiUrl(this.config.env, 'fastset'),\n proxyUrl: getFastsetProxyUrl(this.config.env, 'fastset'),\n })\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n\n switch (action.type) {\n case 'transfer':\n return this.createTransferTransaction(executable)\n case 'contract':\n return this.createContractCallTransaction(executable)\n case 'query':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n case 'collect':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n default:\n throw new Error(`WarpFastsetExecutor: Invalid action type (${action.type})`)\n }\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createTransfer - user address not set')\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid destination address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Transfer value cannot be negative: ${executable.value}`)\n }\n\n const recipientAddress = fromBase64(executable.destination)\n const amount = normalizeAmount(executable.value.toString())\n const userData = executable.data ? fromBase64(this.serializer.stringToTyped(executable.data)) : undefined\n\n return {\n type: 'fastset-transfer',\n recipient: recipientAddress,\n amount,\n userData,\n chain: executable.chain,\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createContractCall - user address not set')\n\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (!action || !('func' in action) || !action.func) {\n throw new Error('WarpFastsetExecutor: Contract action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Contract call value cannot be negative: ${executable.value}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const encodedData = this.encodeFunctionData(action.func, executable.args)\n\n return {\n type: 'fastset-contract-call',\n contract: contractAddress,\n function: action.func,\n data: encodedData,\n value: executable.value,\n chain: executable.chain,\n }\n } catch (error) {\n throw new Error(`WarpFastsetExecutor: Failed to encode function data for ${action.func}: ${error}`)\n }\n }\n\n async executeQuery(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action) as WarpQueryAction\n if (action.type !== 'query') {\n throw new Error(`WarpFastsetExecutor: Invalid action type for executeQuery: ${action.type}`)\n }\n if (!action.func) {\n throw new Error('WarpFastsetExecutor: Query action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const result = await this.executeFastsetQuery(contractAddress, action.func, executable.args)\n\n return {\n success: true,\n result,\n chain: executable.chain,\n }\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n chain: executable.chain,\n }\n }\n }\n\n async preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string> {\n const typedValue = this.serializer.stringToTyped(value)\n\n switch (type) {\n case 'address':\n if (!isValidFastsetAddress(typedValue)) {\n throw new Error(`Invalid Fastset address format: ${typedValue}`)\n }\n return typedValue\n case 'hex':\n // Validate hex format (allow 0x prefix)\n const hexValue = typedValue.startsWith('0x') ? typedValue.slice(2) : typedValue\n if (!/^[0-9a-fA-F]+$/.test(hexValue)) {\n throw new Error(`Invalid hex format: ${typedValue}`)\n }\n return typedValue\n case 'number':\n const numValue = Number(typedValue)\n if (isNaN(numValue)) {\n throw new Error(`Invalid number format: ${typedValue}`)\n }\n return numValue.toString()\n case 'biguint':\n const bigIntValue = BigInt(typedValue)\n if (bigIntValue < 0) {\n throw new Error(`Negative value not allowed`)\n }\n return bigIntValue.toString()\n default:\n return String(typedValue)\n }\n }\n\n private encodeFunctionData(functionName: string, args: unknown[]): string {\n return JSON.stringify({\n function: functionName,\n arguments: args,\n })\n }\n\n private async executeFastsetQuery(contractAddress: Uint8Array, functionName: string, args: unknown[]): Promise<unknown> {\n const response = await fetch(`${getFastsetApiUrl(this.config.env, 'fastset')}/query`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n contract: Array.from(contractAddress),\n function: functionName,\n arguments: args,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`Fastset query failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n async signMessage(message: string, privateKey: string): Promise<string> {\n throw new Error('Not implemented')\n }\n\n async executeTransfer(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n\n return {\n success: true,\n transaction,\n chain: executable.chain.name,\n message: 'Transaction created successfully. Use executeTransferWithKey to execute with private key.',\n }\n }\n\n async executeTransferWithKey(executable: WarpExecutable, privateKey: string): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n const privateKeyBytes = fromBase64(privateKey)\n const transactionHash = await this.fastsetClient.executeTransfer(\n privateKeyBytes,\n transaction.recipient,\n transaction.amount,\n transaction.userData\n )\n\n return {\n success: true,\n transactionHash: Array.from(transactionHash),\n chain: executable.chain.name,\n }\n }\n}\n","import { WarpChainEnv } from '@vleap/warps'\n\n// Fastset Chain configurations\nexport interface FastsetChainConfig {\n apiUrl: string\n proxyUrl: string\n explorerUrl: string\n chainId: string\n registryAddress: string\n nativeToken: string\n blockTime?: number\n}\n\n// Predefined chain configurations\nexport const FASTSET_CHAIN_CONFIGS: Record<string, Record<WarpChainEnv, FastsetChainConfig>> = {\n fastset: {\n mainnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://explorer.fastset.com',\n chainId: '1',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n testnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://testnet-explorer.fastset.com',\n chainId: '11155111',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n devnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'http://localhost:4000',\n chainId: '1337',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n },\n}\n\n// Default chain\nconst DEFAULT_CHAIN = 'fastset'\n\nexport const getFastsetChainConfig = (chain: string = DEFAULT_CHAIN, env: WarpChainEnv): FastsetChainConfig => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n throw new Error(`Unsupported Fastset chain: ${chain}`)\n }\n\n const config = chainConfigs[env]\n if (!config) {\n throw new Error(`Unsupported environment ${env} for chain ${chain}`)\n }\n\n return config\n}\n\nexport const getFastsetApiUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).apiUrl\n}\n\nexport const getFastsetProxyUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).proxyUrl\n}\n\nexport const getFastsetExplorerUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).explorerUrl\n}\n\nexport const getFastsetChainId = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).chainId\n}\n\nexport const getFastsetRegistryAddress = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).registryAddress\n}\n\nexport const getFastsetNativeToken = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).nativeToken\n}\n\nexport const getFastsetBlockTime = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): number => {\n return getFastsetChainConfig(chain, env).blockTime || 12000\n}\n\n// Helper function to get all supported chains\nexport const getSupportedFastsetChains = (): string[] => {\n return Object.keys(FASTSET_CHAIN_CONFIGS)\n}\n\n// Helper function to get all supported environments for a chain\nexport const getSupportedEnvironments = (chain: string): WarpChainEnv[] => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n return []\n }\n return Object.keys(chainConfigs) as WarpChainEnv[]\n}\n","import { getPublicKey, sign } from '@noble/ed25519'\nimport {\n FastsetAccountInfo,\n FastsetFaucetRequest,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n Transaction,\n} from './types'\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config: FastsetClientConfig) {\n this.config = config\n }\n\n async getAccountInfo(address: Uint8Array): Promise<FastsetAccountInfo | null> {\n try {\n const response = await this.requestValidator('set_getAccountInfo', {\n address: Array.from(address),\n })\n\n if (response.error) {\n return null\n }\n\n return response.result as FastsetAccountInfo\n } catch (error) {\n return null\n }\n }\n\n async getNextNonce(senderAddress: Uint8Array): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async fundFromFaucet(request: FastsetFaucetRequest): Promise<FastsetFaucetResponse> {\n const response = await this.requestProxy('faucetDrip', {\n recipient: Array.from(request.recipient),\n amount: request.amount,\n })\n\n if (response.error) {\n throw new Error(`Faucet request failed: ${response.error.message}`)\n }\n\n return response.result as FastsetFaucetResponse\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.requestValidator('set_submitTransaction', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n })\n\n if (response.error) {\n throw new Error(`Transaction submission failed: ${response.error.message}`)\n }\n\n const result = response.result as {\n transaction_hash: number[]\n validator: number[]\n signature: number[]\n }\n return {\n transaction_hash: new Uint8Array(result.transaction_hash),\n validator: new Uint8Array(result.validator),\n signature: new Uint8Array(result.signature),\n }\n }\n\n async submitCertificate(request: FastsetSubmitCertificateRequest): Promise<void> {\n const response = await this.requestValidator('set_submitTransactionCertificate', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n validator_signatures: request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n })\n\n if (response.error) {\n throw new Error(`Certificate submission failed: ${response.error.message}`)\n }\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: Uint8Array, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const nonce = await this.getNextNonce(senderPublicKey)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim: {\n Transfer: {\n recipient: { FastSet: recipient },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n return submitResponse.transaction_hash\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = Transaction.serialize(transaction)\n const msgBytes = msg.toBytes()\n\n const prefix = new TextEncoder().encode('Transaction::')\n const dataToSign = new Uint8Array(prefix.length + msgBytes.length)\n dataToSign.set(prefix, 0)\n dataToSign.set(msgBytes, prefix.length)\n\n return sign(dataToSign, privateKey)\n }\n\n private serializeTransaction(transaction: FastsetTransaction): unknown {\n return JSON.stringify(transaction, this.jsonReplacer)\n }\n\n private async requestValidator(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.validatorUrl, method, params)\n }\n\n private async requestProxy(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.proxyUrl, method, params)\n }\n\n private async request(url: string, method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request, this.jsonReplacer),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP request failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n private jsonReplacer(key: string, value: unknown): unknown {\n if (value instanceof Uint8Array) {\n return Array.from(value)\n }\n return value\n }\n}\n","import { bcs } from '@mysten/bcs'\n\n// BigInt serialization workaround\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\n// BCS Type Definitions\nexport const Bytes32 = bcs.fixedArray(32, bcs.u8())\nexport const PublicKey = Bytes32\n\nexport const Address = bcs.enum('Address', {\n External: PublicKey,\n FastSet: PublicKey,\n})\n\nexport const Amount = bcs.u256().transform({\n input: (val: unknown) => hexToDecimal((val as string).toString()),\n output: (value: string) => value,\n})\n\nexport const UserData = bcs.option(Bytes32)\nexport const Nonce = bcs.u64()\n\nexport const Transfer = bcs.struct('Transfer', {\n recipient: Address,\n amount: Amount,\n user_data: UserData,\n})\n\nexport const ClaimType = bcs.enum('ClaimType', {\n Transfer: Transfer,\n})\n\nexport const Transaction = bcs.struct('Transaction', {\n sender: PublicKey,\n nonce: Nonce,\n timestamp_nanos: bcs.u128(),\n claim: ClaimType,\n})\n\n// TypeScript interfaces\nexport interface FastsetTransaction {\n sender: Uint8Array\n nonce: number\n timestamp_nanos: bigint\n claim: {\n Transfer: {\n recipient: { FastSet: Uint8Array } | { External: Uint8Array }\n amount: string\n user_data: Uint8Array | null\n }\n }\n}\n\nexport interface FastsetTransferRequest {\n recipient: Uint8Array\n amount: string\n user_data?: Uint8Array\n}\n\nexport interface FastsetAccountInfo {\n balance: string\n next_nonce: number\n sequence_number: number\n}\n\nexport interface FastsetSubmitTransactionRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitTransactionResponse {\n transaction_hash: Uint8Array\n validator: Uint8Array\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitCertificateRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n validator_signatures: [Uint8Array, Uint8Array][]\n}\n\nexport interface FastsetFaucetRequest {\n recipient: Uint8Array\n amount: string\n}\n\nexport interface FastsetFaucetResponse {\n balance: string\n}\n\nexport interface FastsetJsonRpcRequest {\n jsonrpc: '2.0'\n id: number\n method: string\n params: Record<string, unknown>\n}\n\nexport interface FastsetJsonRpcResponse<T = unknown> {\n jsonrpc: '2.0'\n id: number\n result?: T\n error?: {\n code: number\n message: string\n data?: unknown\n }\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import { toBase64, toHex } from '@mysten/bcs'\n\nexport function isValidFastsetAddress(address: string): boolean {\n if (typeof address !== 'string' || address.length === 0) {\n return false\n }\n\n // For testing purposes, allow addresses that start with 'fs' or 'pi'\n if (address.startsWith('fs') || address.startsWith('pi')) {\n return true\n }\n\n try {\n // Try to decode as base64 (FastSet addresses are typically base64 encoded)\n const decoded = fromBase64(address)\n return decoded.length === 32 // FastSet addresses are 32 bytes\n } catch {\n return false\n }\n}\n\nexport function fromBase64(base64: string): Uint8Array {\n return new Uint8Array(Buffer.from(base64, 'base64'))\n}\n\nexport function toBase64String(bytes: Uint8Array): string {\n return toBase64(bytes)\n}\n\nexport function toHexString(bytes: Uint8Array): string {\n return toHex(bytes)\n}\n\nexport function hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n\nexport function decimalToHex(decimal: string): string {\n return BigInt(decimal).toString(16)\n}\n\nexport function validateAmount(amount: string): boolean {\n try {\n const bigInt = BigInt(amount)\n return bigInt >= 0\n } catch {\n return false\n }\n}\n\nexport function normalizeAmount(amount: string): string {\n // Ensure amount is in hex format for FastSet\n try {\n const bigInt = BigInt(amount)\n return bigInt.toString(16)\n } catch {\n throw new Error(`Invalid amount format: ${amount}`)\n }\n}\n\nexport function validatePrivateKey(privateKey: string | Uint8Array): boolean {\n try {\n const key = typeof privateKey === 'string' ? fromBase64(privateKey) : privateKey\n return key.length === 32\n } catch {\n return false\n }\n}\n\nexport function validatePublicKey(publicKey: string | Uint8Array): boolean {\n try {\n const key = typeof publicKey === 'string' ? fromBase64(publicKey) : publicKey\n return key.length === 32\n } catch {\n return false\n }\n}\n","import {\n AdapterWarpSerializer,\n BaseWarpActionInputType,\n WarpActionInputType,\n WarpAdapterGenericType,\n WarpNativeValue,\n WarpSerializer,\n} from '@vleap/warps'\n\nexport class WarpFastsetSerializer implements AdapterWarpSerializer {\n public readonly coreSerializer: WarpSerializer\n\n constructor() {\n this.coreSerializer = new WarpSerializer()\n }\n\n typedToString(value: any): string {\n // TODO: Implement Fastset-specific serialization logic\n // This should handle Fastset-specific data types and formats\n\n if (typeof value === 'string') {\n // TODO: Add Fastset address validation if needed\n return `string:${value}`\n }\n\n if (typeof value === 'number') {\n return `number:${value}`\n }\n\n if (typeof value === 'boolean') {\n return `boolean:${value}`\n }\n\n if (typeof value === 'bigint') {\n return `bigint:${value.toString()}`\n }\n\n if (Array.isArray(value)) {\n const items = value.map((item) => this.typedToString(item)).join(',')\n return `array:${items}`\n }\n\n if (value === null) {\n return 'null:null'\n }\n\n if (value === undefined) {\n return 'undefined:undefined'\n }\n\n // Default to string representation\n return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\n // TODO: Implement Fastset-specific type conversion\n // This should convert Fastset-specific types to native types\n\n if (typeof value === 'string') {\n return ['string', value]\n }\n\n if (typeof value === 'number') {\n return ['number', value]\n }\n\n if (typeof value === 'boolean') {\n return ['boolean', value]\n }\n\n if (typeof value === 'bigint') {\n return ['bigint', value]\n }\n\n // Default to string\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\n // TODO: Implement Fastset-specific type conversion\n // This should convert native types to Fastset-specific types\n\n switch (type) {\n case 'string':\n return String(value)\n case 'number':\n return Number(value)\n case 'boolean':\n return Boolean(value)\n case 'bigint':\n return BigInt(value as string | number)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n // TODO: Implement Fastset-specific type mapping\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'bigint':\n return 'bigint'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\n // TODO: Implement Fastset-specific string parsing\n // This should parse Fastset-specific string formats\n\n const colonIndex = value.indexOf(':')\n if (colonIndex === -1) {\n return value\n }\n\n const type = value.substring(0, colonIndex)\n const stringValue = value.substring(colonIndex + 1)\n\n switch (type) {\n case 'string':\n return stringValue\n case 'number':\n return Number(stringValue)\n case 'boolean':\n return stringValue === 'true'\n case 'bigint':\n return BigInt(stringValue)\n case 'array':\n return stringValue.split(',').map((item) => this.stringToTyped(item))\n case 'null':\n return null\n case 'undefined':\n return undefined\n default:\n return stringValue\n }\n }\n}\n","import { AdapterWarpExplorer, WarpChainInfo } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n constructor(private readonly chainInfo: WarpChainInfo) {}\n\n getAccountUrl(address: string): string {\n // TODO: Implement Fastset-specific account URL generation\n // This should generate a URL to view an account on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/address/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n // TODO: Implement Fastset-specific transaction URL generation\n // This should generate a URL to view a transaction on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/tx/${hash}`\n }\n\n getBlockUrl(blockNumber: string | number): string {\n // TODO: Implement Fastset-specific block URL generation\n // This should generate a URL to view a block on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/block/${blockNumber}`\n }\n\n getContractUrl(address: string): string {\n // TODO: Implement Fastset-specific contract URL generation\n // This should generate a URL to view a contract on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/contract/${address}`\n }\n\n getAssetUrl(identifier: string): string {\n // TODO: Implement Fastset-specific asset URL generation\n // This should generate a URL to view an asset on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/token/${identifier}`\n }\n\n private getDefaultExplorerUrl(): string {\n // TODO: Replace with actual Fastset explorer URL when available\n return `https://explorer.fastset.xyz`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpClientConfig,\n WarpConstants,\n WarpExecution,\n WarpExecutionResults,\n} from '@vleap/warps'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetResults implements AdapterWarpResults {\n private readonly serializer: WarpFastsetSerializer\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n // TODO: Implement Fastset-specific transaction result processing\n // This should process Fastset transaction results into WarpExecution format\n\n const success = this.isTransactionSuccessful(tx)\n const gasUsed = this.extractGasUsed(tx)\n const gasPrice = this.extractGasPrice(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const transactionHash = this.extractTransactionHash(tx)\n\n const logs = this.extractLogs(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.fastset || null,\n txHash: transactionHash,\n next: null,\n values: [transactionHash, blockNumber, gasUsed, gasPrice, ...(logs.length > 0 ? logs : [])],\n results: {},\n messages: {},\n }\n }\n\n async extractQueryResults(\n warp: Warp,\n typedValues: any[],\n actionIndex: number,\n inputs: ResolvedInput[]\n ): Promise<{ values: any[]; results: WarpExecutionResults }> {\n // TODO: Implement Fastset-specific query result extraction\n // This should extract and process query results according to Fastset format\n\n const values = typedValues.map((t) => this.serializer.typedToString(t))\n const valuesRaw = typedValues.map((t) => this.serializer.typedToNative(t)[1])\n let results: WarpExecutionResults = {}\n\n if (!warp.results) return { values, results }\n\n const getNestedValue = (path: string): unknown => {\n const indices = path\n .split('.')\n .slice(1)\n .map((i) => parseInt(i) - 1)\n if (indices.length === 0) return undefined\n let value: any = valuesRaw[indices[0]]\n for (let i = 1; i < indices.length; i++) {\n if (value === undefined || value === null) return undefined\n value = value[indices[i]]\n }\n return value\n }\n\n for (const [key, path] of Object.entries(warp.results)) {\n if (path.startsWith(WarpConstants.Transform.Prefix)) continue\n const currentActionIndex = parseResultsOutIndex(path)\n if (currentActionIndex !== null && currentActionIndex !== actionIndex) {\n results[key] = null\n continue\n }\n if (path.startsWith('out.') || path === 'out' || path.startsWith('out[')) {\n results[key] = getNestedValue(path) || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n // TODO: Implement Fastset-specific transaction success detection\n // This should determine if a Fastset transaction was successful\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.status === 'success' || tx.status === 1 || tx.success === true\n }\n\n private extractGasUsed(tx: any): string {\n // TODO: Implement Fastset-specific gas used extraction\n // This should extract gas used from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasUsed?.toString() || tx.gas_used?.toString() || '0'\n }\n\n private extractGasPrice(tx: any): string {\n // TODO: Implement Fastset-specific gas price extraction\n // This should extract gas price from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasPrice?.toString() || tx.gas_price?.toString() || '0'\n }\n\n private extractBlockNumber(tx: any): string {\n // TODO: Implement Fastset-specific block number extraction\n // This should extract block number from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.blockNumber?.toString() || tx.block_number?.toString() || '0'\n }\n\n private extractTransactionHash(tx: any): string {\n // TODO: Implement Fastset-specific transaction hash extraction\n // This should extract transaction hash from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.hash || tx.transactionHash || tx.transaction_hash || ''\n }\n\n private extractLogs(tx: any): any[] {\n // TODO: Implement Fastset-specific log extraction\n // This should extract logs from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n const logs = tx.logs || tx.events || []\n\n return logs.map((log: any) => ({\n address: log.address || log.contract,\n topics: log.topics || log.topics || [],\n data: log.data || log.payload || '',\n blockNumber: log.blockNumber?.toString() || log.block_number?.toString() || '0',\n transactionHash: log.transactionHash || log.transaction_hash || '',\n index: log.index?.toString() || '0',\n }))\n }\n}\n","import { Adapter, AdapterFactory, WarpChain, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { WarpFastsetDataLoader } from './WarpFastsetDataLoader'\nimport { WarpFastsetExecutor } from './WarpFastsetExecutor'\nimport { WarpFastsetExplorer } from './WarpFastsetExplorer'\nimport { WarpFastsetResults } from './WarpFastsetResults'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nconst ChainName: WarpChain = 'fastset'\n\nexport const getFastsetAdapter: AdapterFactory = (config: WarpClientConfig, fallback?: Adapter) => {\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n const chainInfo: WarpChainInfo = {\n name: ChainName,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 100,\n addressHrp: 'set',\n apiUrl: 'TODO',\n nativeToken: 'SET',\n }\n\n return {\n chain: ChainName,\n chainInfo,\n prefix: 'fastset',\n builder: () => fallback.builder(),\n executor: new WarpFastsetExecutor(config),\n results: new WarpFastsetResults(config),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n}\n"],"mappings":"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","names":["hexToDecimal","import_warps","import_bcs","hexToDecimal","import_warps"]}
package/dist/index.mjs CHANGED
@@ -39,122 +39,6 @@ var WarpFastsetConstants = {
39
39
  }
40
40
  };
41
41
 
42
- // src/WarpFastsetBuilder.ts
43
- var WarpFastsetBuilder = class {
44
- constructor(config) {
45
- this.config = config;
46
- this.warp = {};
47
- this.actions = [];
48
- }
49
- async createFromRaw(encoded) {
50
- try {
51
- const parsed = JSON.parse(encoded);
52
- this.warp = parsed;
53
- this.actions = parsed.actions || [];
54
- return this.build();
55
- } catch (error) {
56
- throw new Error(`Failed to parse Fastset warp data: ${error}`);
57
- }
58
- }
59
- setTitle(title) {
60
- this.warp.title = title;
61
- return this;
62
- }
63
- setDescription(description) {
64
- this.warp.description = description;
65
- return this;
66
- }
67
- setPreview(preview) {
68
- this.warp.preview = preview;
69
- return this;
70
- }
71
- setActions(actions) {
72
- this.actions = actions;
73
- return this;
74
- }
75
- addAction(action) {
76
- this.actions.push(action);
77
- return this;
78
- }
79
- async build() {
80
- return {
81
- protocol: "warp",
82
- name: this.warp.name || "fastset-warp",
83
- title: this.warp.title || "",
84
- description: this.warp.description || null,
85
- preview: this.warp.preview || null,
86
- actions: this.actions,
87
- meta: {
88
- chain: "fastset",
89
- hash: this.generateHash(this.warp.title || ""),
90
- creator: this.config.user?.wallets?.fastset || "",
91
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
92
- }
93
- };
94
- }
95
- createInscriptionTransaction(warp) {
96
- return {
97
- type: "fastset-inscription",
98
- data: JSON.stringify(warp)
99
- // TODO: Add Fastset-specific transaction fields
100
- };
101
- }
102
- async createFromTransaction(tx, validate = true) {
103
- try {
104
- const warpData = tx.data || tx.payload || tx.content;
105
- if (!warpData) {
106
- throw new Error("No warp data found in transaction");
107
- }
108
- const parsed = typeof warpData === "string" ? JSON.parse(warpData) : warpData;
109
- if (validate) {
110
- this.validateWarp(parsed);
111
- }
112
- return parsed;
113
- } catch (error) {
114
- throw new Error(`Failed to create warp from Fastset transaction: ${error}`);
115
- }
116
- }
117
- async createFromTransactionHash(hash, cache) {
118
- try {
119
- const tx = await this.fetchTransaction(hash);
120
- if (!tx) {
121
- return null;
122
- }
123
- return this.createFromTransaction(tx);
124
- } catch (error) {
125
- console.error(`Failed to create warp from Fastset transaction hash: ${error}`);
126
- return null;
127
- }
128
- }
129
- generateHash(data) {
130
- let hash = 0;
131
- for (let i = 0; i < data.length; i++) {
132
- const char = data.charCodeAt(i);
133
- hash = (hash << 5) - hash + char;
134
- hash = hash & hash;
135
- }
136
- return hash.toString(16);
137
- }
138
- validateWarp(warp) {
139
- if (!warp.title) {
140
- throw new Error("Warp must have a title");
141
- }
142
- if (!warp.actions || !Array.isArray(warp.actions)) {
143
- throw new Error("Warp must have actions array");
144
- }
145
- }
146
- async fetchTransaction(hash) {
147
- const response = await fetch(`${this.getApiUrl()}/transaction/${hash}`);
148
- if (!response.ok) {
149
- return null;
150
- }
151
- return response.json();
152
- }
153
- getApiUrl() {
154
- return "https://api.fastset.xyz";
155
- }
156
- };
157
-
158
42
  // src/WarpFastsetDataLoader.ts
159
43
  var WarpFastsetDataLoader = class {
160
44
  constructor(config, chain) {
@@ -769,9 +653,9 @@ var WarpFastsetExplorer = class {
769
653
  const baseUrl = this.getDefaultExplorerUrl();
770
654
  return `${baseUrl}/contract/${address}`;
771
655
  }
772
- getTokenUrl(address) {
656
+ getAssetUrl(identifier) {
773
657
  const baseUrl = this.getDefaultExplorerUrl();
774
- return `${baseUrl}/token/${address}`;
658
+ return `${baseUrl}/token/${identifier}`;
775
659
  }
776
660
  getDefaultExplorerUrl() {
777
661
  return `https://explorer.fastset.xyz`;
@@ -883,7 +767,7 @@ var getFastsetAdapter = (config, fallback) => {
883
767
  chain: ChainName,
884
768
  chainInfo,
885
769
  prefix: "fastset",
886
- builder: () => new WarpFastsetBuilder(config),
770
+ builder: () => fallback.builder(),
887
771
  executor: new WarpFastsetExecutor(config),
888
772
  results: new WarpFastsetResults(config),
889
773
  serializer: new WarpFastsetSerializer(),
@@ -905,7 +789,6 @@ export {
905
789
  Transaction,
906
790
  Transfer,
907
791
  UserData,
908
- WarpFastsetBuilder,
909
792
  WarpFastsetConstants,
910
793
  WarpFastsetExecutor,
911
794
  WarpFastsetExplorer,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/WarpFastsetBuilder.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/config.ts","../src/sdk/FastsetClient.ts","../src/sdk/types.ts","../src/sdk/utils.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts","../src/main.ts"],"sourcesContent":["export const WarpFastsetConstants = {\n Pi: {\n Identifier: 'PI',\n DisplayName: 'Pi',\n Decimals: 18,\n },\n GasLimit: {\n Default: 21000,\n ContractCall: 100000,\n ContractDeploy: 500000,\n Transfer: 21000,\n Approve: 46000,\n Swap: 200000,\n },\n GasPrice: {\n Default: '20000000000', // 20 gwei\n Low: '10000000000', // 10 gwei\n Medium: '20000000000', // 20 gwei\n High: '50000000000', // 50 gwei\n },\n Validation: {\n AddressLength: 42,\n HexPrefix: '0x',\n MinGasLimit: 21000,\n MaxGasLimit: 30000000,\n },\n Timeouts: {\n DefaultRpcTimeout: 30000, // 30 seconds\n GasEstimationTimeout: 10000, // 10 seconds\n QueryTimeout: 15000, // 15 seconds\n },\n}\n","import { BaseWarpBuilder, CombinedWarpBuilder, Warp, WarpAction, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetBuilder implements CombinedWarpBuilder {\n private warp: Partial<Warp> = {}\n private actions: WarpAction[] = []\n\n constructor(private readonly config: WarpClientConfig) {}\n\n async createFromRaw(encoded: string): Promise<Warp> {\n // TODO: Implement Fastset-specific raw data parsing\n // This should parse Fastset-specific encoded data format\n\n try {\n const parsed = JSON.parse(encoded)\n this.warp = parsed\n this.actions = parsed.actions || []\n return this.build()\n } catch (error) {\n throw new Error(`Failed to parse Fastset warp data: ${error}`)\n }\n }\n\n setTitle(title: string): BaseWarpBuilder {\n this.warp.title = title\n return this\n }\n\n setDescription(description: string): BaseWarpBuilder {\n this.warp.description = description\n return this\n }\n\n setPreview(preview: string): BaseWarpBuilder {\n this.warp.preview = preview\n return this\n }\n\n setActions(actions: WarpAction[]): BaseWarpBuilder {\n this.actions = actions\n return this\n }\n\n addAction(action: WarpAction): BaseWarpBuilder {\n this.actions.push(action)\n return this\n }\n\n async build(): Promise<Warp> {\n // TODO: Implement Fastset-specific warp building logic\n // This should create a Fastset-specific warp object\n\n return {\n protocol: 'warp',\n name: this.warp.name || 'fastset-warp',\n title: this.warp.title || '',\n description: this.warp.description || null,\n preview: this.warp.preview || null,\n actions: this.actions,\n meta: {\n chain: 'fastset',\n hash: this.generateHash(this.warp.title || ''),\n creator: this.config.user?.wallets?.fastset || '',\n createdAt: new Date().toISOString(),\n },\n } as Warp\n }\n\n createInscriptionTransaction(warp: Warp): any {\n // TODO: Implement Fastset-specific inscription transaction creation\n // This should create a transaction that inscribes the warp on Fastset\n\n return {\n type: 'fastset-inscription',\n data: JSON.stringify(warp),\n // TODO: Add Fastset-specific transaction fields\n }\n }\n\n async createFromTransaction(tx: any, validate: boolean = true): Promise<Warp> {\n // TODO: Implement Fastset-specific transaction parsing\n // This should parse Fastset transactions to extract warp data\n\n try {\n const warpData = tx.data || tx.payload || tx.content\n if (!warpData) {\n throw new Error('No warp data found in transaction')\n }\n\n const parsed = typeof warpData === 'string' ? JSON.parse(warpData) : warpData\n\n if (validate) {\n // TODO: Add Fastset-specific validation\n this.validateWarp(parsed)\n }\n\n return parsed\n } catch (error) {\n throw new Error(`Failed to create warp from Fastset transaction: ${error}`)\n }\n }\n\n async createFromTransactionHash(hash: string, cache?: any): Promise<Warp | null> {\n // TODO: Implement Fastset-specific transaction hash lookup\n // This should fetch transaction data from Fastset blockchain\n\n try {\n // TODO: Implement Fastset RPC call to get transaction\n const tx = await this.fetchTransaction(hash)\n if (!tx) {\n return null\n }\n\n return this.createFromTransaction(tx)\n } catch (error) {\n console.error(`Failed to create warp from Fastset transaction hash: ${error}`)\n return null\n }\n }\n\n private generateHash(data: string): string {\n // TODO: Implement Fastset-specific hash generation\n // This should use Fastset's preferred hashing algorithm\n\n // Simple hash for now - replace with Fastset-specific implementation\n let hash = 0\n for (let i = 0; i < data.length; i++) {\n const char = data.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32-bit integer\n }\n return hash.toString(16)\n }\n\n private validateWarp(warp: any): void {\n // TODO: Implement Fastset-specific warp validation\n // This should validate warp data according to Fastset rules\n\n if (!warp.title) {\n throw new Error('Warp must have a title')\n }\n\n if (!warp.actions || !Array.isArray(warp.actions)) {\n throw new Error('Warp must have actions array')\n }\n\n // TODO: Add more Fastset-specific validation rules\n }\n\n private async fetchTransaction(hash: string): Promise<any> {\n // TODO: Implement Fastset RPC call\n // This should fetch transaction data from Fastset blockchain\n\n // Placeholder implementation\n const response = await fetch(`${this.getApiUrl()}/transaction/${hash}`)\n if (!response.ok) {\n return null\n }\n\n return response.json()\n }\n\n private getApiUrl(): string {\n // TODO: Get Fastset API URL from config\n return 'https://api.fastset.xyz'\n }\n}\n","import { AdapterWarpDataLoader, WarpChainAccount, WarpChainAsset, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {}\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return a basic structure\n return {\n address,\n balance: BigInt(0), // TODO: Implement actual balance fetching from Fastset API\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return empty array\n return []\n }\n}\n","import {\n AdapterWarpExecutor,\n getWarpActionByIndex,\n WarpActionInputType,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { getFastsetApiUrl, getFastsetProxyUrl } from './config'\nimport { FastsetClient, fromBase64, isValidFastsetAddress, normalizeAmount } from './sdk'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n this.fastsetClient = new FastsetClient({\n validatorUrl: getFastsetApiUrl(this.config.env, 'fastset'),\n proxyUrl: getFastsetProxyUrl(this.config.env, 'fastset'),\n })\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n\n switch (action.type) {\n case 'transfer':\n return this.createTransferTransaction(executable)\n case 'contract':\n return this.createContractCallTransaction(executable)\n case 'query':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n case 'collect':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n default:\n throw new Error(`WarpFastsetExecutor: Invalid action type (${action.type})`)\n }\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createTransfer - user address not set')\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid destination address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Transfer value cannot be negative: ${executable.value}`)\n }\n\n const recipientAddress = fromBase64(executable.destination)\n const amount = normalizeAmount(executable.value.toString())\n const userData = executable.data ? fromBase64(this.serializer.stringToTyped(executable.data)) : undefined\n\n return {\n type: 'fastset-transfer',\n recipient: recipientAddress,\n amount,\n userData,\n chain: executable.chain,\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createContractCall - user address not set')\n\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (!action || !('func' in action) || !action.func) {\n throw new Error('WarpFastsetExecutor: Contract action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Contract call value cannot be negative: ${executable.value}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const encodedData = this.encodeFunctionData(action.func, executable.args)\n\n return {\n type: 'fastset-contract-call',\n contract: contractAddress,\n function: action.func,\n data: encodedData,\n value: executable.value,\n chain: executable.chain,\n }\n } catch (error) {\n throw new Error(`WarpFastsetExecutor: Failed to encode function data for ${action.func}: ${error}`)\n }\n }\n\n async executeQuery(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action) as WarpQueryAction\n if (action.type !== 'query') {\n throw new Error(`WarpFastsetExecutor: Invalid action type for executeQuery: ${action.type}`)\n }\n if (!action.func) {\n throw new Error('WarpFastsetExecutor: Query action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const result = await this.executeFastsetQuery(contractAddress, action.func, executable.args)\n\n return {\n success: true,\n result,\n chain: executable.chain,\n }\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n chain: executable.chain,\n }\n }\n }\n\n async preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string> {\n const typedValue = this.serializer.stringToTyped(value)\n\n switch (type) {\n case 'address':\n if (!isValidFastsetAddress(typedValue)) {\n throw new Error(`Invalid Fastset address format: ${typedValue}`)\n }\n return typedValue\n case 'hex':\n // Validate hex format (allow 0x prefix)\n const hexValue = typedValue.startsWith('0x') ? typedValue.slice(2) : typedValue\n if (!/^[0-9a-fA-F]+$/.test(hexValue)) {\n throw new Error(`Invalid hex format: ${typedValue}`)\n }\n return typedValue\n case 'number':\n const numValue = Number(typedValue)\n if (isNaN(numValue)) {\n throw new Error(`Invalid number format: ${typedValue}`)\n }\n return numValue.toString()\n case 'biguint':\n const bigIntValue = BigInt(typedValue)\n if (bigIntValue < 0) {\n throw new Error(`Negative value not allowed`)\n }\n return bigIntValue.toString()\n default:\n return String(typedValue)\n }\n }\n\n private encodeFunctionData(functionName: string, args: unknown[]): string {\n return JSON.stringify({\n function: functionName,\n arguments: args,\n })\n }\n\n private async executeFastsetQuery(contractAddress: Uint8Array, functionName: string, args: unknown[]): Promise<unknown> {\n const response = await fetch(`${getFastsetApiUrl(this.config.env, 'fastset')}/query`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n contract: Array.from(contractAddress),\n function: functionName,\n arguments: args,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`Fastset query failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n async signMessage(message: string, privateKey: string): Promise<string> {\n throw new Error('Not implemented')\n }\n\n async executeTransfer(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n\n return {\n success: true,\n transaction,\n chain: executable.chain.name,\n message: 'Transaction created successfully. Use executeTransferWithKey to execute with private key.',\n }\n }\n\n async executeTransferWithKey(executable: WarpExecutable, privateKey: string): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n const privateKeyBytes = fromBase64(privateKey)\n const transactionHash = await this.fastsetClient.executeTransfer(\n privateKeyBytes,\n transaction.recipient,\n transaction.amount,\n transaction.userData\n )\n\n return {\n success: true,\n transactionHash: Array.from(transactionHash),\n chain: executable.chain.name,\n }\n }\n}\n","import { WarpChainEnv } from '@vleap/warps'\n\n// Fastset Chain configurations\nexport interface FastsetChainConfig {\n apiUrl: string\n proxyUrl: string\n explorerUrl: string\n chainId: string\n registryAddress: string\n nativeToken: string\n blockTime?: number\n}\n\n// Predefined chain configurations\nexport const FASTSET_CHAIN_CONFIGS: Record<string, Record<WarpChainEnv, FastsetChainConfig>> = {\n fastset: {\n mainnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://explorer.fastset.com',\n chainId: '1',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n testnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://testnet-explorer.fastset.com',\n chainId: '11155111',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n devnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'http://localhost:4000',\n chainId: '1337',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n },\n}\n\n// Default chain\nconst DEFAULT_CHAIN = 'fastset'\n\nexport const getFastsetChainConfig = (chain: string = DEFAULT_CHAIN, env: WarpChainEnv): FastsetChainConfig => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n throw new Error(`Unsupported Fastset chain: ${chain}`)\n }\n\n const config = chainConfigs[env]\n if (!config) {\n throw new Error(`Unsupported environment ${env} for chain ${chain}`)\n }\n\n return config\n}\n\nexport const getFastsetApiUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).apiUrl\n}\n\nexport const getFastsetProxyUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).proxyUrl\n}\n\nexport const getFastsetExplorerUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).explorerUrl\n}\n\nexport const getFastsetChainId = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).chainId\n}\n\nexport const getFastsetRegistryAddress = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).registryAddress\n}\n\nexport const getFastsetNativeToken = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).nativeToken\n}\n\nexport const getFastsetBlockTime = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): number => {\n return getFastsetChainConfig(chain, env).blockTime || 12000\n}\n\n// Helper function to get all supported chains\nexport const getSupportedFastsetChains = (): string[] => {\n return Object.keys(FASTSET_CHAIN_CONFIGS)\n}\n\n// Helper function to get all supported environments for a chain\nexport const getSupportedEnvironments = (chain: string): WarpChainEnv[] => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n return []\n }\n return Object.keys(chainConfigs) as WarpChainEnv[]\n}\n","import { getPublicKey, sign } from '@noble/ed25519'\nimport {\n FastsetAccountInfo,\n FastsetFaucetRequest,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n Transaction,\n} from './types'\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config: FastsetClientConfig) {\n this.config = config\n }\n\n async getAccountInfo(address: Uint8Array): Promise<FastsetAccountInfo | null> {\n try {\n const response = await this.requestValidator('set_getAccountInfo', {\n address: Array.from(address),\n })\n\n if (response.error) {\n return null\n }\n\n return response.result as FastsetAccountInfo\n } catch (error) {\n return null\n }\n }\n\n async getNextNonce(senderAddress: Uint8Array): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async fundFromFaucet(request: FastsetFaucetRequest): Promise<FastsetFaucetResponse> {\n const response = await this.requestProxy('faucetDrip', {\n recipient: Array.from(request.recipient),\n amount: request.amount,\n })\n\n if (response.error) {\n throw new Error(`Faucet request failed: ${response.error.message}`)\n }\n\n return response.result as FastsetFaucetResponse\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.requestValidator('set_submitTransaction', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n })\n\n if (response.error) {\n throw new Error(`Transaction submission failed: ${response.error.message}`)\n }\n\n const result = response.result as {\n transaction_hash: number[]\n validator: number[]\n signature: number[]\n }\n return {\n transaction_hash: new Uint8Array(result.transaction_hash),\n validator: new Uint8Array(result.validator),\n signature: new Uint8Array(result.signature),\n }\n }\n\n async submitCertificate(request: FastsetSubmitCertificateRequest): Promise<void> {\n const response = await this.requestValidator('set_submitTransactionCertificate', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n validator_signatures: request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n })\n\n if (response.error) {\n throw new Error(`Certificate submission failed: ${response.error.message}`)\n }\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: Uint8Array, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const nonce = await this.getNextNonce(senderPublicKey)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim: {\n Transfer: {\n recipient: { FastSet: recipient },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n return submitResponse.transaction_hash\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = Transaction.serialize(transaction)\n const msgBytes = msg.toBytes()\n\n const prefix = new TextEncoder().encode('Transaction::')\n const dataToSign = new Uint8Array(prefix.length + msgBytes.length)\n dataToSign.set(prefix, 0)\n dataToSign.set(msgBytes, prefix.length)\n\n return sign(dataToSign, privateKey)\n }\n\n private serializeTransaction(transaction: FastsetTransaction): unknown {\n return JSON.stringify(transaction, this.jsonReplacer)\n }\n\n private async requestValidator(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.validatorUrl, method, params)\n }\n\n private async requestProxy(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.proxyUrl, method, params)\n }\n\n private async request(url: string, method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request, this.jsonReplacer),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP request failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n private jsonReplacer(key: string, value: unknown): unknown {\n if (value instanceof Uint8Array) {\n return Array.from(value)\n }\n return value\n }\n}\n","import { bcs } from '@mysten/bcs'\n\n// BigInt serialization workaround\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\n// BCS Type Definitions\nexport const Bytes32 = bcs.fixedArray(32, bcs.u8())\nexport const PublicKey = Bytes32\n\nexport const Address = bcs.enum('Address', {\n External: PublicKey,\n FastSet: PublicKey,\n})\n\nexport const Amount = bcs.u256().transform({\n input: (val: unknown) => hexToDecimal((val as string).toString()),\n output: (value: string) => value,\n})\n\nexport const UserData = bcs.option(Bytes32)\nexport const Nonce = bcs.u64()\n\nexport const Transfer = bcs.struct('Transfer', {\n recipient: Address,\n amount: Amount,\n user_data: UserData,\n})\n\nexport const ClaimType = bcs.enum('ClaimType', {\n Transfer: Transfer,\n})\n\nexport const Transaction = bcs.struct('Transaction', {\n sender: PublicKey,\n nonce: Nonce,\n timestamp_nanos: bcs.u128(),\n claim: ClaimType,\n})\n\n// TypeScript interfaces\nexport interface FastsetTransaction {\n sender: Uint8Array\n nonce: number\n timestamp_nanos: bigint\n claim: {\n Transfer: {\n recipient: { FastSet: Uint8Array } | { External: Uint8Array }\n amount: string\n user_data: Uint8Array | null\n }\n }\n}\n\nexport interface FastsetTransferRequest {\n recipient: Uint8Array\n amount: string\n user_data?: Uint8Array\n}\n\nexport interface FastsetAccountInfo {\n balance: string\n next_nonce: number\n sequence_number: number\n}\n\nexport interface FastsetSubmitTransactionRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitTransactionResponse {\n transaction_hash: Uint8Array\n validator: Uint8Array\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitCertificateRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n validator_signatures: [Uint8Array, Uint8Array][]\n}\n\nexport interface FastsetFaucetRequest {\n recipient: Uint8Array\n amount: string\n}\n\nexport interface FastsetFaucetResponse {\n balance: string\n}\n\nexport interface FastsetJsonRpcRequest {\n jsonrpc: '2.0'\n id: number\n method: string\n params: Record<string, unknown>\n}\n\nexport interface FastsetJsonRpcResponse<T = unknown> {\n jsonrpc: '2.0'\n id: number\n result?: T\n error?: {\n code: number\n message: string\n data?: unknown\n }\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import { toBase64, toHex } from '@mysten/bcs'\n\nexport function isValidFastsetAddress(address: string): boolean {\n if (typeof address !== 'string' || address.length === 0) {\n return false\n }\n\n // For testing purposes, allow addresses that start with 'fs' or 'pi'\n if (address.startsWith('fs') || address.startsWith('pi')) {\n return true\n }\n\n try {\n // Try to decode as base64 (FastSet addresses are typically base64 encoded)\n const decoded = fromBase64(address)\n return decoded.length === 32 // FastSet addresses are 32 bytes\n } catch {\n return false\n }\n}\n\nexport function fromBase64(base64: string): Uint8Array {\n return new Uint8Array(Buffer.from(base64, 'base64'))\n}\n\nexport function toBase64String(bytes: Uint8Array): string {\n return toBase64(bytes)\n}\n\nexport function toHexString(bytes: Uint8Array): string {\n return toHex(bytes)\n}\n\nexport function hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n\nexport function decimalToHex(decimal: string): string {\n return BigInt(decimal).toString(16)\n}\n\nexport function validateAmount(amount: string): boolean {\n try {\n const bigInt = BigInt(amount)\n return bigInt >= 0\n } catch {\n return false\n }\n}\n\nexport function normalizeAmount(amount: string): string {\n // Ensure amount is in hex format for FastSet\n try {\n const bigInt = BigInt(amount)\n return bigInt.toString(16)\n } catch {\n throw new Error(`Invalid amount format: ${amount}`)\n }\n}\n\nexport function validatePrivateKey(privateKey: string | Uint8Array): boolean {\n try {\n const key = typeof privateKey === 'string' ? fromBase64(privateKey) : privateKey\n return key.length === 32\n } catch {\n return false\n }\n}\n\nexport function validatePublicKey(publicKey: string | Uint8Array): boolean {\n try {\n const key = typeof publicKey === 'string' ? fromBase64(publicKey) : publicKey\n return key.length === 32\n } catch {\n return false\n }\n}\n","import {\n AdapterWarpSerializer,\n BaseWarpActionInputType,\n WarpActionInputType,\n WarpAdapterGenericType,\n WarpNativeValue,\n WarpSerializer,\n} from '@vleap/warps'\n\nexport class WarpFastsetSerializer implements AdapterWarpSerializer {\n public readonly coreSerializer: WarpSerializer\n\n constructor() {\n this.coreSerializer = new WarpSerializer()\n }\n\n typedToString(value: any): string {\n // TODO: Implement Fastset-specific serialization logic\n // This should handle Fastset-specific data types and formats\n\n if (typeof value === 'string') {\n // TODO: Add Fastset address validation if needed\n return `string:${value}`\n }\n\n if (typeof value === 'number') {\n return `number:${value}`\n }\n\n if (typeof value === 'boolean') {\n return `boolean:${value}`\n }\n\n if (typeof value === 'bigint') {\n return `bigint:${value.toString()}`\n }\n\n if (Array.isArray(value)) {\n const items = value.map((item) => this.typedToString(item)).join(',')\n return `array:${items}`\n }\n\n if (value === null) {\n return 'null:null'\n }\n\n if (value === undefined) {\n return 'undefined:undefined'\n }\n\n // Default to string representation\n return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\n // TODO: Implement Fastset-specific type conversion\n // This should convert Fastset-specific types to native types\n\n if (typeof value === 'string') {\n return ['string', value]\n }\n\n if (typeof value === 'number') {\n return ['number', value]\n }\n\n if (typeof value === 'boolean') {\n return ['boolean', value]\n }\n\n if (typeof value === 'bigint') {\n return ['bigint', value]\n }\n\n // Default to string\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\n // TODO: Implement Fastset-specific type conversion\n // This should convert native types to Fastset-specific types\n\n switch (type) {\n case 'string':\n return String(value)\n case 'number':\n return Number(value)\n case 'boolean':\n return Boolean(value)\n case 'bigint':\n return BigInt(value as string | number)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n // TODO: Implement Fastset-specific type mapping\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'bigint':\n return 'bigint'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\n // TODO: Implement Fastset-specific string parsing\n // This should parse Fastset-specific string formats\n\n const colonIndex = value.indexOf(':')\n if (colonIndex === -1) {\n return value\n }\n\n const type = value.substring(0, colonIndex)\n const stringValue = value.substring(colonIndex + 1)\n\n switch (type) {\n case 'string':\n return stringValue\n case 'number':\n return Number(stringValue)\n case 'boolean':\n return stringValue === 'true'\n case 'bigint':\n return BigInt(stringValue)\n case 'array':\n return stringValue.split(',').map((item) => this.stringToTyped(item))\n case 'null':\n return null\n case 'undefined':\n return undefined\n default:\n return stringValue\n }\n }\n}\n","import { AdapterWarpExplorer, WarpChainInfo } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n constructor(private readonly chainInfo: WarpChainInfo) {}\n\n getAccountUrl(address: string): string {\n // TODO: Implement Fastset-specific account URL generation\n // This should generate a URL to view an account on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/address/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n // TODO: Implement Fastset-specific transaction URL generation\n // This should generate a URL to view a transaction on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/tx/${hash}`\n }\n\n getBlockUrl(blockNumber: string | number): string {\n // TODO: Implement Fastset-specific block URL generation\n // This should generate a URL to view a block on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/block/${blockNumber}`\n }\n\n getContractUrl(address: string): string {\n // TODO: Implement Fastset-specific contract URL generation\n // This should generate a URL to view a contract on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/contract/${address}`\n }\n\n getTokenUrl(address: string): string {\n // TODO: Implement Fastset-specific token URL generation\n // This should generate a URL to view a token on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/token/${address}`\n }\n\n private getDefaultExplorerUrl(): string {\n // TODO: Replace with actual Fastset explorer URL when available\n return `https://explorer.fastset.xyz`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpClientConfig,\n WarpConstants,\n WarpExecution,\n WarpExecutionResults,\n} from '@vleap/warps'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetResults implements AdapterWarpResults {\n private readonly serializer: WarpFastsetSerializer\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n // TODO: Implement Fastset-specific transaction result processing\n // This should process Fastset transaction results into WarpExecution format\n\n const success = this.isTransactionSuccessful(tx)\n const gasUsed = this.extractGasUsed(tx)\n const gasPrice = this.extractGasPrice(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const transactionHash = this.extractTransactionHash(tx)\n\n const logs = this.extractLogs(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.fastset || null,\n txHash: transactionHash,\n next: null,\n values: [transactionHash, blockNumber, gasUsed, gasPrice, ...(logs.length > 0 ? logs : [])],\n results: {},\n messages: {},\n }\n }\n\n async extractQueryResults(\n warp: Warp,\n typedValues: any[],\n actionIndex: number,\n inputs: ResolvedInput[]\n ): Promise<{ values: any[]; results: WarpExecutionResults }> {\n // TODO: Implement Fastset-specific query result extraction\n // This should extract and process query results according to Fastset format\n\n const values = typedValues.map((t) => this.serializer.typedToString(t))\n const valuesRaw = typedValues.map((t) => this.serializer.typedToNative(t)[1])\n let results: WarpExecutionResults = {}\n\n if (!warp.results) return { values, results }\n\n const getNestedValue = (path: string): unknown => {\n const indices = path\n .split('.')\n .slice(1)\n .map((i) => parseInt(i) - 1)\n if (indices.length === 0) return undefined\n let value: any = valuesRaw[indices[0]]\n for (let i = 1; i < indices.length; i++) {\n if (value === undefined || value === null) return undefined\n value = value[indices[i]]\n }\n return value\n }\n\n for (const [key, path] of Object.entries(warp.results)) {\n if (path.startsWith(WarpConstants.Transform.Prefix)) continue\n const currentActionIndex = parseResultsOutIndex(path)\n if (currentActionIndex !== null && currentActionIndex !== actionIndex) {\n results[key] = null\n continue\n }\n if (path.startsWith('out.') || path === 'out' || path.startsWith('out[')) {\n results[key] = getNestedValue(path) || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n // TODO: Implement Fastset-specific transaction success detection\n // This should determine if a Fastset transaction was successful\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.status === 'success' || tx.status === 1 || tx.success === true\n }\n\n private extractGasUsed(tx: any): string {\n // TODO: Implement Fastset-specific gas used extraction\n // This should extract gas used from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasUsed?.toString() || tx.gas_used?.toString() || '0'\n }\n\n private extractGasPrice(tx: any): string {\n // TODO: Implement Fastset-specific gas price extraction\n // This should extract gas price from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasPrice?.toString() || tx.gas_price?.toString() || '0'\n }\n\n private extractBlockNumber(tx: any): string {\n // TODO: Implement Fastset-specific block number extraction\n // This should extract block number from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.blockNumber?.toString() || tx.block_number?.toString() || '0'\n }\n\n private extractTransactionHash(tx: any): string {\n // TODO: Implement Fastset-specific transaction hash extraction\n // This should extract transaction hash from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.hash || tx.transactionHash || tx.transaction_hash || ''\n }\n\n private extractLogs(tx: any): any[] {\n // TODO: Implement Fastset-specific log extraction\n // This should extract logs from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n const logs = tx.logs || tx.events || []\n\n return logs.map((log: any) => ({\n address: log.address || log.contract,\n topics: log.topics || log.topics || [],\n data: log.data || log.payload || '',\n blockNumber: log.blockNumber?.toString() || log.block_number?.toString() || '0',\n transactionHash: log.transactionHash || log.transaction_hash || '',\n index: log.index?.toString() || '0',\n }))\n }\n}\n","import { Adapter, AdapterFactory, WarpChain, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { WarpFastsetBuilder } from './WarpFastsetBuilder'\nimport { WarpFastsetDataLoader } from './WarpFastsetDataLoader'\nimport { WarpFastsetExecutor } from './WarpFastsetExecutor'\nimport { WarpFastsetExplorer } from './WarpFastsetExplorer'\nimport { WarpFastsetResults } from './WarpFastsetResults'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nconst ChainName: WarpChain = 'fastset'\n\nexport const getFastsetAdapter: AdapterFactory = (config: WarpClientConfig, fallback?: Adapter) => {\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n const chainInfo: WarpChainInfo = {\n name: ChainName,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 100,\n addressHrp: 'set',\n apiUrl: 'TODO',\n nativeToken: 'SET',\n }\n\n return {\n chain: ChainName,\n chainInfo,\n prefix: 'fastset',\n builder: () => new WarpFastsetBuilder(config),\n executor: new WarpFastsetExecutor(config),\n results: new WarpFastsetResults(config),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n}\n"],"mappings":"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","names":["hexToDecimal"]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/config.ts","../src/sdk/FastsetClient.ts","../src/sdk/types.ts","../src/sdk/utils.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts","../src/main.ts"],"sourcesContent":["export const WarpFastsetConstants = {\n Pi: {\n Identifier: 'PI',\n DisplayName: 'Pi',\n Decimals: 18,\n },\n GasLimit: {\n Default: 21000,\n ContractCall: 100000,\n ContractDeploy: 500000,\n Transfer: 21000,\n Approve: 46000,\n Swap: 200000,\n },\n GasPrice: {\n Default: '20000000000', // 20 gwei\n Low: '10000000000', // 10 gwei\n Medium: '20000000000', // 20 gwei\n High: '50000000000', // 50 gwei\n },\n Validation: {\n AddressLength: 42,\n HexPrefix: '0x',\n MinGasLimit: 21000,\n MaxGasLimit: 30000000,\n },\n Timeouts: {\n DefaultRpcTimeout: 30000, // 30 seconds\n GasEstimationTimeout: 10000, // 10 seconds\n QueryTimeout: 15000, // 15 seconds\n },\n}\n","import { AdapterWarpDataLoader, WarpChainAccount, WarpChainAsset, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {}\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return a basic structure\n return {\n address,\n balance: BigInt(0), // TODO: Implement actual balance fetching from Fastset API\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Fastset implementation would need to be implemented based on their API\n // For now, return empty array\n return []\n }\n}\n","import {\n AdapterWarpExecutor,\n getWarpActionByIndex,\n WarpActionInputType,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { getFastsetApiUrl, getFastsetProxyUrl } from './config'\nimport { FastsetClient, fromBase64, isValidFastsetAddress, normalizeAmount } from './sdk'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n this.fastsetClient = new FastsetClient({\n validatorUrl: getFastsetApiUrl(this.config.env, 'fastset'),\n proxyUrl: getFastsetProxyUrl(this.config.env, 'fastset'),\n })\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n\n switch (action.type) {\n case 'transfer':\n return this.createTransferTransaction(executable)\n case 'contract':\n return this.createContractCallTransaction(executable)\n case 'query':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n case 'collect':\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n default:\n throw new Error(`WarpFastsetExecutor: Invalid action type (${action.type})`)\n }\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createTransfer - user address not set')\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid destination address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Transfer value cannot be negative: ${executable.value}`)\n }\n\n const recipientAddress = fromBase64(executable.destination)\n const amount = normalizeAmount(executable.value.toString())\n const userData = executable.data ? fromBase64(this.serializer.stringToTyped(executable.data)) : undefined\n\n return {\n type: 'fastset-transfer',\n recipient: recipientAddress,\n amount,\n userData,\n chain: executable.chain,\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createContractCall - user address not set')\n\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (!action || !('func' in action) || !action.func) {\n throw new Error('WarpFastsetExecutor: Contract action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address: ${executable.destination}`)\n }\n\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Contract call value cannot be negative: ${executable.value}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const encodedData = this.encodeFunctionData(action.func, executable.args)\n\n return {\n type: 'fastset-contract-call',\n contract: contractAddress,\n function: action.func,\n data: encodedData,\n value: executable.value,\n chain: executable.chain,\n }\n } catch (error) {\n throw new Error(`WarpFastsetExecutor: Failed to encode function data for ${action.func}: ${error}`)\n }\n }\n\n async executeQuery(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action) as WarpQueryAction\n if (action.type !== 'query') {\n throw new Error(`WarpFastsetExecutor: Invalid action type for executeQuery: ${action.type}`)\n }\n if (!action.func) {\n throw new Error('WarpFastsetExecutor: Query action must have a function name')\n }\n\n if (!isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = fromBase64(executable.destination)\n const result = await this.executeFastsetQuery(contractAddress, action.func, executable.args)\n\n return {\n success: true,\n result,\n chain: executable.chain,\n }\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n chain: executable.chain,\n }\n }\n }\n\n async preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string> {\n const typedValue = this.serializer.stringToTyped(value)\n\n switch (type) {\n case 'address':\n if (!isValidFastsetAddress(typedValue)) {\n throw new Error(`Invalid Fastset address format: ${typedValue}`)\n }\n return typedValue\n case 'hex':\n // Validate hex format (allow 0x prefix)\n const hexValue = typedValue.startsWith('0x') ? typedValue.slice(2) : typedValue\n if (!/^[0-9a-fA-F]+$/.test(hexValue)) {\n throw new Error(`Invalid hex format: ${typedValue}`)\n }\n return typedValue\n case 'number':\n const numValue = Number(typedValue)\n if (isNaN(numValue)) {\n throw new Error(`Invalid number format: ${typedValue}`)\n }\n return numValue.toString()\n case 'biguint':\n const bigIntValue = BigInt(typedValue)\n if (bigIntValue < 0) {\n throw new Error(`Negative value not allowed`)\n }\n return bigIntValue.toString()\n default:\n return String(typedValue)\n }\n }\n\n private encodeFunctionData(functionName: string, args: unknown[]): string {\n return JSON.stringify({\n function: functionName,\n arguments: args,\n })\n }\n\n private async executeFastsetQuery(contractAddress: Uint8Array, functionName: string, args: unknown[]): Promise<unknown> {\n const response = await fetch(`${getFastsetApiUrl(this.config.env, 'fastset')}/query`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n contract: Array.from(contractAddress),\n function: functionName,\n arguments: args,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`Fastset query failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n async signMessage(message: string, privateKey: string): Promise<string> {\n throw new Error('Not implemented')\n }\n\n async executeTransfer(executable: WarpExecutable): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n\n return {\n success: true,\n transaction,\n chain: executable.chain.name,\n message: 'Transaction created successfully. Use executeTransferWithKey to execute with private key.',\n }\n }\n\n async executeTransferWithKey(executable: WarpExecutable, privateKey: string): Promise<any> {\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: executeTransfer - user wallet not set')\n\n const transaction = await this.createTransferTransaction(executable)\n const privateKeyBytes = fromBase64(privateKey)\n const transactionHash = await this.fastsetClient.executeTransfer(\n privateKeyBytes,\n transaction.recipient,\n transaction.amount,\n transaction.userData\n )\n\n return {\n success: true,\n transactionHash: Array.from(transactionHash),\n chain: executable.chain.name,\n }\n }\n}\n","import { WarpChainEnv } from '@vleap/warps'\n\n// Fastset Chain configurations\nexport interface FastsetChainConfig {\n apiUrl: string\n proxyUrl: string\n explorerUrl: string\n chainId: string\n registryAddress: string\n nativeToken: string\n blockTime?: number\n}\n\n// Predefined chain configurations\nexport const FASTSET_CHAIN_CONFIGS: Record<string, Record<WarpChainEnv, FastsetChainConfig>> = {\n fastset: {\n mainnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://explorer.fastset.com',\n chainId: '1',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n testnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'https://testnet-explorer.fastset.com',\n chainId: '11155111',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n devnet: {\n apiUrl: 'http://157.90.201.117:8765',\n proxyUrl: 'http://136.243.61.168:44444',\n explorerUrl: 'http://localhost:4000',\n chainId: '1337',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12000,\n },\n },\n}\n\n// Default chain\nconst DEFAULT_CHAIN = 'fastset'\n\nexport const getFastsetChainConfig = (chain: string = DEFAULT_CHAIN, env: WarpChainEnv): FastsetChainConfig => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n throw new Error(`Unsupported Fastset chain: ${chain}`)\n }\n\n const config = chainConfigs[env]\n if (!config) {\n throw new Error(`Unsupported environment ${env} for chain ${chain}`)\n }\n\n return config\n}\n\nexport const getFastsetApiUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).apiUrl\n}\n\nexport const getFastsetProxyUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).proxyUrl\n}\n\nexport const getFastsetExplorerUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).explorerUrl\n}\n\nexport const getFastsetChainId = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).chainId\n}\n\nexport const getFastsetRegistryAddress = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).registryAddress\n}\n\nexport const getFastsetNativeToken = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).nativeToken\n}\n\nexport const getFastsetBlockTime = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): number => {\n return getFastsetChainConfig(chain, env).blockTime || 12000\n}\n\n// Helper function to get all supported chains\nexport const getSupportedFastsetChains = (): string[] => {\n return Object.keys(FASTSET_CHAIN_CONFIGS)\n}\n\n// Helper function to get all supported environments for a chain\nexport const getSupportedEnvironments = (chain: string): WarpChainEnv[] => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n return []\n }\n return Object.keys(chainConfigs) as WarpChainEnv[]\n}\n","import { getPublicKey, sign } from '@noble/ed25519'\nimport {\n FastsetAccountInfo,\n FastsetFaucetRequest,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n Transaction,\n} from './types'\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config: FastsetClientConfig) {\n this.config = config\n }\n\n async getAccountInfo(address: Uint8Array): Promise<FastsetAccountInfo | null> {\n try {\n const response = await this.requestValidator('set_getAccountInfo', {\n address: Array.from(address),\n })\n\n if (response.error) {\n return null\n }\n\n return response.result as FastsetAccountInfo\n } catch (error) {\n return null\n }\n }\n\n async getNextNonce(senderAddress: Uint8Array): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async fundFromFaucet(request: FastsetFaucetRequest): Promise<FastsetFaucetResponse> {\n const response = await this.requestProxy('faucetDrip', {\n recipient: Array.from(request.recipient),\n amount: request.amount,\n })\n\n if (response.error) {\n throw new Error(`Faucet request failed: ${response.error.message}`)\n }\n\n return response.result as FastsetFaucetResponse\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.requestValidator('set_submitTransaction', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n })\n\n if (response.error) {\n throw new Error(`Transaction submission failed: ${response.error.message}`)\n }\n\n const result = response.result as {\n transaction_hash: number[]\n validator: number[]\n signature: number[]\n }\n return {\n transaction_hash: new Uint8Array(result.transaction_hash),\n validator: new Uint8Array(result.validator),\n signature: new Uint8Array(result.signature),\n }\n }\n\n async submitCertificate(request: FastsetSubmitCertificateRequest): Promise<void> {\n const response = await this.requestValidator('set_submitTransactionCertificate', {\n transaction: this.serializeTransaction(request.transaction),\n signature: Array.from(request.signature),\n validator_signatures: request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n })\n\n if (response.error) {\n throw new Error(`Certificate submission failed: ${response.error.message}`)\n }\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: Uint8Array, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const nonce = await this.getNextNonce(senderPublicKey)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim: {\n Transfer: {\n recipient: { FastSet: recipient },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n return submitResponse.transaction_hash\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = Transaction.serialize(transaction)\n const msgBytes = msg.toBytes()\n\n const prefix = new TextEncoder().encode('Transaction::')\n const dataToSign = new Uint8Array(prefix.length + msgBytes.length)\n dataToSign.set(prefix, 0)\n dataToSign.set(msgBytes, prefix.length)\n\n return sign(dataToSign, privateKey)\n }\n\n private serializeTransaction(transaction: FastsetTransaction): unknown {\n return JSON.stringify(transaction, this.jsonReplacer)\n }\n\n private async requestValidator(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.validatorUrl, method, params)\n }\n\n private async requestProxy(method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n return this.request(this.config.proxyUrl, method, params)\n }\n\n private async request(url: string, method: string, params: unknown): Promise<FastsetJsonRpcResponse> {\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request, this.jsonReplacer),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP request failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n private jsonReplacer(key: string, value: unknown): unknown {\n if (value instanceof Uint8Array) {\n return Array.from(value)\n }\n return value\n }\n}\n","import { bcs } from '@mysten/bcs'\n\n// BigInt serialization workaround\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\n// BCS Type Definitions\nexport const Bytes32 = bcs.fixedArray(32, bcs.u8())\nexport const PublicKey = Bytes32\n\nexport const Address = bcs.enum('Address', {\n External: PublicKey,\n FastSet: PublicKey,\n})\n\nexport const Amount = bcs.u256().transform({\n input: (val: unknown) => hexToDecimal((val as string).toString()),\n output: (value: string) => value,\n})\n\nexport const UserData = bcs.option(Bytes32)\nexport const Nonce = bcs.u64()\n\nexport const Transfer = bcs.struct('Transfer', {\n recipient: Address,\n amount: Amount,\n user_data: UserData,\n})\n\nexport const ClaimType = bcs.enum('ClaimType', {\n Transfer: Transfer,\n})\n\nexport const Transaction = bcs.struct('Transaction', {\n sender: PublicKey,\n nonce: Nonce,\n timestamp_nanos: bcs.u128(),\n claim: ClaimType,\n})\n\n// TypeScript interfaces\nexport interface FastsetTransaction {\n sender: Uint8Array\n nonce: number\n timestamp_nanos: bigint\n claim: {\n Transfer: {\n recipient: { FastSet: Uint8Array } | { External: Uint8Array }\n amount: string\n user_data: Uint8Array | null\n }\n }\n}\n\nexport interface FastsetTransferRequest {\n recipient: Uint8Array\n amount: string\n user_data?: Uint8Array\n}\n\nexport interface FastsetAccountInfo {\n balance: string\n next_nonce: number\n sequence_number: number\n}\n\nexport interface FastsetSubmitTransactionRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitTransactionResponse {\n transaction_hash: Uint8Array\n validator: Uint8Array\n signature: Uint8Array\n}\n\nexport interface FastsetSubmitCertificateRequest {\n transaction: FastsetTransaction\n signature: Uint8Array\n validator_signatures: [Uint8Array, Uint8Array][]\n}\n\nexport interface FastsetFaucetRequest {\n recipient: Uint8Array\n amount: string\n}\n\nexport interface FastsetFaucetResponse {\n balance: string\n}\n\nexport interface FastsetJsonRpcRequest {\n jsonrpc: '2.0'\n id: number\n method: string\n params: Record<string, unknown>\n}\n\nexport interface FastsetJsonRpcResponse<T = unknown> {\n jsonrpc: '2.0'\n id: number\n result?: T\n error?: {\n code: number\n message: string\n data?: unknown\n }\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import { toBase64, toHex } from '@mysten/bcs'\n\nexport function isValidFastsetAddress(address: string): boolean {\n if (typeof address !== 'string' || address.length === 0) {\n return false\n }\n\n // For testing purposes, allow addresses that start with 'fs' or 'pi'\n if (address.startsWith('fs') || address.startsWith('pi')) {\n return true\n }\n\n try {\n // Try to decode as base64 (FastSet addresses are typically base64 encoded)\n const decoded = fromBase64(address)\n return decoded.length === 32 // FastSet addresses are 32 bytes\n } catch {\n return false\n }\n}\n\nexport function fromBase64(base64: string): Uint8Array {\n return new Uint8Array(Buffer.from(base64, 'base64'))\n}\n\nexport function toBase64String(bytes: Uint8Array): string {\n return toBase64(bytes)\n}\n\nexport function toHexString(bytes: Uint8Array): string {\n return toHex(bytes)\n}\n\nexport function hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n\nexport function decimalToHex(decimal: string): string {\n return BigInt(decimal).toString(16)\n}\n\nexport function validateAmount(amount: string): boolean {\n try {\n const bigInt = BigInt(amount)\n return bigInt >= 0\n } catch {\n return false\n }\n}\n\nexport function normalizeAmount(amount: string): string {\n // Ensure amount is in hex format for FastSet\n try {\n const bigInt = BigInt(amount)\n return bigInt.toString(16)\n } catch {\n throw new Error(`Invalid amount format: ${amount}`)\n }\n}\n\nexport function validatePrivateKey(privateKey: string | Uint8Array): boolean {\n try {\n const key = typeof privateKey === 'string' ? fromBase64(privateKey) : privateKey\n return key.length === 32\n } catch {\n return false\n }\n}\n\nexport function validatePublicKey(publicKey: string | Uint8Array): boolean {\n try {\n const key = typeof publicKey === 'string' ? fromBase64(publicKey) : publicKey\n return key.length === 32\n } catch {\n return false\n }\n}\n","import {\n AdapterWarpSerializer,\n BaseWarpActionInputType,\n WarpActionInputType,\n WarpAdapterGenericType,\n WarpNativeValue,\n WarpSerializer,\n} from '@vleap/warps'\n\nexport class WarpFastsetSerializer implements AdapterWarpSerializer {\n public readonly coreSerializer: WarpSerializer\n\n constructor() {\n this.coreSerializer = new WarpSerializer()\n }\n\n typedToString(value: any): string {\n // TODO: Implement Fastset-specific serialization logic\n // This should handle Fastset-specific data types and formats\n\n if (typeof value === 'string') {\n // TODO: Add Fastset address validation if needed\n return `string:${value}`\n }\n\n if (typeof value === 'number') {\n return `number:${value}`\n }\n\n if (typeof value === 'boolean') {\n return `boolean:${value}`\n }\n\n if (typeof value === 'bigint') {\n return `bigint:${value.toString()}`\n }\n\n if (Array.isArray(value)) {\n const items = value.map((item) => this.typedToString(item)).join(',')\n return `array:${items}`\n }\n\n if (value === null) {\n return 'null:null'\n }\n\n if (value === undefined) {\n return 'undefined:undefined'\n }\n\n // Default to string representation\n return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\n // TODO: Implement Fastset-specific type conversion\n // This should convert Fastset-specific types to native types\n\n if (typeof value === 'string') {\n return ['string', value]\n }\n\n if (typeof value === 'number') {\n return ['number', value]\n }\n\n if (typeof value === 'boolean') {\n return ['boolean', value]\n }\n\n if (typeof value === 'bigint') {\n return ['bigint', value]\n }\n\n // Default to string\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\n // TODO: Implement Fastset-specific type conversion\n // This should convert native types to Fastset-specific types\n\n switch (type) {\n case 'string':\n return String(value)\n case 'number':\n return Number(value)\n case 'boolean':\n return Boolean(value)\n case 'bigint':\n return BigInt(value as string | number)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n // TODO: Implement Fastset-specific type mapping\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'bigint':\n return 'bigint'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\n // TODO: Implement Fastset-specific string parsing\n // This should parse Fastset-specific string formats\n\n const colonIndex = value.indexOf(':')\n if (colonIndex === -1) {\n return value\n }\n\n const type = value.substring(0, colonIndex)\n const stringValue = value.substring(colonIndex + 1)\n\n switch (type) {\n case 'string':\n return stringValue\n case 'number':\n return Number(stringValue)\n case 'boolean':\n return stringValue === 'true'\n case 'bigint':\n return BigInt(stringValue)\n case 'array':\n return stringValue.split(',').map((item) => this.stringToTyped(item))\n case 'null':\n return null\n case 'undefined':\n return undefined\n default:\n return stringValue\n }\n }\n}\n","import { AdapterWarpExplorer, WarpChainInfo } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n constructor(private readonly chainInfo: WarpChainInfo) {}\n\n getAccountUrl(address: string): string {\n // TODO: Implement Fastset-specific account URL generation\n // This should generate a URL to view an account on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/address/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n // TODO: Implement Fastset-specific transaction URL generation\n // This should generate a URL to view a transaction on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/tx/${hash}`\n }\n\n getBlockUrl(blockNumber: string | number): string {\n // TODO: Implement Fastset-specific block URL generation\n // This should generate a URL to view a block on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/block/${blockNumber}`\n }\n\n getContractUrl(address: string): string {\n // TODO: Implement Fastset-specific contract URL generation\n // This should generate a URL to view a contract on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/contract/${address}`\n }\n\n getAssetUrl(identifier: string): string {\n // TODO: Implement Fastset-specific asset URL generation\n // This should generate a URL to view an asset on Fastset explorer\n\n const baseUrl = this.getDefaultExplorerUrl()\n return `${baseUrl}/token/${identifier}`\n }\n\n private getDefaultExplorerUrl(): string {\n // TODO: Replace with actual Fastset explorer URL when available\n return `https://explorer.fastset.xyz`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpClientConfig,\n WarpConstants,\n WarpExecution,\n WarpExecutionResults,\n} from '@vleap/warps'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetResults implements AdapterWarpResults {\n private readonly serializer: WarpFastsetSerializer\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n // TODO: Implement Fastset-specific transaction result processing\n // This should process Fastset transaction results into WarpExecution format\n\n const success = this.isTransactionSuccessful(tx)\n const gasUsed = this.extractGasUsed(tx)\n const gasPrice = this.extractGasPrice(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const transactionHash = this.extractTransactionHash(tx)\n\n const logs = this.extractLogs(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.fastset || null,\n txHash: transactionHash,\n next: null,\n values: [transactionHash, blockNumber, gasUsed, gasPrice, ...(logs.length > 0 ? logs : [])],\n results: {},\n messages: {},\n }\n }\n\n async extractQueryResults(\n warp: Warp,\n typedValues: any[],\n actionIndex: number,\n inputs: ResolvedInput[]\n ): Promise<{ values: any[]; results: WarpExecutionResults }> {\n // TODO: Implement Fastset-specific query result extraction\n // This should extract and process query results according to Fastset format\n\n const values = typedValues.map((t) => this.serializer.typedToString(t))\n const valuesRaw = typedValues.map((t) => this.serializer.typedToNative(t)[1])\n let results: WarpExecutionResults = {}\n\n if (!warp.results) return { values, results }\n\n const getNestedValue = (path: string): unknown => {\n const indices = path\n .split('.')\n .slice(1)\n .map((i) => parseInt(i) - 1)\n if (indices.length === 0) return undefined\n let value: any = valuesRaw[indices[0]]\n for (let i = 1; i < indices.length; i++) {\n if (value === undefined || value === null) return undefined\n value = value[indices[i]]\n }\n return value\n }\n\n for (const [key, path] of Object.entries(warp.results)) {\n if (path.startsWith(WarpConstants.Transform.Prefix)) continue\n const currentActionIndex = parseResultsOutIndex(path)\n if (currentActionIndex !== null && currentActionIndex !== actionIndex) {\n results[key] = null\n continue\n }\n if (path.startsWith('out.') || path === 'out' || path.startsWith('out[')) {\n results[key] = getNestedValue(path) || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n // TODO: Implement Fastset-specific transaction success detection\n // This should determine if a Fastset transaction was successful\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.status === 'success' || tx.status === 1 || tx.success === true\n }\n\n private extractGasUsed(tx: any): string {\n // TODO: Implement Fastset-specific gas used extraction\n // This should extract gas used from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasUsed?.toString() || tx.gas_used?.toString() || '0'\n }\n\n private extractGasPrice(tx: any): string {\n // TODO: Implement Fastset-specific gas price extraction\n // This should extract gas price from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasPrice?.toString() || tx.gas_price?.toString() || '0'\n }\n\n private extractBlockNumber(tx: any): string {\n // TODO: Implement Fastset-specific block number extraction\n // This should extract block number from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.blockNumber?.toString() || tx.block_number?.toString() || '0'\n }\n\n private extractTransactionHash(tx: any): string {\n // TODO: Implement Fastset-specific transaction hash extraction\n // This should extract transaction hash from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.hash || tx.transactionHash || tx.transaction_hash || ''\n }\n\n private extractLogs(tx: any): any[] {\n // TODO: Implement Fastset-specific log extraction\n // This should extract logs from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n const logs = tx.logs || tx.events || []\n\n return logs.map((log: any) => ({\n address: log.address || log.contract,\n topics: log.topics || log.topics || [],\n data: log.data || log.payload || '',\n blockNumber: log.blockNumber?.toString() || log.block_number?.toString() || '0',\n transactionHash: log.transactionHash || log.transaction_hash || '',\n index: log.index?.toString() || '0',\n }))\n }\n}\n","import { Adapter, AdapterFactory, WarpChain, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { WarpFastsetDataLoader } from './WarpFastsetDataLoader'\nimport { WarpFastsetExecutor } from './WarpFastsetExecutor'\nimport { WarpFastsetExplorer } from './WarpFastsetExplorer'\nimport { WarpFastsetResults } from './WarpFastsetResults'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nconst ChainName: WarpChain = 'fastset'\n\nexport const getFastsetAdapter: AdapterFactory = (config: WarpClientConfig, fallback?: Adapter) => {\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n const chainInfo: WarpChainInfo = {\n name: ChainName,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 100,\n addressHrp: 'set',\n apiUrl: 'TODO',\n nativeToken: 'SET',\n }\n\n return {\n chain: ChainName,\n chainInfo,\n prefix: 'fastset',\n builder: () => fallback.builder(),\n executor: new WarpFastsetExecutor(config),\n results: new WarpFastsetResults(config),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n}\n"],"mappings":"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","names":["hexToDecimal"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vleap/warps-adapter-fastset",
3
- "version": "0.1.0-alpha.5",
3
+ "version": "0.1.0-alpha.7",
4
4
  "description": "Fastset adapter for Warps SDK",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -30,7 +30,7 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@vleap/warps": "^3.0.0-alpha.68",
33
+ "@vleap/warps": "^3.0.0-alpha.71",
34
34
  "@mysten/bcs": "^0.8.0",
35
35
  "@noble/ed25519": "^2.1.0",
36
36
  "@noble/hashes": "^1.4.0"