@vleap/warps-adapter-fastset 0.1.0-alpha.18 → 0.1.0-alpha.19
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.cts +1 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +8 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WarpChainAsset, AdapterFactory, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable,
|
|
1
|
+
import { WarpChainAsset, AdapterFactory, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, AdapterWarpExplorer, AdapterWarpResults, Warp, WarpExecution, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
|
|
2
2
|
import * as _mysten_bcs from '@mysten/bcs';
|
|
3
3
|
|
|
4
4
|
declare const WarpFastsetConstants: {};
|
|
@@ -328,7 +328,6 @@ declare class WarpFastsetExecutor implements AdapterWarpExecutor {
|
|
|
328
328
|
createTransferTransaction(executable: WarpExecutable): Promise<any>;
|
|
329
329
|
createContractCallTransaction(executable: WarpExecutable): Promise<any>;
|
|
330
330
|
executeQuery(executable: WarpExecutable): Promise<any>;
|
|
331
|
-
preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string>;
|
|
332
331
|
signMessage(message: string, privateKey: string): Promise<string>;
|
|
333
332
|
executeTransfer(executable: WarpExecutable): Promise<any>;
|
|
334
333
|
executeTransferWithKey(executable: WarpExecutable, privateKey: string): Promise<any>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WarpChainAsset, AdapterFactory, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable,
|
|
1
|
+
import { WarpChainAsset, AdapterFactory, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, AdapterWarpExplorer, AdapterWarpResults, Warp, WarpExecution, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
|
|
2
2
|
import * as _mysten_bcs from '@mysten/bcs';
|
|
3
3
|
|
|
4
4
|
declare const WarpFastsetConstants: {};
|
|
@@ -328,7 +328,6 @@ declare class WarpFastsetExecutor implements AdapterWarpExecutor {
|
|
|
328
328
|
createTransferTransaction(executable: WarpExecutable): Promise<any>;
|
|
329
329
|
createContractCallTransaction(executable: WarpExecutable): Promise<any>;
|
|
330
330
|
executeQuery(executable: WarpExecutable): Promise<any>;
|
|
331
|
-
preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string>;
|
|
332
331
|
signMessage(message: string, privateKey: string): Promise<string>;
|
|
333
332
|
executeTransfer(executable: WarpExecutable): Promise<any>;
|
|
334
333
|
executeTransferWithKey(executable: WarpExecutable, privateKey: string): Promise<any>;
|
package/dist/index.js
CHANGED
|
@@ -519,14 +519,7 @@ var WarpFastsetDataLoader = class {
|
|
|
519
519
|
const [account, assetBalances] = await Promise.all([accountReq, assetBalancesReq]);
|
|
520
520
|
const assets = [];
|
|
521
521
|
if (account.balance > 0) {
|
|
522
|
-
assets.push({
|
|
523
|
-
chain: this.chain.name,
|
|
524
|
-
identifier: this.chain.nativeToken?.identifier || "SET",
|
|
525
|
-
name: this.chain.nativeToken?.name || "SET",
|
|
526
|
-
decimals: this.chain.nativeToken?.decimals || 6,
|
|
527
|
-
amount: account.balance,
|
|
528
|
-
logoUrl: this.chain.nativeToken?.logoUrl
|
|
529
|
-
});
|
|
522
|
+
assets.push({ ...this.chain.nativeToken, amount: account.balance });
|
|
530
523
|
}
|
|
531
524
|
if (assetBalances) {
|
|
532
525
|
for (const [assetId, assetBalance] of Object.entries(assetBalances)) {
|
|
@@ -536,10 +529,11 @@ var WarpFastsetDataLoader = class {
|
|
|
536
529
|
assets.push({
|
|
537
530
|
chain: this.chain.name,
|
|
538
531
|
identifier: assetId,
|
|
532
|
+
symbol: "TODO: SYMBOL",
|
|
539
533
|
name: assetBalance.name || assetId,
|
|
540
534
|
decimals: assetBalance.decimals || 6,
|
|
541
|
-
|
|
542
|
-
|
|
535
|
+
logoUrl: assetBalance.logo_url,
|
|
536
|
+
amount
|
|
543
537
|
});
|
|
544
538
|
}
|
|
545
539
|
}
|
|
@@ -613,10 +607,11 @@ var WarpFastsetDataLoader = class {
|
|
|
613
607
|
return {
|
|
614
608
|
chain: this.chain.name,
|
|
615
609
|
identifier: assetId,
|
|
610
|
+
symbol: "TODO: SYMBOL",
|
|
616
611
|
name: assetBalance.name || assetId,
|
|
617
612
|
decimals: assetBalance.decimals || 6,
|
|
618
|
-
|
|
619
|
-
|
|
613
|
+
logoUrl: assetBalance.logo_url,
|
|
614
|
+
amount
|
|
620
615
|
};
|
|
621
616
|
}
|
|
622
617
|
};
|
|
@@ -837,9 +832,6 @@ var WarpFastsetExecutor = class {
|
|
|
837
832
|
};
|
|
838
833
|
}
|
|
839
834
|
}
|
|
840
|
-
async preprocessInput(chain, input, type, value) {
|
|
841
|
-
return value;
|
|
842
|
-
}
|
|
843
835
|
async signMessage(message, privateKey) {
|
|
844
836
|
throw new Error("Not implemented");
|
|
845
837
|
}
|
|
@@ -1029,6 +1021,7 @@ var NativeTokenSet = {
|
|
|
1029
1021
|
chain: import_warps4.WarpChainName.Fastset,
|
|
1030
1022
|
identifier: "SET",
|
|
1031
1023
|
name: "SET",
|
|
1024
|
+
symbol: "SET",
|
|
1032
1025
|
decimals: 6,
|
|
1033
1026
|
logoUrl: "https://vleap.ai/images/tokens/set.svg"
|
|
1034
1027
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/main.ts","../src/sdk/FastsetClient.ts","../src/sdk/TransactionSigner.ts","../src/sdk/types.ts","../src/sdk/Wallet.ts","../src/sdk/Claim.ts","../src/sdk/ed25519-setup.ts","../src/sdk/Transaction.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts"],"sourcesContent":["export * from './constants'\nexport * from './main'\n// Export SDK components\nexport * from './sdk'\n// Export data loader\nexport * from './WarpFastsetDataLoader'\nexport * from './WarpFastsetExecutor'\nexport * from './WarpFastsetExplorer'\nexport * from './WarpFastsetResults'\nexport * from './WarpFastsetSerializer'\n","// FastSet-specific constants (if needed in the future)\nexport const WarpFastsetConstants = {\n // Placeholder for future FastSet-specific constants\n}\n","import { Adapter, AdapterFactory, WarpChainAsset, WarpChainEnv, WarpChainInfo, WarpChainName, 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\nexport const NativeTokenSet: WarpChainAsset = {\n chain: WarpChainName.Fastset,\n identifier: 'SET',\n name: 'SET',\n decimals: 6,\n logoUrl: 'https://vleap.ai/images/tokens/set.svg',\n}\n\nfunction createFastsetAdapter(chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>): AdapterFactory {\n return (config: WarpClientConfig, fallback?: Adapter) => {\n const chainInfo = chainInfos[config.env]\n if (!chainInfo) throw new Error(`FastsetAdapter: chain info not found for chain ${chainName}`)\n\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n return {\n chain: chainName,\n chainInfo,\n prefix: chainPrefix,\n builder: () => fallback.builder(),\n executor: new WarpFastsetExecutor(config, chainInfo),\n results: new WarpFastsetResults(config, chainInfo),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo, config),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n }\n}\n\nexport const getFastsetAdapter: AdapterFactory = createFastsetAdapter(WarpChainName.Fastset, 'fastset', {\n mainnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n testnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Testnet',\n chainId: 'testnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n devnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Devnet',\n chainId: 'devnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n})\n","import { getPublicKey } from '@noble/ed25519'\nimport { TransactionSigner } from './TransactionSigner'\nimport {\n FastsetAccountInfo,\n FastsetAssetBalance,\n FastsetAssetBalances,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n} from './types'\nimport { Wallet } from './Wallet'\n\n// Configure ed25519 library for Node.js environment\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nconst FASTSET_VALIDATOR_URL = 'https://rpc.fastset.xyz'\nconst FASTSET_PROXY_URL = 'http://136.243.61.168:44444'\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config?: FastsetClientConfig) {\n this.config = config || {\n validatorUrl: FASTSET_VALIDATOR_URL,\n proxyUrl: FASTSET_PROXY_URL,\n }\n }\n\n // Generic error handling wrapper for RPC calls\n private async handleRpcCall<T>(\n method: string,\n params: unknown,\n errorMessage: string,\n useProxy = false,\n allowNull = true\n ): Promise<T | null> {\n try {\n const response = useProxy ? await this.requestProxy(method, params) : await this.requestValidator(method, params)\n console.log(`RPC call to ${method} successful:`, response.result)\n return response.result as T\n } catch (error) {\n console.error(`${errorMessage}:`, error)\n if (!allowNull) throw error\n return null\n }\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountInfo | null> {\n const addressBytes = Wallet.decodeBech32Address(address)\n return this.handleRpcCall('set_getAccountInfo', [Array.from(addressBytes)], `Failed to get account info for address ${address}`)\n }\n\n async getNextNonce(senderAddress: string): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async getAssetBalance(accountId: string, assetId: string): Promise<FastsetAssetBalance | null> {\n return this.handleRpcCall(\n 'vsl_getAssetBalance',\n [accountId, assetId],\n `Failed to get asset balance for account ${accountId}, asset ${assetId}`\n )\n }\n\n async getAssetBalances(accountId: string): Promise<FastsetAssetBalances | null> {\n return this.handleRpcCall('vsl_getAssetBalances', [accountId], `Failed to get asset balances for account ${accountId}`)\n }\n\n async fundFromFaucet(recipientAddress: string, amount: string): Promise<FastsetFaucetResponse> {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n return this.handleRpcCall(\n 'faucetDrip',\n [Array.from(recipientBytes), amount],\n `Failed to fund from faucet for address ${recipientAddress}`,\n true,\n false\n ) as Promise<FastsetFaucetResponse>\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.handleRpcCall(\n 'set_submitTransaction',\n [request.transaction, Array.from(request.signature)],\n 'Failed to submit transaction',\n false,\n false\n )\n\n const result = response 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 await this.handleRpcCall(\n 'set_submitTransactionCertificate',\n [\n request.transaction,\n Array.from(request.signature),\n request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n ],\n 'Failed to submit certificate',\n false,\n false\n )\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: string, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n try {\n console.log(`Executing transfer from sender to ${recipient} for amount ${amount}`)\n\n const senderPublicKey = getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const recipientBytes = Wallet.decodeBech32Address(recipient)\n console.log(`Recipient decoded successfully`)\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: recipientBytes },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n console.log('Signing transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Transfer executed successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error(`Failed to execute transfer to ${recipient}:`, error)\n throw error\n }\n }\n\n async submitClaim(senderPrivateKey: Uint8Array, claim: any): Promise<Uint8Array> {\n try {\n console.log('Submitting claim...')\n\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Claim sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim,\n }\n\n console.log('Signing claim transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting claim transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting claim certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Claim submitted successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error('Failed to submit claim:', error)\n throw error\n }\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n return await TransactionSigner.signTransaction(transaction, privateKey)\n }\n\n async getTransactionStatus(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionStatus', [txHash], `Failed to get transaction status for hash ${txHash}`)\n }\n\n async getTransactionInfo(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionInfo', [txHash], `Failed to get transaction info for hash ${txHash}`)\n }\n\n async getNetworkInfo(): Promise<any> {\n return this.handleRpcCall('set_getNetworkInfo', [], 'Failed to get network info')\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 try {\n // Validate parameters before making the request\n if (params !== null && params !== undefined) {\n if (Array.isArray(params)) {\n // For array parameters, ensure all elements are valid\n for (let i = 0; i < params.length; i++) {\n if (params[i] === undefined) {\n throw new Error(`Parameter at index ${i} is undefined`)\n }\n }\n } else if (typeof params === 'object') {\n // For object parameters, ensure no undefined values\n const paramObj = params as Record<string, unknown>\n for (const [key, value] of Object.entries(paramObj)) {\n if (value === undefined) {\n throw new Error(`Parameter '${key}' is undefined`)\n }\n }\n }\n }\n\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n console.log(`Making RPC request to ${method} with params:`, params)\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.status} ${response.statusText}`)\n }\n\n const jsonResponse = await response.json()\n\n if (jsonResponse.error) {\n throw new Error(`RPC error: ${jsonResponse.error.message} (code: ${jsonResponse.error.code})`)\n }\n\n console.log(`RPC request to ${method} successful:`, jsonResponse.result)\n return jsonResponse\n } catch (error) {\n console.error(`Fastset RPC request failed for method ${method}:`, error)\n throw error\n }\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 { sign } from '@noble/ed25519'\nimport { BcsTransaction } from './types'\n\nexport class TransactionSigner {\n static async signTransaction(transaction: any, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = BcsTransaction.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","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 BcsTransaction = 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\nexport interface FastsetAssetBalance {\n asset_id: string\n balance: string\n name?: string\n decimals?: number\n logo_url?: string\n}\n\nexport interface FastsetAssetBalances {\n [assetId: string]: FastsetAssetBalance\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import * as bech32 from 'bech32'\nimport { TransferClaim } from './Claim'\nimport { ed } from './ed25519-setup'\nimport { Transaction } from './Transaction'\nimport { TransactionSigner } from './TransactionSigner'\n\nexport interface WalletConfig {\n privateKeyHex: string\n}\n\nexport interface WalletInfo {\n publicKeyHex: string\n address: string\n}\n\nexport class Wallet {\n public readonly publicKey: Uint8Array\n public readonly publicKeyHex: string\n private readonly privateKey: Uint8Array\n\n constructor(privateKeyHex: string) {\n const cleanPrivateKey = privateKeyHex.replace(/^0x/, '')\n this.privateKey = Buffer.from(cleanPrivateKey, 'hex')\n\n // For now, we'll use a synchronous approach\n this.publicKey = ed.getPublicKey(this.privateKey)\n this.publicKeyHex = Buffer.from(this.publicKey).toString('hex')\n }\n\n toBech32(): string {\n const words = bech32.bech32m.toWords(this.publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n getWalletInfo(): WalletInfo {\n return {\n publicKeyHex: this.publicKeyHex,\n address: this.toBech32(),\n }\n }\n\n createTransferClaim(recipientAddress: string, amount: bigint, assetType: 'native' | 'set' | 'usdc' | string): TransferClaim {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n\n const assetTypeBytes = new TextEncoder().encode(assetType)\n const userData = new Uint8Array(32)\n userData.set(assetTypeBytes.slice(0, 32))\n\n return new TransferClaim(recipientBytes, amount.toString(), userData)\n }\n\n createTransaction(nonce: number, claim: TransferClaim): Transaction {\n return new Transaction(this.publicKey, nonce, claim)\n }\n\n async signTransaction(transaction: Transaction): Promise<Uint8Array> {\n const transactionData = transaction.toTransaction()\n return await TransactionSigner.signTransaction(transactionData, this.privateKey)\n }\n\n static decodeBech32Address(address: string): Uint8Array {\n try {\n const decoded = bech32.bech32m.decode(address)\n return new Uint8Array(bech32.bech32m.fromWords(decoded.words))\n } catch (error) {\n const decoded = bech32.bech32.decode(address)\n return new Uint8Array(bech32.bech32.fromWords(decoded.words))\n }\n }\n\n static encodeBech32Address(publicKey: Uint8Array): string {\n const words = bech32.bech32m.toWords(publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n static fromPrivateKey(privateKeyHex: string): Wallet {\n return new Wallet(privateKeyHex)\n }\n\n static generateNew(): Wallet {\n const privateKey = ed.utils.randomPrivateKey()\n const privateKeyHex = Buffer.from(privateKey).toString('hex')\n return new Wallet(privateKeyHex)\n }\n\n static async fromPrivateKeyFile(filePath: string): Promise<Wallet> {\n const fs = await import('fs/promises')\n const privateKeyHex = (await fs.readFile(filePath, 'utf8')).trim()\n return new Wallet(privateKeyHex)\n }\n}\n","import { FastsetTransaction } from './types'\n\nexport interface ClaimData {\n [key: string]: unknown\n}\n\nexport abstract class Claim {\n abstract readonly type: string\n abstract readonly data: ClaimData\n\n abstract toTransactionData(): unknown\n\n static fromTransaction(transaction: FastsetTransaction): Claim {\n const claimType = Object.keys(transaction.claim)[0]\n const claimData = transaction.claim[claimType as keyof typeof transaction.claim]\n\n switch (claimType) {\n case 'Transfer':\n return TransferClaim.fromData(claimData as any)\n default:\n throw new Error(`Unknown claim type: ${claimType}`)\n }\n }\n}\n\nexport class TransferClaim extends Claim {\n readonly type = 'Transfer'\n readonly data: {\n recipient: Uint8Array\n amount: string\n userData?: Uint8Array\n }\n\n constructor(recipient: Uint8Array, amount: string, userData?: Uint8Array) {\n super()\n this.data = { recipient, amount, userData }\n }\n\n toTransactionData(): unknown {\n return {\n Transfer: {\n recipient: { FastSet: this.data.recipient },\n amount: this.data.amount,\n user_data: this.data.userData ?? null,\n },\n }\n }\n\n static fromData(data: any): TransferClaim {\n const recipient = data.recipient.FastSet || data.recipient.External\n return new TransferClaim(recipient, data.amount, data.user_data)\n }\n\n getRecipient(): Uint8Array {\n return this.data.recipient\n }\n\n getAmount(): string {\n return this.data.amount\n }\n\n getUserData(): Uint8Array | undefined {\n return this.data.userData\n }\n}\n","import * as ed from '@noble/ed25519'\nimport { sha512 } from '@noble/hashes/sha512'\n\n// Configure ed25519 library exactly like the official wallet\nif (ed.etc) {\n // @ts-ignore\n ed.etc.sha512Sync = (...m: Uint8Array[]) => sha512(ed.etc.concatBytes(...m))\n}\n\nexport { ed }\n","import { Claim } from './Claim'\nimport { FastsetTransaction } from './types'\n\nexport interface TransactionOptions {\n timestamp?: bigint\n}\n\nexport class Transaction {\n private sender: Uint8Array\n private nonce: number\n private claim: Claim\n private timestamp: bigint\n\n constructor(sender: Uint8Array, nonce: number, claim: Claim, options: TransactionOptions = {}) {\n this.sender = sender\n this.nonce = nonce\n this.claim = claim\n this.timestamp = options.timestamp ?? BigInt(Date.now()) * 1_000_000n\n }\n\n toTransaction(): FastsetTransaction {\n return {\n sender: this.sender,\n nonce: this.nonce,\n timestamp_nanos: this.timestamp,\n claim: this.claim.toTransactionData() as any,\n }\n }\n\n getSender(): Uint8Array {\n return this.sender\n }\n\n getNonce(): number {\n return this.nonce\n }\n\n getClaim(): Claim {\n return this.claim\n }\n\n getTimestamp(): bigint {\n return this.timestamp\n }\n\n static fromTransaction(transaction: FastsetTransaction): Transaction {\n const claim = Claim.fromTransaction(transaction)\n return new Transaction(transaction.sender, transaction.nonce, claim, { timestamp: transaction.timestamp_nanos })\n }\n}\n","import {\n AdapterWarpDataLoader,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\n\nexport interface FastsetAccountData {\n address: string\n balance: string\n balanceDecimal: number\n nextNonce: number\n sequenceNumber: number\n}\n\nexport interface FastsetTransactionData {\n hash: string\n hashHex: string\n status: string\n details: any\n}\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n private client: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.client = new FastsetClient()\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(0),\n }\n }\n\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(parseInt(accountInfo.balance, 16)),\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Get native token balance and asset balances in parallel\n const accountReq = this.getAccount(address)\n const assetBalancesReq = this.client.getAssetBalances(address)\n const [account, assetBalances] = await Promise.all([accountReq, assetBalancesReq])\n\n const assets: WarpChainAsset[] = []\n\n // Add native token balance\n if (account.balance > 0) {\n assets.push({\n chain: this.chain.name,\n identifier: this.chain.nativeToken?.identifier || 'SET',\n name: this.chain.nativeToken?.name || 'SET',\n decimals: this.chain.nativeToken?.decimals || 6,\n amount: account.balance,\n logoUrl: this.chain.nativeToken?.logoUrl,\n })\n }\n\n // Add other asset balances\n if (assetBalances) {\n for (const [assetId, assetBalance] of Object.entries(assetBalances)) {\n if (assetBalance.balance) {\n const amount = BigInt(assetBalance.balance)\n if (amount > 0) {\n assets.push({\n chain: this.chain.name,\n identifier: assetId,\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n amount,\n logoUrl: assetBalance.logo_url,\n })\n }\n }\n }\n }\n\n return assets\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n return null\n }\n\n async getAction(identifier: string, awaitCompleted = false): Promise<WarpChainAction | null> {\n return null\n }\n\n async getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]> {\n return []\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountData | null> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return null\n }\n\n const balanceDecimal = parseInt(accountInfo.balance, 16)\n\n return {\n address,\n balance: accountInfo.balance,\n balanceDecimal,\n nextNonce: accountInfo.next_nonce,\n sequenceNumber: accountInfo.sequence_number,\n }\n }\n\n async getTransactionInfo(txHash: string): Promise<FastsetTransactionData | null> {\n return {\n hash: txHash,\n hashHex: txHash.startsWith('0x') ? txHash.slice(2) : txHash,\n status: 'submitted',\n details: {\n hash: txHash,\n timestamp: new Date().toISOString(),\n },\n }\n }\n\n async checkTransferStatus(fromAddress: string, toAddress: string, amount: string): Promise<boolean> {\n const fromAccount = await this.getAccountInfo(fromAddress)\n const toAccount = await this.getAccountInfo(toAddress)\n\n if (!fromAccount || !toAccount) {\n return false\n }\n\n const transferAmount = parseInt(amount)\n const fromBalance = fromAccount.balanceDecimal\n\n return fromBalance < transferAmount\n }\n\n async getAccountBalance(address: string): Promise<{ balance: string; balanceDecimal: number } | null> {\n const accountInfo = await this.getAccountInfo(address)\n if (!accountInfo) {\n return null\n }\n\n return {\n balance: accountInfo.balance,\n balanceDecimal: accountInfo.balanceDecimal,\n }\n }\n\n async getAssetBalance(address: string, assetId: string): Promise<WarpChainAsset | null> {\n const assetBalance = await this.client.getAssetBalance(address, assetId)\n\n if (!assetBalance || !assetBalance.balance) {\n return null\n }\n\n const amount = BigInt(assetBalance.balance)\n if (amount === 0n) {\n return null\n }\n\n return {\n chain: this.chain.name,\n identifier: assetId,\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n amount,\n logoUrl: assetBalance.logo_url,\n }\n }\n}\n","import {\n AdapterWarpExecutor,\n getProviderUrl,\n getWarpActionByIndex,\n WarpActionInputType,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n const validatorUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n const proxyUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n this.fastsetClient = new FastsetClient({\n validatorUrl,\n proxyUrl,\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 (!this.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 = this.fromBase64(executable.destination)\n const amount = this.normalizeAmount(executable.value.toString())\n const userData = executable.data ? this.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 (!this.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 = this.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 (!this.isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = this.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 return value\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 = this.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 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 validatorUrl = getProviderUrl(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n const response = await fetch(`${validatorUrl}/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 private 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 const decoded = this.fromBase64(address)\n return decoded.length === 32\n } catch {\n return false\n }\n }\n\n private fromBase64(base64: string): Uint8Array {\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))\n }\n\n private normalizeAmount(amount: string): string {\n return amount.startsWith('0x') ? amount.slice(2) : amount\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 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 `biguint:${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 return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\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 ['biguint', value.toString()]\n }\n\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\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 'biguint':\n return BigInt(value as string | number)\n case 'address':\n return String(value)\n case 'hex':\n return String(value)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'biguint':\n return 'biguint'\n case 'address':\n return 'address'\n case 'hex':\n return 'hex'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\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 'biguint':\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, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n private readonly explorerUrl = 'https://explorer.fastset.xyz'\n\n constructor(\n private readonly _chainInfo: WarpChainInfo,\n private readonly _config?: WarpClientConfig\n ) {}\n\n getAccountUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n return `${this.explorerUrl}/transaction/${hash}`\n }\n\n getAssetUrl(identifier: string): string {\n return `${this.explorerUrl}/asset/${identifier}`\n }\n\n getContractUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpChainInfo,\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(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n const success = this.isTransactionSuccessful(tx)\n const transactionHash = this.extractTransactionHash(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const timestamp = this.extractTimestamp(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.[this.chain.name] || null,\n txHash: transactionHash,\n tx,\n next: null,\n values: [transactionHash, blockNumber, timestamp],\n valuesRaw: [transactionHash, blockNumber, timestamp],\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 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 match = path.match(/^out\\[(\\d+)\\]$/)\n if (match) {\n const index = parseInt(match[1]) - 1\n return valuesRaw[index]\n }\n\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 const value = getNestedValue(path)\n results[key] = value || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs, this.config.transform?.runner) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n if (!tx) return false\n\n if (tx.success === false) return false\n if (tx.success === true) return true\n if (tx.status === 'success') return true\n if (tx.status === 1) return true\n if (tx.result && tx.result.success === true) return true\n\n return false\n }\n\n private extractTransactionHash(tx: any): string {\n if (!tx) return ''\n\n return tx.transaction_hash || tx.transactionHash || tx.hash || (tx.result && tx.result.transaction_hash) || ''\n }\n\n private extractBlockNumber(tx: any): string {\n if (!tx) return '0'\n\n return tx.block_number?.toString() || tx.blockNumber?.toString() || (tx.result && tx.result.block_number?.toString()) || '0'\n }\n\n private extractTimestamp(tx: any): string {\n if (!tx) return '0'\n\n return (\n tx.timestamp?.toString() || tx.timestamp_nanos?.toString() || (tx.result && tx.result.timestamp?.toString()) || Date.now().toString()\n )\n }\n}\n"],"mappings":"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","names":["import_warps","import_ed25519","import_warps","import_warps"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/main.ts","../src/sdk/FastsetClient.ts","../src/sdk/TransactionSigner.ts","../src/sdk/types.ts","../src/sdk/Wallet.ts","../src/sdk/Claim.ts","../src/sdk/ed25519-setup.ts","../src/sdk/Transaction.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts"],"sourcesContent":["export * from './constants'\nexport * from './main'\n// Export SDK components\nexport * from './sdk'\n// Export data loader\nexport * from './WarpFastsetDataLoader'\nexport * from './WarpFastsetExecutor'\nexport * from './WarpFastsetExplorer'\nexport * from './WarpFastsetResults'\nexport * from './WarpFastsetSerializer'\n","// FastSet-specific constants (if needed in the future)\nexport const WarpFastsetConstants = {\n // Placeholder for future FastSet-specific constants\n}\n","import { Adapter, AdapterFactory, WarpChainAsset, WarpChainEnv, WarpChainInfo, WarpChainName, 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\nexport const NativeTokenSet: WarpChainAsset = {\n chain: WarpChainName.Fastset,\n identifier: 'SET',\n name: 'SET',\n symbol: 'SET',\n decimals: 6,\n logoUrl: 'https://vleap.ai/images/tokens/set.svg',\n}\n\nfunction createFastsetAdapter(chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>): AdapterFactory {\n return (config: WarpClientConfig, fallback?: Adapter) => {\n const chainInfo = chainInfos[config.env]\n if (!chainInfo) throw new Error(`FastsetAdapter: chain info not found for chain ${chainName}`)\n\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n return {\n chain: chainName,\n chainInfo,\n prefix: chainPrefix,\n builder: () => fallback.builder(),\n executor: new WarpFastsetExecutor(config, chainInfo),\n results: new WarpFastsetResults(config, chainInfo),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo, config),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n }\n}\n\nexport const getFastsetAdapter: AdapterFactory = createFastsetAdapter(WarpChainName.Fastset, 'fastset', {\n mainnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n testnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Testnet',\n chainId: 'testnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n devnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Devnet',\n chainId: 'devnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n})\n","import { getPublicKey } from '@noble/ed25519'\nimport { TransactionSigner } from './TransactionSigner'\nimport {\n FastsetAccountInfo,\n FastsetAssetBalance,\n FastsetAssetBalances,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n} from './types'\nimport { Wallet } from './Wallet'\n\n// Configure ed25519 library for Node.js environment\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nconst FASTSET_VALIDATOR_URL = 'https://rpc.fastset.xyz'\nconst FASTSET_PROXY_URL = 'http://136.243.61.168:44444'\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config?: FastsetClientConfig) {\n this.config = config || {\n validatorUrl: FASTSET_VALIDATOR_URL,\n proxyUrl: FASTSET_PROXY_URL,\n }\n }\n\n // Generic error handling wrapper for RPC calls\n private async handleRpcCall<T>(\n method: string,\n params: unknown,\n errorMessage: string,\n useProxy = false,\n allowNull = true\n ): Promise<T | null> {\n try {\n const response = useProxy ? await this.requestProxy(method, params) : await this.requestValidator(method, params)\n console.log(`RPC call to ${method} successful:`, response.result)\n return response.result as T\n } catch (error) {\n console.error(`${errorMessage}:`, error)\n if (!allowNull) throw error\n return null\n }\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountInfo | null> {\n const addressBytes = Wallet.decodeBech32Address(address)\n return this.handleRpcCall('set_getAccountInfo', [Array.from(addressBytes)], `Failed to get account info for address ${address}`)\n }\n\n async getNextNonce(senderAddress: string): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async getAssetBalance(accountId: string, assetId: string): Promise<FastsetAssetBalance | null> {\n return this.handleRpcCall(\n 'vsl_getAssetBalance',\n [accountId, assetId],\n `Failed to get asset balance for account ${accountId}, asset ${assetId}`\n )\n }\n\n async getAssetBalances(accountId: string): Promise<FastsetAssetBalances | null> {\n return this.handleRpcCall('vsl_getAssetBalances', [accountId], `Failed to get asset balances for account ${accountId}`)\n }\n\n async fundFromFaucet(recipientAddress: string, amount: string): Promise<FastsetFaucetResponse> {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n return this.handleRpcCall(\n 'faucetDrip',\n [Array.from(recipientBytes), amount],\n `Failed to fund from faucet for address ${recipientAddress}`,\n true,\n false\n ) as Promise<FastsetFaucetResponse>\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.handleRpcCall(\n 'set_submitTransaction',\n [request.transaction, Array.from(request.signature)],\n 'Failed to submit transaction',\n false,\n false\n )\n\n const result = response 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 await this.handleRpcCall(\n 'set_submitTransactionCertificate',\n [\n request.transaction,\n Array.from(request.signature),\n request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n ],\n 'Failed to submit certificate',\n false,\n false\n )\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: string, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n try {\n console.log(`Executing transfer from sender to ${recipient} for amount ${amount}`)\n\n const senderPublicKey = getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const recipientBytes = Wallet.decodeBech32Address(recipient)\n console.log(`Recipient decoded successfully`)\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: recipientBytes },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n console.log('Signing transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Transfer executed successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error(`Failed to execute transfer to ${recipient}:`, error)\n throw error\n }\n }\n\n async submitClaim(senderPrivateKey: Uint8Array, claim: any): Promise<Uint8Array> {\n try {\n console.log('Submitting claim...')\n\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Claim sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim,\n }\n\n console.log('Signing claim transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting claim transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting claim certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Claim submitted successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error('Failed to submit claim:', error)\n throw error\n }\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n return await TransactionSigner.signTransaction(transaction, privateKey)\n }\n\n async getTransactionStatus(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionStatus', [txHash], `Failed to get transaction status for hash ${txHash}`)\n }\n\n async getTransactionInfo(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionInfo', [txHash], `Failed to get transaction info for hash ${txHash}`)\n }\n\n async getNetworkInfo(): Promise<any> {\n return this.handleRpcCall('set_getNetworkInfo', [], 'Failed to get network info')\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 try {\n // Validate parameters before making the request\n if (params !== null && params !== undefined) {\n if (Array.isArray(params)) {\n // For array parameters, ensure all elements are valid\n for (let i = 0; i < params.length; i++) {\n if (params[i] === undefined) {\n throw new Error(`Parameter at index ${i} is undefined`)\n }\n }\n } else if (typeof params === 'object') {\n // For object parameters, ensure no undefined values\n const paramObj = params as Record<string, unknown>\n for (const [key, value] of Object.entries(paramObj)) {\n if (value === undefined) {\n throw new Error(`Parameter '${key}' is undefined`)\n }\n }\n }\n }\n\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n console.log(`Making RPC request to ${method} with params:`, params)\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.status} ${response.statusText}`)\n }\n\n const jsonResponse = await response.json()\n\n if (jsonResponse.error) {\n throw new Error(`RPC error: ${jsonResponse.error.message} (code: ${jsonResponse.error.code})`)\n }\n\n console.log(`RPC request to ${method} successful:`, jsonResponse.result)\n return jsonResponse\n } catch (error) {\n console.error(`Fastset RPC request failed for method ${method}:`, error)\n throw error\n }\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 { sign } from '@noble/ed25519'\nimport { BcsTransaction } from './types'\n\nexport class TransactionSigner {\n static async signTransaction(transaction: any, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = BcsTransaction.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","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 BcsTransaction = 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\nexport interface FastsetAssetBalance {\n asset_id: string\n balance: string\n name?: string\n decimals?: number\n logo_url?: string\n}\n\nexport interface FastsetAssetBalances {\n [assetId: string]: FastsetAssetBalance\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import * as bech32 from 'bech32'\nimport { TransferClaim } from './Claim'\nimport { ed } from './ed25519-setup'\nimport { Transaction } from './Transaction'\nimport { TransactionSigner } from './TransactionSigner'\n\nexport interface WalletConfig {\n privateKeyHex: string\n}\n\nexport interface WalletInfo {\n publicKeyHex: string\n address: string\n}\n\nexport class Wallet {\n public readonly publicKey: Uint8Array\n public readonly publicKeyHex: string\n private readonly privateKey: Uint8Array\n\n constructor(privateKeyHex: string) {\n const cleanPrivateKey = privateKeyHex.replace(/^0x/, '')\n this.privateKey = Buffer.from(cleanPrivateKey, 'hex')\n\n // For now, we'll use a synchronous approach\n this.publicKey = ed.getPublicKey(this.privateKey)\n this.publicKeyHex = Buffer.from(this.publicKey).toString('hex')\n }\n\n toBech32(): string {\n const words = bech32.bech32m.toWords(this.publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n getWalletInfo(): WalletInfo {\n return {\n publicKeyHex: this.publicKeyHex,\n address: this.toBech32(),\n }\n }\n\n createTransferClaim(recipientAddress: string, amount: bigint, assetType: 'native' | 'set' | 'usdc' | string): TransferClaim {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n\n const assetTypeBytes = new TextEncoder().encode(assetType)\n const userData = new Uint8Array(32)\n userData.set(assetTypeBytes.slice(0, 32))\n\n return new TransferClaim(recipientBytes, amount.toString(), userData)\n }\n\n createTransaction(nonce: number, claim: TransferClaim): Transaction {\n return new Transaction(this.publicKey, nonce, claim)\n }\n\n async signTransaction(transaction: Transaction): Promise<Uint8Array> {\n const transactionData = transaction.toTransaction()\n return await TransactionSigner.signTransaction(transactionData, this.privateKey)\n }\n\n static decodeBech32Address(address: string): Uint8Array {\n try {\n const decoded = bech32.bech32m.decode(address)\n return new Uint8Array(bech32.bech32m.fromWords(decoded.words))\n } catch (error) {\n const decoded = bech32.bech32.decode(address)\n return new Uint8Array(bech32.bech32.fromWords(decoded.words))\n }\n }\n\n static encodeBech32Address(publicKey: Uint8Array): string {\n const words = bech32.bech32m.toWords(publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n static fromPrivateKey(privateKeyHex: string): Wallet {\n return new Wallet(privateKeyHex)\n }\n\n static generateNew(): Wallet {\n const privateKey = ed.utils.randomPrivateKey()\n const privateKeyHex = Buffer.from(privateKey).toString('hex')\n return new Wallet(privateKeyHex)\n }\n\n static async fromPrivateKeyFile(filePath: string): Promise<Wallet> {\n const fs = await import('fs/promises')\n const privateKeyHex = (await fs.readFile(filePath, 'utf8')).trim()\n return new Wallet(privateKeyHex)\n }\n}\n","import { FastsetTransaction } from './types'\n\nexport interface ClaimData {\n [key: string]: unknown\n}\n\nexport abstract class Claim {\n abstract readonly type: string\n abstract readonly data: ClaimData\n\n abstract toTransactionData(): unknown\n\n static fromTransaction(transaction: FastsetTransaction): Claim {\n const claimType = Object.keys(transaction.claim)[0]\n const claimData = transaction.claim[claimType as keyof typeof transaction.claim]\n\n switch (claimType) {\n case 'Transfer':\n return TransferClaim.fromData(claimData as any)\n default:\n throw new Error(`Unknown claim type: ${claimType}`)\n }\n }\n}\n\nexport class TransferClaim extends Claim {\n readonly type = 'Transfer'\n readonly data: {\n recipient: Uint8Array\n amount: string\n userData?: Uint8Array\n }\n\n constructor(recipient: Uint8Array, amount: string, userData?: Uint8Array) {\n super()\n this.data = { recipient, amount, userData }\n }\n\n toTransactionData(): unknown {\n return {\n Transfer: {\n recipient: { FastSet: this.data.recipient },\n amount: this.data.amount,\n user_data: this.data.userData ?? null,\n },\n }\n }\n\n static fromData(data: any): TransferClaim {\n const recipient = data.recipient.FastSet || data.recipient.External\n return new TransferClaim(recipient, data.amount, data.user_data)\n }\n\n getRecipient(): Uint8Array {\n return this.data.recipient\n }\n\n getAmount(): string {\n return this.data.amount\n }\n\n getUserData(): Uint8Array | undefined {\n return this.data.userData\n }\n}\n","import * as ed from '@noble/ed25519'\nimport { sha512 } from '@noble/hashes/sha512'\n\n// Configure ed25519 library exactly like the official wallet\nif (ed.etc) {\n // @ts-ignore\n ed.etc.sha512Sync = (...m: Uint8Array[]) => sha512(ed.etc.concatBytes(...m))\n}\n\nexport { ed }\n","import { Claim } from './Claim'\nimport { FastsetTransaction } from './types'\n\nexport interface TransactionOptions {\n timestamp?: bigint\n}\n\nexport class Transaction {\n private sender: Uint8Array\n private nonce: number\n private claim: Claim\n private timestamp: bigint\n\n constructor(sender: Uint8Array, nonce: number, claim: Claim, options: TransactionOptions = {}) {\n this.sender = sender\n this.nonce = nonce\n this.claim = claim\n this.timestamp = options.timestamp ?? BigInt(Date.now()) * 1_000_000n\n }\n\n toTransaction(): FastsetTransaction {\n return {\n sender: this.sender,\n nonce: this.nonce,\n timestamp_nanos: this.timestamp,\n claim: this.claim.toTransactionData() as any,\n }\n }\n\n getSender(): Uint8Array {\n return this.sender\n }\n\n getNonce(): number {\n return this.nonce\n }\n\n getClaim(): Claim {\n return this.claim\n }\n\n getTimestamp(): bigint {\n return this.timestamp\n }\n\n static fromTransaction(transaction: FastsetTransaction): Transaction {\n const claim = Claim.fromTransaction(transaction)\n return new Transaction(transaction.sender, transaction.nonce, claim, { timestamp: transaction.timestamp_nanos })\n }\n}\n","import {\n AdapterWarpDataLoader,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\n\nexport interface FastsetAccountData {\n address: string\n balance: string\n balanceDecimal: number\n nextNonce: number\n sequenceNumber: number\n}\n\nexport interface FastsetTransactionData {\n hash: string\n hashHex: string\n status: string\n details: any\n}\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n private client: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.client = new FastsetClient()\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(0),\n }\n }\n\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(parseInt(accountInfo.balance, 16)),\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Get native token balance and asset balances in parallel\n const accountReq = this.getAccount(address)\n const assetBalancesReq = this.client.getAssetBalances(address)\n const [account, assetBalances] = await Promise.all([accountReq, assetBalancesReq])\n\n const assets: WarpChainAsset[] = []\n\n // Add native token balance\n if (account.balance > 0) {\n assets.push({ ...this.chain.nativeToken, amount: account.balance })\n }\n\n // Add other asset balances\n if (assetBalances) {\n for (const [assetId, assetBalance] of Object.entries(assetBalances)) {\n if (assetBalance.balance) {\n const amount = BigInt(assetBalance.balance)\n if (amount > 0) {\n assets.push({\n chain: this.chain.name,\n identifier: assetId,\n symbol: 'TODO: SYMBOL',\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n logoUrl: assetBalance.logo_url,\n amount,\n })\n }\n }\n }\n }\n\n return assets\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n return null\n }\n\n async getAction(identifier: string, awaitCompleted = false): Promise<WarpChainAction | null> {\n return null\n }\n\n async getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]> {\n return []\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountData | null> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return null\n }\n\n const balanceDecimal = parseInt(accountInfo.balance, 16)\n\n return {\n address,\n balance: accountInfo.balance,\n balanceDecimal,\n nextNonce: accountInfo.next_nonce,\n sequenceNumber: accountInfo.sequence_number,\n }\n }\n\n async getTransactionInfo(txHash: string): Promise<FastsetTransactionData | null> {\n return {\n hash: txHash,\n hashHex: txHash.startsWith('0x') ? txHash.slice(2) : txHash,\n status: 'submitted',\n details: {\n hash: txHash,\n timestamp: new Date().toISOString(),\n },\n }\n }\n\n async checkTransferStatus(fromAddress: string, toAddress: string, amount: string): Promise<boolean> {\n const fromAccount = await this.getAccountInfo(fromAddress)\n const toAccount = await this.getAccountInfo(toAddress)\n\n if (!fromAccount || !toAccount) {\n return false\n }\n\n const transferAmount = parseInt(amount)\n const fromBalance = fromAccount.balanceDecimal\n\n return fromBalance < transferAmount\n }\n\n async getAccountBalance(address: string): Promise<{ balance: string; balanceDecimal: number } | null> {\n const accountInfo = await this.getAccountInfo(address)\n if (!accountInfo) {\n return null\n }\n\n return {\n balance: accountInfo.balance,\n balanceDecimal: accountInfo.balanceDecimal,\n }\n }\n\n async getAssetBalance(address: string, assetId: string): Promise<WarpChainAsset | null> {\n const assetBalance = await this.client.getAssetBalance(address, assetId)\n\n if (!assetBalance || !assetBalance.balance) {\n return null\n }\n\n const amount = BigInt(assetBalance.balance)\n if (amount === 0n) {\n return null\n }\n\n return {\n chain: this.chain.name,\n identifier: assetId,\n symbol: 'TODO: SYMBOL',\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n logoUrl: assetBalance.logo_url,\n amount,\n }\n }\n}\n","import {\n AdapterWarpExecutor,\n getProviderUrl,\n getWarpActionByIndex,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n const validatorUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n const proxyUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n this.fastsetClient = new FastsetClient({\n validatorUrl,\n proxyUrl,\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 (!this.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 = this.fromBase64(executable.destination)\n const amount = this.normalizeAmount(executable.value.toString())\n const userData = executable.data ? this.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 (!this.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 = this.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 (!this.isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = this.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 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 = this.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 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 validatorUrl = getProviderUrl(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n const response = await fetch(`${validatorUrl}/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 private 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 const decoded = this.fromBase64(address)\n return decoded.length === 32\n } catch {\n return false\n }\n }\n\n private fromBase64(base64: string): Uint8Array {\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))\n }\n\n private normalizeAmount(amount: string): string {\n return amount.startsWith('0x') ? amount.slice(2) : amount\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 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 `biguint:${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 return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\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 ['biguint', value.toString()]\n }\n\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\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 'biguint':\n return BigInt(value as string | number)\n case 'address':\n return String(value)\n case 'hex':\n return String(value)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'biguint':\n return 'biguint'\n case 'address':\n return 'address'\n case 'hex':\n return 'hex'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\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 'biguint':\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, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n private readonly explorerUrl = 'https://explorer.fastset.xyz'\n\n constructor(\n private readonly _chainInfo: WarpChainInfo,\n private readonly _config?: WarpClientConfig\n ) {}\n\n getAccountUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n return `${this.explorerUrl}/transaction/${hash}`\n }\n\n getAssetUrl(identifier: string): string {\n return `${this.explorerUrl}/asset/${identifier}`\n }\n\n getContractUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpChainInfo,\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(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n const success = this.isTransactionSuccessful(tx)\n const transactionHash = this.extractTransactionHash(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const timestamp = this.extractTimestamp(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.[this.chain.name] || null,\n txHash: transactionHash,\n tx,\n next: null,\n values: [transactionHash, blockNumber, timestamp],\n valuesRaw: [transactionHash, blockNumber, timestamp],\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 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 match = path.match(/^out\\[(\\d+)\\]$/)\n if (match) {\n const index = parseInt(match[1]) - 1\n return valuesRaw[index]\n }\n\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 const value = getNestedValue(path)\n results[key] = value || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs, this.config.transform?.runner) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n if (!tx) return false\n\n if (tx.success === false) return false\n if (tx.success === true) return true\n if (tx.status === 'success') return true\n if (tx.status === 1) return true\n if (tx.result && tx.result.success === true) return true\n\n return false\n }\n\n private extractTransactionHash(tx: any): string {\n if (!tx) return ''\n\n return tx.transaction_hash || tx.transactionHash || tx.hash || (tx.result && tx.result.transaction_hash) || ''\n }\n\n private extractBlockNumber(tx: any): string {\n if (!tx) return '0'\n\n return tx.block_number?.toString() || tx.blockNumber?.toString() || (tx.result && tx.result.block_number?.toString()) || '0'\n }\n\n private extractTimestamp(tx: any): string {\n if (!tx) return '0'\n\n return (\n tx.timestamp?.toString() || tx.timestamp_nanos?.toString() || (tx.result && tx.result.timestamp?.toString()) || Date.now().toString()\n )\n }\n}\n"],"mappings":"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","names":["import_warps","import_ed25519","import_warps","import_warps"]}
|
package/dist/index.mjs
CHANGED
|
@@ -462,14 +462,7 @@ var WarpFastsetDataLoader = class {
|
|
|
462
462
|
const [account, assetBalances] = await Promise.all([accountReq, assetBalancesReq]);
|
|
463
463
|
const assets = [];
|
|
464
464
|
if (account.balance > 0) {
|
|
465
|
-
assets.push({
|
|
466
|
-
chain: this.chain.name,
|
|
467
|
-
identifier: this.chain.nativeToken?.identifier || "SET",
|
|
468
|
-
name: this.chain.nativeToken?.name || "SET",
|
|
469
|
-
decimals: this.chain.nativeToken?.decimals || 6,
|
|
470
|
-
amount: account.balance,
|
|
471
|
-
logoUrl: this.chain.nativeToken?.logoUrl
|
|
472
|
-
});
|
|
465
|
+
assets.push({ ...this.chain.nativeToken, amount: account.balance });
|
|
473
466
|
}
|
|
474
467
|
if (assetBalances) {
|
|
475
468
|
for (const [assetId, assetBalance] of Object.entries(assetBalances)) {
|
|
@@ -479,10 +472,11 @@ var WarpFastsetDataLoader = class {
|
|
|
479
472
|
assets.push({
|
|
480
473
|
chain: this.chain.name,
|
|
481
474
|
identifier: assetId,
|
|
475
|
+
symbol: "TODO: SYMBOL",
|
|
482
476
|
name: assetBalance.name || assetId,
|
|
483
477
|
decimals: assetBalance.decimals || 6,
|
|
484
|
-
|
|
485
|
-
|
|
478
|
+
logoUrl: assetBalance.logo_url,
|
|
479
|
+
amount
|
|
486
480
|
});
|
|
487
481
|
}
|
|
488
482
|
}
|
|
@@ -556,10 +550,11 @@ var WarpFastsetDataLoader = class {
|
|
|
556
550
|
return {
|
|
557
551
|
chain: this.chain.name,
|
|
558
552
|
identifier: assetId,
|
|
553
|
+
symbol: "TODO: SYMBOL",
|
|
559
554
|
name: assetBalance.name || assetId,
|
|
560
555
|
decimals: assetBalance.decimals || 6,
|
|
561
|
-
|
|
562
|
-
|
|
556
|
+
logoUrl: assetBalance.logo_url,
|
|
557
|
+
amount
|
|
563
558
|
};
|
|
564
559
|
}
|
|
565
560
|
};
|
|
@@ -785,9 +780,6 @@ var WarpFastsetExecutor = class {
|
|
|
785
780
|
};
|
|
786
781
|
}
|
|
787
782
|
}
|
|
788
|
-
async preprocessInput(chain, input, type, value) {
|
|
789
|
-
return value;
|
|
790
|
-
}
|
|
791
783
|
async signMessage(message, privateKey) {
|
|
792
784
|
throw new Error("Not implemented");
|
|
793
785
|
}
|
|
@@ -981,6 +973,7 @@ var NativeTokenSet = {
|
|
|
981
973
|
chain: WarpChainName.Fastset,
|
|
982
974
|
identifier: "SET",
|
|
983
975
|
name: "SET",
|
|
976
|
+
symbol: "SET",
|
|
984
977
|
decimals: 6,
|
|
985
978
|
logoUrl: "https://vleap.ai/images/tokens/set.svg"
|
|
986
979
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/main.ts","../src/sdk/FastsetClient.ts","../src/sdk/TransactionSigner.ts","../src/sdk/types.ts","../src/sdk/Wallet.ts","../src/sdk/Claim.ts","../src/sdk/ed25519-setup.ts","../src/sdk/Transaction.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts"],"sourcesContent":["// FastSet-specific constants (if needed in the future)\nexport const WarpFastsetConstants = {\n // Placeholder for future FastSet-specific constants\n}\n","import { Adapter, AdapterFactory, WarpChainAsset, WarpChainEnv, WarpChainInfo, WarpChainName, 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\nexport const NativeTokenSet: WarpChainAsset = {\n chain: WarpChainName.Fastset,\n identifier: 'SET',\n name: 'SET',\n decimals: 6,\n logoUrl: 'https://vleap.ai/images/tokens/set.svg',\n}\n\nfunction createFastsetAdapter(chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>): AdapterFactory {\n return (config: WarpClientConfig, fallback?: Adapter) => {\n const chainInfo = chainInfos[config.env]\n if (!chainInfo) throw new Error(`FastsetAdapter: chain info not found for chain ${chainName}`)\n\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n return {\n chain: chainName,\n chainInfo,\n prefix: chainPrefix,\n builder: () => fallback.builder(),\n executor: new WarpFastsetExecutor(config, chainInfo),\n results: new WarpFastsetResults(config, chainInfo),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo, config),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n }\n}\n\nexport const getFastsetAdapter: AdapterFactory = createFastsetAdapter(WarpChainName.Fastset, 'fastset', {\n mainnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n testnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Testnet',\n chainId: 'testnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n devnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Devnet',\n chainId: 'devnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n})\n","import { getPublicKey } from '@noble/ed25519'\nimport { TransactionSigner } from './TransactionSigner'\nimport {\n FastsetAccountInfo,\n FastsetAssetBalance,\n FastsetAssetBalances,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n} from './types'\nimport { Wallet } from './Wallet'\n\n// Configure ed25519 library for Node.js environment\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nconst FASTSET_VALIDATOR_URL = 'https://rpc.fastset.xyz'\nconst FASTSET_PROXY_URL = 'http://136.243.61.168:44444'\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config?: FastsetClientConfig) {\n this.config = config || {\n validatorUrl: FASTSET_VALIDATOR_URL,\n proxyUrl: FASTSET_PROXY_URL,\n }\n }\n\n // Generic error handling wrapper for RPC calls\n private async handleRpcCall<T>(\n method: string,\n params: unknown,\n errorMessage: string,\n useProxy = false,\n allowNull = true\n ): Promise<T | null> {\n try {\n const response = useProxy ? await this.requestProxy(method, params) : await this.requestValidator(method, params)\n console.log(`RPC call to ${method} successful:`, response.result)\n return response.result as T\n } catch (error) {\n console.error(`${errorMessage}:`, error)\n if (!allowNull) throw error\n return null\n }\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountInfo | null> {\n const addressBytes = Wallet.decodeBech32Address(address)\n return this.handleRpcCall('set_getAccountInfo', [Array.from(addressBytes)], `Failed to get account info for address ${address}`)\n }\n\n async getNextNonce(senderAddress: string): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async getAssetBalance(accountId: string, assetId: string): Promise<FastsetAssetBalance | null> {\n return this.handleRpcCall(\n 'vsl_getAssetBalance',\n [accountId, assetId],\n `Failed to get asset balance for account ${accountId}, asset ${assetId}`\n )\n }\n\n async getAssetBalances(accountId: string): Promise<FastsetAssetBalances | null> {\n return this.handleRpcCall('vsl_getAssetBalances', [accountId], `Failed to get asset balances for account ${accountId}`)\n }\n\n async fundFromFaucet(recipientAddress: string, amount: string): Promise<FastsetFaucetResponse> {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n return this.handleRpcCall(\n 'faucetDrip',\n [Array.from(recipientBytes), amount],\n `Failed to fund from faucet for address ${recipientAddress}`,\n true,\n false\n ) as Promise<FastsetFaucetResponse>\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.handleRpcCall(\n 'set_submitTransaction',\n [request.transaction, Array.from(request.signature)],\n 'Failed to submit transaction',\n false,\n false\n )\n\n const result = response 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 await this.handleRpcCall(\n 'set_submitTransactionCertificate',\n [\n request.transaction,\n Array.from(request.signature),\n request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n ],\n 'Failed to submit certificate',\n false,\n false\n )\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: string, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n try {\n console.log(`Executing transfer from sender to ${recipient} for amount ${amount}`)\n\n const senderPublicKey = getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const recipientBytes = Wallet.decodeBech32Address(recipient)\n console.log(`Recipient decoded successfully`)\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: recipientBytes },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n console.log('Signing transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Transfer executed successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error(`Failed to execute transfer to ${recipient}:`, error)\n throw error\n }\n }\n\n async submitClaim(senderPrivateKey: Uint8Array, claim: any): Promise<Uint8Array> {\n try {\n console.log('Submitting claim...')\n\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Claim sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim,\n }\n\n console.log('Signing claim transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting claim transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting claim certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Claim submitted successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error('Failed to submit claim:', error)\n throw error\n }\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n return await TransactionSigner.signTransaction(transaction, privateKey)\n }\n\n async getTransactionStatus(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionStatus', [txHash], `Failed to get transaction status for hash ${txHash}`)\n }\n\n async getTransactionInfo(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionInfo', [txHash], `Failed to get transaction info for hash ${txHash}`)\n }\n\n async getNetworkInfo(): Promise<any> {\n return this.handleRpcCall('set_getNetworkInfo', [], 'Failed to get network info')\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 try {\n // Validate parameters before making the request\n if (params !== null && params !== undefined) {\n if (Array.isArray(params)) {\n // For array parameters, ensure all elements are valid\n for (let i = 0; i < params.length; i++) {\n if (params[i] === undefined) {\n throw new Error(`Parameter at index ${i} is undefined`)\n }\n }\n } else if (typeof params === 'object') {\n // For object parameters, ensure no undefined values\n const paramObj = params as Record<string, unknown>\n for (const [key, value] of Object.entries(paramObj)) {\n if (value === undefined) {\n throw new Error(`Parameter '${key}' is undefined`)\n }\n }\n }\n }\n\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n console.log(`Making RPC request to ${method} with params:`, params)\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.status} ${response.statusText}`)\n }\n\n const jsonResponse = await response.json()\n\n if (jsonResponse.error) {\n throw new Error(`RPC error: ${jsonResponse.error.message} (code: ${jsonResponse.error.code})`)\n }\n\n console.log(`RPC request to ${method} successful:`, jsonResponse.result)\n return jsonResponse\n } catch (error) {\n console.error(`Fastset RPC request failed for method ${method}:`, error)\n throw error\n }\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 { sign } from '@noble/ed25519'\nimport { BcsTransaction } from './types'\n\nexport class TransactionSigner {\n static async signTransaction(transaction: any, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = BcsTransaction.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","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 BcsTransaction = 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\nexport interface FastsetAssetBalance {\n asset_id: string\n balance: string\n name?: string\n decimals?: number\n logo_url?: string\n}\n\nexport interface FastsetAssetBalances {\n [assetId: string]: FastsetAssetBalance\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import * as bech32 from 'bech32'\nimport { TransferClaim } from './Claim'\nimport { ed } from './ed25519-setup'\nimport { Transaction } from './Transaction'\nimport { TransactionSigner } from './TransactionSigner'\n\nexport interface WalletConfig {\n privateKeyHex: string\n}\n\nexport interface WalletInfo {\n publicKeyHex: string\n address: string\n}\n\nexport class Wallet {\n public readonly publicKey: Uint8Array\n public readonly publicKeyHex: string\n private readonly privateKey: Uint8Array\n\n constructor(privateKeyHex: string) {\n const cleanPrivateKey = privateKeyHex.replace(/^0x/, '')\n this.privateKey = Buffer.from(cleanPrivateKey, 'hex')\n\n // For now, we'll use a synchronous approach\n this.publicKey = ed.getPublicKey(this.privateKey)\n this.publicKeyHex = Buffer.from(this.publicKey).toString('hex')\n }\n\n toBech32(): string {\n const words = bech32.bech32m.toWords(this.publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n getWalletInfo(): WalletInfo {\n return {\n publicKeyHex: this.publicKeyHex,\n address: this.toBech32(),\n }\n }\n\n createTransferClaim(recipientAddress: string, amount: bigint, assetType: 'native' | 'set' | 'usdc' | string): TransferClaim {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n\n const assetTypeBytes = new TextEncoder().encode(assetType)\n const userData = new Uint8Array(32)\n userData.set(assetTypeBytes.slice(0, 32))\n\n return new TransferClaim(recipientBytes, amount.toString(), userData)\n }\n\n createTransaction(nonce: number, claim: TransferClaim): Transaction {\n return new Transaction(this.publicKey, nonce, claim)\n }\n\n async signTransaction(transaction: Transaction): Promise<Uint8Array> {\n const transactionData = transaction.toTransaction()\n return await TransactionSigner.signTransaction(transactionData, this.privateKey)\n }\n\n static decodeBech32Address(address: string): Uint8Array {\n try {\n const decoded = bech32.bech32m.decode(address)\n return new Uint8Array(bech32.bech32m.fromWords(decoded.words))\n } catch (error) {\n const decoded = bech32.bech32.decode(address)\n return new Uint8Array(bech32.bech32.fromWords(decoded.words))\n }\n }\n\n static encodeBech32Address(publicKey: Uint8Array): string {\n const words = bech32.bech32m.toWords(publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n static fromPrivateKey(privateKeyHex: string): Wallet {\n return new Wallet(privateKeyHex)\n }\n\n static generateNew(): Wallet {\n const privateKey = ed.utils.randomPrivateKey()\n const privateKeyHex = Buffer.from(privateKey).toString('hex')\n return new Wallet(privateKeyHex)\n }\n\n static async fromPrivateKeyFile(filePath: string): Promise<Wallet> {\n const fs = await import('fs/promises')\n const privateKeyHex = (await fs.readFile(filePath, 'utf8')).trim()\n return new Wallet(privateKeyHex)\n }\n}\n","import { FastsetTransaction } from './types'\n\nexport interface ClaimData {\n [key: string]: unknown\n}\n\nexport abstract class Claim {\n abstract readonly type: string\n abstract readonly data: ClaimData\n\n abstract toTransactionData(): unknown\n\n static fromTransaction(transaction: FastsetTransaction): Claim {\n const claimType = Object.keys(transaction.claim)[0]\n const claimData = transaction.claim[claimType as keyof typeof transaction.claim]\n\n switch (claimType) {\n case 'Transfer':\n return TransferClaim.fromData(claimData as any)\n default:\n throw new Error(`Unknown claim type: ${claimType}`)\n }\n }\n}\n\nexport class TransferClaim extends Claim {\n readonly type = 'Transfer'\n readonly data: {\n recipient: Uint8Array\n amount: string\n userData?: Uint8Array\n }\n\n constructor(recipient: Uint8Array, amount: string, userData?: Uint8Array) {\n super()\n this.data = { recipient, amount, userData }\n }\n\n toTransactionData(): unknown {\n return {\n Transfer: {\n recipient: { FastSet: this.data.recipient },\n amount: this.data.amount,\n user_data: this.data.userData ?? null,\n },\n }\n }\n\n static fromData(data: any): TransferClaim {\n const recipient = data.recipient.FastSet || data.recipient.External\n return new TransferClaim(recipient, data.amount, data.user_data)\n }\n\n getRecipient(): Uint8Array {\n return this.data.recipient\n }\n\n getAmount(): string {\n return this.data.amount\n }\n\n getUserData(): Uint8Array | undefined {\n return this.data.userData\n }\n}\n","import * as ed from '@noble/ed25519'\nimport { sha512 } from '@noble/hashes/sha512'\n\n// Configure ed25519 library exactly like the official wallet\nif (ed.etc) {\n // @ts-ignore\n ed.etc.sha512Sync = (...m: Uint8Array[]) => sha512(ed.etc.concatBytes(...m))\n}\n\nexport { ed }\n","import { Claim } from './Claim'\nimport { FastsetTransaction } from './types'\n\nexport interface TransactionOptions {\n timestamp?: bigint\n}\n\nexport class Transaction {\n private sender: Uint8Array\n private nonce: number\n private claim: Claim\n private timestamp: bigint\n\n constructor(sender: Uint8Array, nonce: number, claim: Claim, options: TransactionOptions = {}) {\n this.sender = sender\n this.nonce = nonce\n this.claim = claim\n this.timestamp = options.timestamp ?? BigInt(Date.now()) * 1_000_000n\n }\n\n toTransaction(): FastsetTransaction {\n return {\n sender: this.sender,\n nonce: this.nonce,\n timestamp_nanos: this.timestamp,\n claim: this.claim.toTransactionData() as any,\n }\n }\n\n getSender(): Uint8Array {\n return this.sender\n }\n\n getNonce(): number {\n return this.nonce\n }\n\n getClaim(): Claim {\n return this.claim\n }\n\n getTimestamp(): bigint {\n return this.timestamp\n }\n\n static fromTransaction(transaction: FastsetTransaction): Transaction {\n const claim = Claim.fromTransaction(transaction)\n return new Transaction(transaction.sender, transaction.nonce, claim, { timestamp: transaction.timestamp_nanos })\n }\n}\n","import {\n AdapterWarpDataLoader,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\n\nexport interface FastsetAccountData {\n address: string\n balance: string\n balanceDecimal: number\n nextNonce: number\n sequenceNumber: number\n}\n\nexport interface FastsetTransactionData {\n hash: string\n hashHex: string\n status: string\n details: any\n}\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n private client: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.client = new FastsetClient()\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(0),\n }\n }\n\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(parseInt(accountInfo.balance, 16)),\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Get native token balance and asset balances in parallel\n const accountReq = this.getAccount(address)\n const assetBalancesReq = this.client.getAssetBalances(address)\n const [account, assetBalances] = await Promise.all([accountReq, assetBalancesReq])\n\n const assets: WarpChainAsset[] = []\n\n // Add native token balance\n if (account.balance > 0) {\n assets.push({\n chain: this.chain.name,\n identifier: this.chain.nativeToken?.identifier || 'SET',\n name: this.chain.nativeToken?.name || 'SET',\n decimals: this.chain.nativeToken?.decimals || 6,\n amount: account.balance,\n logoUrl: this.chain.nativeToken?.logoUrl,\n })\n }\n\n // Add other asset balances\n if (assetBalances) {\n for (const [assetId, assetBalance] of Object.entries(assetBalances)) {\n if (assetBalance.balance) {\n const amount = BigInt(assetBalance.balance)\n if (amount > 0) {\n assets.push({\n chain: this.chain.name,\n identifier: assetId,\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n amount,\n logoUrl: assetBalance.logo_url,\n })\n }\n }\n }\n }\n\n return assets\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n return null\n }\n\n async getAction(identifier: string, awaitCompleted = false): Promise<WarpChainAction | null> {\n return null\n }\n\n async getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]> {\n return []\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountData | null> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return null\n }\n\n const balanceDecimal = parseInt(accountInfo.balance, 16)\n\n return {\n address,\n balance: accountInfo.balance,\n balanceDecimal,\n nextNonce: accountInfo.next_nonce,\n sequenceNumber: accountInfo.sequence_number,\n }\n }\n\n async getTransactionInfo(txHash: string): Promise<FastsetTransactionData | null> {\n return {\n hash: txHash,\n hashHex: txHash.startsWith('0x') ? txHash.slice(2) : txHash,\n status: 'submitted',\n details: {\n hash: txHash,\n timestamp: new Date().toISOString(),\n },\n }\n }\n\n async checkTransferStatus(fromAddress: string, toAddress: string, amount: string): Promise<boolean> {\n const fromAccount = await this.getAccountInfo(fromAddress)\n const toAccount = await this.getAccountInfo(toAddress)\n\n if (!fromAccount || !toAccount) {\n return false\n }\n\n const transferAmount = parseInt(amount)\n const fromBalance = fromAccount.balanceDecimal\n\n return fromBalance < transferAmount\n }\n\n async getAccountBalance(address: string): Promise<{ balance: string; balanceDecimal: number } | null> {\n const accountInfo = await this.getAccountInfo(address)\n if (!accountInfo) {\n return null\n }\n\n return {\n balance: accountInfo.balance,\n balanceDecimal: accountInfo.balanceDecimal,\n }\n }\n\n async getAssetBalance(address: string, assetId: string): Promise<WarpChainAsset | null> {\n const assetBalance = await this.client.getAssetBalance(address, assetId)\n\n if (!assetBalance || !assetBalance.balance) {\n return null\n }\n\n const amount = BigInt(assetBalance.balance)\n if (amount === 0n) {\n return null\n }\n\n return {\n chain: this.chain.name,\n identifier: assetId,\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n amount,\n logoUrl: assetBalance.logo_url,\n }\n }\n}\n","import {\n AdapterWarpExecutor,\n getProviderUrl,\n getWarpActionByIndex,\n WarpActionInputType,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n const validatorUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n const proxyUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n this.fastsetClient = new FastsetClient({\n validatorUrl,\n proxyUrl,\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 (!this.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 = this.fromBase64(executable.destination)\n const amount = this.normalizeAmount(executable.value.toString())\n const userData = executable.data ? this.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 (!this.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 = this.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 (!this.isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = this.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 return value\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 = this.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 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 validatorUrl = getProviderUrl(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n const response = await fetch(`${validatorUrl}/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 private 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 const decoded = this.fromBase64(address)\n return decoded.length === 32\n } catch {\n return false\n }\n }\n\n private fromBase64(base64: string): Uint8Array {\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))\n }\n\n private normalizeAmount(amount: string): string {\n return amount.startsWith('0x') ? amount.slice(2) : amount\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 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 `biguint:${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 return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\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 ['biguint', value.toString()]\n }\n\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\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 'biguint':\n return BigInt(value as string | number)\n case 'address':\n return String(value)\n case 'hex':\n return String(value)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'biguint':\n return 'biguint'\n case 'address':\n return 'address'\n case 'hex':\n return 'hex'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\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 'biguint':\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, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n private readonly explorerUrl = 'https://explorer.fastset.xyz'\n\n constructor(\n private readonly _chainInfo: WarpChainInfo,\n private readonly _config?: WarpClientConfig\n ) {}\n\n getAccountUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n return `${this.explorerUrl}/transaction/${hash}`\n }\n\n getAssetUrl(identifier: string): string {\n return `${this.explorerUrl}/asset/${identifier}`\n }\n\n getContractUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpChainInfo,\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(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n const success = this.isTransactionSuccessful(tx)\n const transactionHash = this.extractTransactionHash(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const timestamp = this.extractTimestamp(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.[this.chain.name] || null,\n txHash: transactionHash,\n tx,\n next: null,\n values: [transactionHash, blockNumber, timestamp],\n valuesRaw: [transactionHash, blockNumber, timestamp],\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 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 match = path.match(/^out\\[(\\d+)\\]$/)\n if (match) {\n const index = parseInt(match[1]) - 1\n return valuesRaw[index]\n }\n\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 const value = getNestedValue(path)\n results[key] = value || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs, this.config.transform?.runner) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n if (!tx) return false\n\n if (tx.success === false) return false\n if (tx.success === true) return true\n if (tx.status === 'success') return true\n if (tx.status === 1) return true\n if (tx.result && tx.result.success === true) return true\n\n return false\n }\n\n private extractTransactionHash(tx: any): string {\n if (!tx) return ''\n\n return tx.transaction_hash || tx.transactionHash || tx.hash || (tx.result && tx.result.transaction_hash) || ''\n }\n\n private extractBlockNumber(tx: any): string {\n if (!tx) return '0'\n\n return tx.block_number?.toString() || tx.blockNumber?.toString() || (tx.result && tx.result.block_number?.toString()) || '0'\n }\n\n private extractTimestamp(tx: any): string {\n if (!tx) return '0'\n\n return (\n tx.timestamp?.toString() || tx.timestamp_nanos?.toString() || (tx.result && tx.result.timestamp?.toString()) || Date.now().toString()\n )\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/main.ts","../src/sdk/FastsetClient.ts","../src/sdk/TransactionSigner.ts","../src/sdk/types.ts","../src/sdk/Wallet.ts","../src/sdk/Claim.ts","../src/sdk/ed25519-setup.ts","../src/sdk/Transaction.ts","../src/WarpFastsetDataLoader.ts","../src/WarpFastsetExecutor.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts"],"sourcesContent":["// FastSet-specific constants (if needed in the future)\nexport const WarpFastsetConstants = {\n // Placeholder for future FastSet-specific constants\n}\n","import { Adapter, AdapterFactory, WarpChainAsset, WarpChainEnv, WarpChainInfo, WarpChainName, 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\nexport const NativeTokenSet: WarpChainAsset = {\n chain: WarpChainName.Fastset,\n identifier: 'SET',\n name: 'SET',\n symbol: 'SET',\n decimals: 6,\n logoUrl: 'https://vleap.ai/images/tokens/set.svg',\n}\n\nfunction createFastsetAdapter(chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>): AdapterFactory {\n return (config: WarpClientConfig, fallback?: Adapter) => {\n const chainInfo = chainInfos[config.env]\n if (!chainInfo) throw new Error(`FastsetAdapter: chain info not found for chain ${chainName}`)\n\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n return {\n chain: chainName,\n chainInfo,\n prefix: chainPrefix,\n builder: () => fallback.builder(),\n executor: new WarpFastsetExecutor(config, chainInfo),\n results: new WarpFastsetResults(config, chainInfo),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: new WarpFastsetExplorer(chainInfo, config),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpFastsetDataLoader(config, chainInfo),\n }\n }\n}\n\nexport const getFastsetAdapter: AdapterFactory = createFastsetAdapter(WarpChainName.Fastset, 'fastset', {\n mainnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet',\n chainId: '1',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n testnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Testnet',\n chainId: 'testnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n devnet: {\n name: WarpChainName.Fastset,\n displayName: 'FastSet Devnet',\n chainId: 'devnet',\n blockTime: 1000,\n addressHrp: 'set',\n defaultApiUrl: 'https://rpc.fastset.xyz',\n nativeToken: NativeTokenSet,\n },\n})\n","import { getPublicKey } from '@noble/ed25519'\nimport { TransactionSigner } from './TransactionSigner'\nimport {\n FastsetAccountInfo,\n FastsetAssetBalance,\n FastsetAssetBalances,\n FastsetFaucetResponse,\n FastsetJsonRpcRequest,\n FastsetJsonRpcResponse,\n FastsetSubmitCertificateRequest,\n FastsetSubmitTransactionRequest,\n FastsetSubmitTransactionResponse,\n FastsetTransaction,\n} from './types'\nimport { Wallet } from './Wallet'\n\n// Configure ed25519 library for Node.js environment\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\nexport interface FastsetClientConfig {\n validatorUrl: string\n proxyUrl: string\n}\n\nconst FASTSET_VALIDATOR_URL = 'https://rpc.fastset.xyz'\nconst FASTSET_PROXY_URL = 'http://136.243.61.168:44444'\n\nexport class FastsetClient {\n private config: FastsetClientConfig\n\n constructor(config?: FastsetClientConfig) {\n this.config = config || {\n validatorUrl: FASTSET_VALIDATOR_URL,\n proxyUrl: FASTSET_PROXY_URL,\n }\n }\n\n // Generic error handling wrapper for RPC calls\n private async handleRpcCall<T>(\n method: string,\n params: unknown,\n errorMessage: string,\n useProxy = false,\n allowNull = true\n ): Promise<T | null> {\n try {\n const response = useProxy ? await this.requestProxy(method, params) : await this.requestValidator(method, params)\n console.log(`RPC call to ${method} successful:`, response.result)\n return response.result as T\n } catch (error) {\n console.error(`${errorMessage}:`, error)\n if (!allowNull) throw error\n return null\n }\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountInfo | null> {\n const addressBytes = Wallet.decodeBech32Address(address)\n return this.handleRpcCall('set_getAccountInfo', [Array.from(addressBytes)], `Failed to get account info for address ${address}`)\n }\n\n async getNextNonce(senderAddress: string): Promise<number> {\n const accountInfo = await this.getAccountInfo(senderAddress)\n return accountInfo?.next_nonce ?? 0\n }\n\n async getAssetBalance(accountId: string, assetId: string): Promise<FastsetAssetBalance | null> {\n return this.handleRpcCall(\n 'vsl_getAssetBalance',\n [accountId, assetId],\n `Failed to get asset balance for account ${accountId}, asset ${assetId}`\n )\n }\n\n async getAssetBalances(accountId: string): Promise<FastsetAssetBalances | null> {\n return this.handleRpcCall('vsl_getAssetBalances', [accountId], `Failed to get asset balances for account ${accountId}`)\n }\n\n async fundFromFaucet(recipientAddress: string, amount: string): Promise<FastsetFaucetResponse> {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n return this.handleRpcCall(\n 'faucetDrip',\n [Array.from(recipientBytes), amount],\n `Failed to fund from faucet for address ${recipientAddress}`,\n true,\n false\n ) as Promise<FastsetFaucetResponse>\n }\n\n async submitTransaction(request: FastsetSubmitTransactionRequest): Promise<FastsetSubmitTransactionResponse> {\n const response = await this.handleRpcCall(\n 'set_submitTransaction',\n [request.transaction, Array.from(request.signature)],\n 'Failed to submit transaction',\n false,\n false\n )\n\n const result = response 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 await this.handleRpcCall(\n 'set_submitTransactionCertificate',\n [\n request.transaction,\n Array.from(request.signature),\n request.validator_signatures.map(([validator, signature]) => [Array.from(validator), Array.from(signature)]),\n ],\n 'Failed to submit certificate',\n false,\n false\n )\n }\n\n async executeTransfer(senderPrivateKey: Uint8Array, recipient: string, amount: string, userData?: Uint8Array): Promise<Uint8Array> {\n try {\n console.log(`Executing transfer from sender to ${recipient} for amount ${amount}`)\n\n const senderPublicKey = getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const recipientBytes = Wallet.decodeBech32Address(recipient)\n console.log(`Recipient decoded successfully`)\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: recipientBytes },\n amount,\n user_data: userData ?? null,\n },\n },\n }\n\n console.log('Signing transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Transfer executed successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error(`Failed to execute transfer to ${recipient}:`, error)\n throw error\n }\n }\n\n async submitClaim(senderPrivateKey: Uint8Array, claim: any): Promise<Uint8Array> {\n try {\n console.log('Submitting claim...')\n\n const senderPublicKey = await getPublicKey(senderPrivateKey)\n const senderAddress = Wallet.encodeBech32Address(senderPublicKey)\n console.log(`Claim sender address: ${senderAddress}`)\n\n const nonce = await this.getNextNonce(senderAddress)\n console.log(`Using nonce: ${nonce}`)\n\n const transaction: FastsetTransaction = {\n sender: senderPublicKey,\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim,\n }\n\n console.log('Signing claim transaction...')\n const signature = await this.signTransaction(transaction, senderPrivateKey)\n\n console.log('Submitting claim transaction...')\n const submitResponse = await this.submitTransaction({\n transaction,\n signature,\n })\n\n console.log('Submitting claim certificate...')\n await this.submitCertificate({\n transaction,\n signature,\n validator_signatures: [[submitResponse.validator, submitResponse.signature]],\n })\n\n console.log(`Claim submitted successfully. Transaction hash: ${submitResponse.transaction_hash}`)\n return submitResponse.transaction_hash\n } catch (error) {\n console.error('Failed to submit claim:', error)\n throw error\n }\n }\n\n async signTransaction(transaction: FastsetTransaction, privateKey: Uint8Array): Promise<Uint8Array> {\n return await TransactionSigner.signTransaction(transaction, privateKey)\n }\n\n async getTransactionStatus(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionStatus', [txHash], `Failed to get transaction status for hash ${txHash}`)\n }\n\n async getTransactionInfo(txHash: string): Promise<any> {\n return this.handleRpcCall('set_getTransactionInfo', [txHash], `Failed to get transaction info for hash ${txHash}`)\n }\n\n async getNetworkInfo(): Promise<any> {\n return this.handleRpcCall('set_getNetworkInfo', [], 'Failed to get network info')\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 try {\n // Validate parameters before making the request\n if (params !== null && params !== undefined) {\n if (Array.isArray(params)) {\n // For array parameters, ensure all elements are valid\n for (let i = 0; i < params.length; i++) {\n if (params[i] === undefined) {\n throw new Error(`Parameter at index ${i} is undefined`)\n }\n }\n } else if (typeof params === 'object') {\n // For object parameters, ensure no undefined values\n const paramObj = params as Record<string, unknown>\n for (const [key, value] of Object.entries(paramObj)) {\n if (value === undefined) {\n throw new Error(`Parameter '${key}' is undefined`)\n }\n }\n }\n }\n\n const request: FastsetJsonRpcRequest = {\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params as Record<string, unknown>,\n }\n\n console.log(`Making RPC request to ${method} with params:`, params)\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.status} ${response.statusText}`)\n }\n\n const jsonResponse = await response.json()\n\n if (jsonResponse.error) {\n throw new Error(`RPC error: ${jsonResponse.error.message} (code: ${jsonResponse.error.code})`)\n }\n\n console.log(`RPC request to ${method} successful:`, jsonResponse.result)\n return jsonResponse\n } catch (error) {\n console.error(`Fastset RPC request failed for method ${method}:`, error)\n throw error\n }\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 { sign } from '@noble/ed25519'\nimport { BcsTransaction } from './types'\n\nexport class TransactionSigner {\n static async signTransaction(transaction: any, privateKey: Uint8Array): Promise<Uint8Array> {\n const msg = BcsTransaction.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","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 BcsTransaction = 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\nexport interface FastsetAssetBalance {\n asset_id: string\n balance: string\n name?: string\n decimals?: number\n logo_url?: string\n}\n\nexport interface FastsetAssetBalances {\n [assetId: string]: FastsetAssetBalance\n}\n\n// Helper function\nfunction hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n","import * as bech32 from 'bech32'\nimport { TransferClaim } from './Claim'\nimport { ed } from './ed25519-setup'\nimport { Transaction } from './Transaction'\nimport { TransactionSigner } from './TransactionSigner'\n\nexport interface WalletConfig {\n privateKeyHex: string\n}\n\nexport interface WalletInfo {\n publicKeyHex: string\n address: string\n}\n\nexport class Wallet {\n public readonly publicKey: Uint8Array\n public readonly publicKeyHex: string\n private readonly privateKey: Uint8Array\n\n constructor(privateKeyHex: string) {\n const cleanPrivateKey = privateKeyHex.replace(/^0x/, '')\n this.privateKey = Buffer.from(cleanPrivateKey, 'hex')\n\n // For now, we'll use a synchronous approach\n this.publicKey = ed.getPublicKey(this.privateKey)\n this.publicKeyHex = Buffer.from(this.publicKey).toString('hex')\n }\n\n toBech32(): string {\n const words = bech32.bech32m.toWords(this.publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n getWalletInfo(): WalletInfo {\n return {\n publicKeyHex: this.publicKeyHex,\n address: this.toBech32(),\n }\n }\n\n createTransferClaim(recipientAddress: string, amount: bigint, assetType: 'native' | 'set' | 'usdc' | string): TransferClaim {\n const recipientBytes = Wallet.decodeBech32Address(recipientAddress)\n\n const assetTypeBytes = new TextEncoder().encode(assetType)\n const userData = new Uint8Array(32)\n userData.set(assetTypeBytes.slice(0, 32))\n\n return new TransferClaim(recipientBytes, amount.toString(), userData)\n }\n\n createTransaction(nonce: number, claim: TransferClaim): Transaction {\n return new Transaction(this.publicKey, nonce, claim)\n }\n\n async signTransaction(transaction: Transaction): Promise<Uint8Array> {\n const transactionData = transaction.toTransaction()\n return await TransactionSigner.signTransaction(transactionData, this.privateKey)\n }\n\n static decodeBech32Address(address: string): Uint8Array {\n try {\n const decoded = bech32.bech32m.decode(address)\n return new Uint8Array(bech32.bech32m.fromWords(decoded.words))\n } catch (error) {\n const decoded = bech32.bech32.decode(address)\n return new Uint8Array(bech32.bech32.fromWords(decoded.words))\n }\n }\n\n static encodeBech32Address(publicKey: Uint8Array): string {\n const words = bech32.bech32m.toWords(publicKey)\n return bech32.bech32m.encode('set', words)\n }\n\n static fromPrivateKey(privateKeyHex: string): Wallet {\n return new Wallet(privateKeyHex)\n }\n\n static generateNew(): Wallet {\n const privateKey = ed.utils.randomPrivateKey()\n const privateKeyHex = Buffer.from(privateKey).toString('hex')\n return new Wallet(privateKeyHex)\n }\n\n static async fromPrivateKeyFile(filePath: string): Promise<Wallet> {\n const fs = await import('fs/promises')\n const privateKeyHex = (await fs.readFile(filePath, 'utf8')).trim()\n return new Wallet(privateKeyHex)\n }\n}\n","import { FastsetTransaction } from './types'\n\nexport interface ClaimData {\n [key: string]: unknown\n}\n\nexport abstract class Claim {\n abstract readonly type: string\n abstract readonly data: ClaimData\n\n abstract toTransactionData(): unknown\n\n static fromTransaction(transaction: FastsetTransaction): Claim {\n const claimType = Object.keys(transaction.claim)[0]\n const claimData = transaction.claim[claimType as keyof typeof transaction.claim]\n\n switch (claimType) {\n case 'Transfer':\n return TransferClaim.fromData(claimData as any)\n default:\n throw new Error(`Unknown claim type: ${claimType}`)\n }\n }\n}\n\nexport class TransferClaim extends Claim {\n readonly type = 'Transfer'\n readonly data: {\n recipient: Uint8Array\n amount: string\n userData?: Uint8Array\n }\n\n constructor(recipient: Uint8Array, amount: string, userData?: Uint8Array) {\n super()\n this.data = { recipient, amount, userData }\n }\n\n toTransactionData(): unknown {\n return {\n Transfer: {\n recipient: { FastSet: this.data.recipient },\n amount: this.data.amount,\n user_data: this.data.userData ?? null,\n },\n }\n }\n\n static fromData(data: any): TransferClaim {\n const recipient = data.recipient.FastSet || data.recipient.External\n return new TransferClaim(recipient, data.amount, data.user_data)\n }\n\n getRecipient(): Uint8Array {\n return this.data.recipient\n }\n\n getAmount(): string {\n return this.data.amount\n }\n\n getUserData(): Uint8Array | undefined {\n return this.data.userData\n }\n}\n","import * as ed from '@noble/ed25519'\nimport { sha512 } from '@noble/hashes/sha512'\n\n// Configure ed25519 library exactly like the official wallet\nif (ed.etc) {\n // @ts-ignore\n ed.etc.sha512Sync = (...m: Uint8Array[]) => sha512(ed.etc.concatBytes(...m))\n}\n\nexport { ed }\n","import { Claim } from './Claim'\nimport { FastsetTransaction } from './types'\n\nexport interface TransactionOptions {\n timestamp?: bigint\n}\n\nexport class Transaction {\n private sender: Uint8Array\n private nonce: number\n private claim: Claim\n private timestamp: bigint\n\n constructor(sender: Uint8Array, nonce: number, claim: Claim, options: TransactionOptions = {}) {\n this.sender = sender\n this.nonce = nonce\n this.claim = claim\n this.timestamp = options.timestamp ?? BigInt(Date.now()) * 1_000_000n\n }\n\n toTransaction(): FastsetTransaction {\n return {\n sender: this.sender,\n nonce: this.nonce,\n timestamp_nanos: this.timestamp,\n claim: this.claim.toTransactionData() as any,\n }\n }\n\n getSender(): Uint8Array {\n return this.sender\n }\n\n getNonce(): number {\n return this.nonce\n }\n\n getClaim(): Claim {\n return this.claim\n }\n\n getTimestamp(): bigint {\n return this.timestamp\n }\n\n static fromTransaction(transaction: FastsetTransaction): Transaction {\n const claim = Claim.fromTransaction(transaction)\n return new Transaction(transaction.sender, transaction.nonce, claim, { timestamp: transaction.timestamp_nanos })\n }\n}\n","import {\n AdapterWarpDataLoader,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\n\nexport interface FastsetAccountData {\n address: string\n balance: string\n balanceDecimal: number\n nextNonce: number\n sequenceNumber: number\n}\n\nexport interface FastsetTransactionData {\n hash: string\n hashHex: string\n status: string\n details: any\n}\n\nexport class WarpFastsetDataLoader implements AdapterWarpDataLoader {\n private client: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.client = new FastsetClient()\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(0),\n }\n }\n\n return {\n chain: this.chain.name,\n address,\n balance: BigInt(parseInt(accountInfo.balance, 16)),\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n // Get native token balance and asset balances in parallel\n const accountReq = this.getAccount(address)\n const assetBalancesReq = this.client.getAssetBalances(address)\n const [account, assetBalances] = await Promise.all([accountReq, assetBalancesReq])\n\n const assets: WarpChainAsset[] = []\n\n // Add native token balance\n if (account.balance > 0) {\n assets.push({ ...this.chain.nativeToken, amount: account.balance })\n }\n\n // Add other asset balances\n if (assetBalances) {\n for (const [assetId, assetBalance] of Object.entries(assetBalances)) {\n if (assetBalance.balance) {\n const amount = BigInt(assetBalance.balance)\n if (amount > 0) {\n assets.push({\n chain: this.chain.name,\n identifier: assetId,\n symbol: 'TODO: SYMBOL',\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n logoUrl: assetBalance.logo_url,\n amount,\n })\n }\n }\n }\n }\n\n return assets\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n return null\n }\n\n async getAction(identifier: string, awaitCompleted = false): Promise<WarpChainAction | null> {\n return null\n }\n\n async getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]> {\n return []\n }\n\n async getAccountInfo(address: string): Promise<FastsetAccountData | null> {\n const accountInfo = await this.client.getAccountInfo(address)\n\n if (!accountInfo) {\n return null\n }\n\n const balanceDecimal = parseInt(accountInfo.balance, 16)\n\n return {\n address,\n balance: accountInfo.balance,\n balanceDecimal,\n nextNonce: accountInfo.next_nonce,\n sequenceNumber: accountInfo.sequence_number,\n }\n }\n\n async getTransactionInfo(txHash: string): Promise<FastsetTransactionData | null> {\n return {\n hash: txHash,\n hashHex: txHash.startsWith('0x') ? txHash.slice(2) : txHash,\n status: 'submitted',\n details: {\n hash: txHash,\n timestamp: new Date().toISOString(),\n },\n }\n }\n\n async checkTransferStatus(fromAddress: string, toAddress: string, amount: string): Promise<boolean> {\n const fromAccount = await this.getAccountInfo(fromAddress)\n const toAccount = await this.getAccountInfo(toAddress)\n\n if (!fromAccount || !toAccount) {\n return false\n }\n\n const transferAmount = parseInt(amount)\n const fromBalance = fromAccount.balanceDecimal\n\n return fromBalance < transferAmount\n }\n\n async getAccountBalance(address: string): Promise<{ balance: string; balanceDecimal: number } | null> {\n const accountInfo = await this.getAccountInfo(address)\n if (!accountInfo) {\n return null\n }\n\n return {\n balance: accountInfo.balance,\n balanceDecimal: accountInfo.balanceDecimal,\n }\n }\n\n async getAssetBalance(address: string, assetId: string): Promise<WarpChainAsset | null> {\n const assetBalance = await this.client.getAssetBalance(address, assetId)\n\n if (!assetBalance || !assetBalance.balance) {\n return null\n }\n\n const amount = BigInt(assetBalance.balance)\n if (amount === 0n) {\n return null\n }\n\n return {\n chain: this.chain.name,\n identifier: assetId,\n symbol: 'TODO: SYMBOL',\n name: assetBalance.name || assetId,\n decimals: assetBalance.decimals || 6,\n logoUrl: assetBalance.logo_url,\n amount,\n }\n }\n}\n","import {\n AdapterWarpExecutor,\n getProviderUrl,\n getWarpActionByIndex,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { FastsetClient } from './sdk/FastsetClient'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n private readonly fastsetClient: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n const validatorUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n const proxyUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n this.fastsetClient = new FastsetClient({\n validatorUrl,\n proxyUrl,\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 (!this.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 = this.fromBase64(executable.destination)\n const amount = this.normalizeAmount(executable.value.toString())\n const userData = executable.data ? this.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 (!this.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 = this.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 (!this.isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n const contractAddress = this.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 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 = this.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 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 validatorUrl = getProviderUrl(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n const response = await fetch(`${validatorUrl}/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 private 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 const decoded = this.fromBase64(address)\n return decoded.length === 32\n } catch {\n return false\n }\n }\n\n private fromBase64(base64: string): Uint8Array {\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))\n }\n\n private normalizeAmount(amount: string): string {\n return amount.startsWith('0x') ? amount.slice(2) : amount\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 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 `biguint:${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 return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\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 ['biguint', value.toString()]\n }\n\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\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 'biguint':\n return BigInt(value as string | number)\n case 'address':\n return String(value)\n case 'hex':\n return String(value)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'biguint':\n return 'biguint'\n case 'address':\n return 'address'\n case 'hex':\n return 'hex'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\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 'biguint':\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, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n private readonly explorerUrl = 'https://explorer.fastset.xyz'\n\n constructor(\n private readonly _chainInfo: WarpChainInfo,\n private readonly _config?: WarpClientConfig\n ) {}\n\n getAccountUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n return `${this.explorerUrl}/transaction/${hash}`\n }\n\n getAssetUrl(identifier: string): string {\n return `${this.explorerUrl}/asset/${identifier}`\n }\n\n getContractUrl(address: string): string {\n return `${this.explorerUrl}/account/${address}`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpChainInfo,\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(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n const success = this.isTransactionSuccessful(tx)\n const transactionHash = this.extractTransactionHash(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const timestamp = this.extractTimestamp(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.[this.chain.name] || null,\n txHash: transactionHash,\n tx,\n next: null,\n values: [transactionHash, blockNumber, timestamp],\n valuesRaw: [transactionHash, blockNumber, timestamp],\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 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 match = path.match(/^out\\[(\\d+)\\]$/)\n if (match) {\n const index = parseInt(match[1]) - 1\n return valuesRaw[index]\n }\n\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 const value = getNestedValue(path)\n results[key] = value || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs, this.config.transform?.runner) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n if (!tx) return false\n\n if (tx.success === false) return false\n if (tx.success === true) return true\n if (tx.status === 'success') return true\n if (tx.status === 1) return true\n if (tx.result && tx.result.success === true) return true\n\n return false\n }\n\n private extractTransactionHash(tx: any): string {\n if (!tx) return ''\n\n return tx.transaction_hash || tx.transactionHash || tx.hash || (tx.result && tx.result.transaction_hash) || ''\n }\n\n private extractBlockNumber(tx: any): string {\n if (!tx) return '0'\n\n return tx.block_number?.toString() || tx.blockNumber?.toString() || (tx.result && tx.result.block_number?.toString()) || '0'\n }\n\n private extractTimestamp(tx: any): string {\n if (!tx) return '0'\n\n return (\n tx.timestamp?.toString() || tx.timestamp_nanos?.toString() || (tx.result && tx.result.timestamp?.toString()) || Date.now().toString()\n )\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vleap/warps-adapter-fastset",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.19",
|
|
4
4
|
"description": "Fastset adapter for Warps SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"@mysten/bcs": "^0.8.0",
|
|
41
41
|
"@noble/ed25519": "^2.1.0",
|
|
42
42
|
"@noble/hashes": "^1.4.0",
|
|
43
|
-
"@vleap/warps": "^3.0.0-alpha.
|
|
43
|
+
"@vleap/warps": "^3.0.0-alpha.92",
|
|
44
44
|
"bech32": "^2.0.0"
|
|
45
45
|
}
|
|
46
46
|
}
|