@vleap/warps-adapter-fastset 0.1.0-alpha.24 → 0.1.0-alpha.25
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 +5 -98
- package/dist/index.d.ts +5 -98
- package/dist/index.js +258 -307
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +259 -310
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sdk/ed25519-setup.ts","../src/sdk/FastsetClient.ts","../src/sdk/index.ts","../src/main.ts","../src/WarpFastsetDataLoader.ts","../src/helpers/encode.ts","../src/helpers/general.ts","../src/WarpFastsetExecutor.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetWallet.ts","../src/index.ts"],"sourcesContent":["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 { WarpClientConfig } from '@vleap/warps'\nimport * as bech32 from 'bech32'\nimport { ed } from './ed25519-setup'\n;(BigInt.prototype as any).toJSON = function () {\n return Number(this)\n}\n\nexport interface TransactionData {\n sender: number[] | Uint8Array\n recipient: any\n nonce: number\n timestamp_nanos: bigint\n claim: any\n}\n\nexport interface AccountInfoResponse {\n sender: number[]\n balance: string\n next_nonce: number\n pending_confirmation?: any\n requested_certificate?: any\n requested_validated_transaction?: any\n requested_received_transfers: any[]\n token_balance: Array<[number[], string]>\n requested_claim_by_id?: any\n requested_claims: any[]\n}\n\nexport class Transaction {\n constructor(\n private sender: Uint8Array,\n private recipient: { FastSet: Uint8Array } | { External: Uint8Array },\n private nonce: number,\n private claim: any,\n private timestamp: bigint = BigInt(Date.now()) * 1_000_000n\n ) {\n // Fix claim data - remove 0x prefix from amounts\n if (claim?.Transfer?.amount?.startsWith('0x')) {\n claim = { ...claim, Transfer: { ...claim.Transfer, amount: claim.Transfer.amount.slice(2) } }\n }\n }\n\n toTransaction() {\n return { sender: this.sender, recipient: this.recipient, nonce: this.nonce, timestamp_nanos: this.timestamp, claim: this.claim }\n }\n\n getRecipientAddress() {\n return this.recipient\n }\n getAmount() {\n return this.claim?.Transfer?.amount || ''\n }\n getUserData() {\n return this.claim?.Transfer?.user_data || null\n }\n}\n\nexport interface AccountInfoResponse {\n sender: number[]\n balance: string\n next_nonce: number\n pending_confirmation?: any\n requested_certificate?: any\n requested_validated_transaction?: any\n requested_received_transfers: any[]\n token_balance: Array<[number[], string]>\n requested_claim_by_id?: any\n requested_claims: any[]\n}\n\nexport class FastsetClient {\n private proxyUrl: string\n\n constructor(config?: WarpClientConfig | { proxyUrl: string }, chain?: any) {\n this.proxyUrl = config && 'proxyUrl' in config ? config.proxyUrl : config && chain ? chain.defaultApiUrl : 'https://proxy.fastset.xyz'\n }\n\n private async makeRequest<T = any>(method: string, params: any = {}): Promise<T> {\n const response = await fetch(this.proxyUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ jsonrpc: '2.0', method, params, id: Date.now() }, (k, v) => (v instanceof Uint8Array ? Array.from(v) : v)),\n })\n\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\n const jsonResponse = await response.json()\n if (jsonResponse.error) throw new Error(`JSON-RPC error ${jsonResponse.error.code}: ${jsonResponse.error.message}`)\n return jsonResponse.result\n }\n\n async getAccountInfo(address: number[]): Promise<AccountInfoResponse> {\n return this.makeRequest('set_proxy_getAccountInfo', { address })\n }\n\n async getNextNonce(address: string | number[]): Promise<number> {\n const addressBytes = typeof address === 'string' ? this.addressToBytes(address) : address\n const accountInfo = await this.getAccountInfo(addressBytes)\n return accountInfo.next_nonce\n }\n\n async submitTransaction(transaction: TransactionData, signature: number[] | Uint8Array): Promise<string> {\n const signatureArray = Array.isArray(signature) ? signature : Array.from(signature)\n const submitTxReq = {\n transaction: {\n sender: transaction.sender instanceof Uint8Array ? transaction.sender : new Uint8Array(transaction.sender),\n recipient: transaction.recipient,\n nonce: transaction.nonce,\n timestamp_nanos: transaction.timestamp_nanos,\n claim: transaction.claim,\n },\n signature: new Uint8Array(signatureArray),\n }\n\n const response = await fetch(this.proxyUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ jsonrpc: '2.0', method: 'set_proxy_submitTransaction', params: submitTxReq, id: 1 }, (k, v) =>\n v instanceof Uint8Array ? Array.from(v) : v\n ),\n })\n\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\n const jsonResponse = await response.json()\n if (jsonResponse.error) throw new Error(`JSON-RPC error ${jsonResponse.error.code}: ${jsonResponse.error.message}`)\n return jsonResponse.result\n }\n\n async faucetDrip(recipient: number[] | Uint8Array, amount: string): Promise<any> {\n const recipientArray = Array.isArray(recipient) ? recipient : Array.from(recipient)\n return this.makeRequest('set_proxy_faucetDrip', { recipient: recipientArray, amount })\n }\n\n private addressToBytes(address: string): number[] {\n try {\n const decoded = bech32.bech32m.decode(address)\n return Array.from(bech32.bech32m.fromWords(decoded.words))\n } catch {\n const decoded = bech32.bech32.decode(address)\n return Array.from(bech32.bech32.fromWords(decoded.words))\n }\n }\n\n // Wallet utilities\n generateNewWallet(): Wallet {\n const privateKey = ed.utils.randomPrivateKey()\n return new Wallet(Buffer.from(privateKey).toString('hex'))\n }\n\n createWallet(privateKeyHex: string): Wallet {\n return new Wallet(privateKeyHex)\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 {\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\nexport class Wallet {\n public readonly publicKey: Uint8Array\n private readonly privateKey: Uint8Array\n\n constructor(privateKeyHex: string) {\n this.privateKey = new Uint8Array(Buffer.from(privateKeyHex.replace(/^0x/, ''), 'hex'))\n this.publicKey = ed.getPublicKey(this.privateKey)\n }\n\n toBech32(): string {\n return bech32.bech32m.encode('set', bech32.bech32m.toWords(this.publicKey))\n }\n\n signTransactionRaw(data: Uint8Array): Uint8Array {\n return ed.sign(data, this.privateKey)\n }\n\n getPrivateKey(): Uint8Array {\n return this.privateKey\n }\n}\n","export * from './FastsetClient'\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'\nimport { WarpFastsetWallet } from './WarpFastsetWallet'\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 wallet: new WarpFastsetWallet(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://proxy.fastset.xyz',\n logoUrl: 'https://vleap.ai/images/chains/fastset.svg',\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://proxy.fastset.xyz',\n logoUrl: 'https://vleap.ai/images/chains/fastset.svg',\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://proxy.fastset.xyz',\n logoUrl: 'https://vleap.ai/images/chains/fastset.svg',\n nativeToken: NativeTokenSet,\n },\n})\n","import {\n AdapterWarpDataLoader,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport * as bech32 from 'bech32'\nimport { getConfiguredFastsetClient } from './helpers'\nimport { FastsetClient } from './sdk/FastsetClient'\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 = getConfiguredFastsetClient(config, chain)\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n const addressBytes = this.addressToBytes(address)\n const accountInfo = await this.client.getAccountInfo(addressBytes)\n\n return { chain: this.chain.name, address, balance: BigInt(parseInt(accountInfo.balance, 16)) }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n const addressBytes = this.addressToBytes(address)\n const accountInfo = await this.client.getAccountInfo(addressBytes)\n\n const assets: WarpChainAsset[] = []\n const balance = BigInt(parseInt(accountInfo.balance, 16))\n if (balance > 0n) {\n assets.push({ ...this.chain.nativeToken, amount: balance })\n }\n\n for (const [tokenId, tokenBalance] of accountInfo.token_balance) {\n const amount = BigInt(parseInt(tokenBalance, 16))\n if (amount > 0n) {\n const tokenInfo = await this.client.getTokenInfo([tokenId])\n const metadata = tokenInfo.requested_token_metadata[0]?.[1]\n\n assets.push({\n chain: this.chain.name,\n identifier: Buffer.from(tokenId).toString('hex'),\n symbol: metadata?.token_name || 'UNKNOWN',\n name: metadata?.token_name || 'Unknown Token',\n decimals: metadata?.decimals || 6,\n logoUrl: undefined,\n amount,\n })\n }\n }\n\n return assets\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n if (identifier === this.chain.nativeToken.identifier) {\n return this.chain.nativeToken\n }\n\n const tokenId = Buffer.from(identifier, 'hex')\n const tokenInfo = await this.client.getTokenInfo([Array.from(tokenId)])\n const metadata = tokenInfo.requested_token_metadata[0]?.[1]\n if (!metadata) return null\n\n return {\n chain: this.chain.name,\n identifier,\n symbol: metadata.token_name,\n name: metadata.token_name,\n decimals: metadata.decimals,\n logoUrl: undefined,\n amount: BigInt(metadata.total_supply),\n }\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 private addressToBytes(address: string): number[] {\n try {\n const decoded = bech32.bech32m.decode(address)\n return Array.from(bech32.bech32m.fromWords(decoded.words))\n } catch {\n try {\n const decoded = bech32.bech32.decode(address)\n return Array.from(bech32.bech32.fromWords(decoded.words))\n } catch {\n throw new Error(`Invalid FastSet address: ${address}`)\n }\n }\n }\n}\n","// Cross-environment utilities using the Buffer polyfill\nexport const encoder = new TextEncoder()\nexport const decoder = new TextDecoder()\n\n// Clean helper functions using Buffer\nexport function uint8ArrayToHex(uint8Array: Uint8Array): string {\n return Buffer.from(uint8Array).toString('hex')\n}\n\nexport function hexToUint8Array(hex: string): Uint8Array {\n return new Uint8Array(Buffer.from(hex, 'hex'))\n}\n\nexport function uint8ArrayToString(uint8Array: Uint8Array): string {\n return Buffer.from(uint8Array).toString('utf8')\n}\n\nexport function stringToUint8Array(str: string): Uint8Array {\n return new Uint8Array(Buffer.from(str, 'utf8'))\n}\n","import { WarpChainInfo, WarpClientConfig, getProviderUrl } from '@vleap/warps'\nimport { FastsetClient } from '../sdk'\n\nexport const getConfiguredFastsetClient = (config: WarpClientConfig, chain: WarpChainInfo) => {\n const proxyUrl = getProviderUrl(config, chain.name, config.env, chain.defaultApiUrl)\n return new FastsetClient({ proxyUrl })\n}\n","import {\n AdapterWarpExecutor,\n getWarpActionByIndex,\n getWarpWalletAddressFromConfig,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n} from '@vleap/warps'\nimport { FastsetClient, Transaction } from './sdk'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly fastsetClient: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.fastsetClient = new FastsetClient({ proxyUrl: 'https://proxy.fastset.xyz' })\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (action.type === 'transfer') return this.createTransferTransaction(executable)\n if (action.type === 'contract') return this.createContractCallTransaction(executable)\n if (action.type === 'query') throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n if (action.type === 'collect')\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n throw new Error(`WarpFastsetExecutor: Invalid action type (unknown)`)\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<Transaction> {\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpFastsetExecutor: createTransfer - user address not set')\n\n const senderAddress = FastsetClient.decodeBech32Address(userWallet)\n let recipientAddress: Uint8Array\n try {\n recipientAddress = FastsetClient.decodeBech32Address(executable.destination)\n } catch (error) {\n throw new Error(`WarpFastsetExecutor: Invalid destination address: ${executable.destination}`)\n }\n const nonce = await this.fastsetClient.getNextNonce(userWallet)\n\n // Get amount from transfers or value\n const transferValue = executable.transfers?.[0]?.amount || executable.value\n if (transferValue < 0) throw new Error(`WarpFastsetExecutor: Transfer value cannot be negative: ${transferValue}`)\n const amount = '0x' + transferValue.toString(16)\n\n const userData = executable.data ? this.fromBase64(executable.data) : null\n\n const claim = { Transfer: { amount, user_data: userData } }\n return new Transaction(senderAddress, { FastSet: recipientAddress }, nonce, claim)\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: createTransfer - user address not set')\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (!action || !('func' in action) || !action.func) throw new Error('WarpFastsetExecutor: Contract action must have a function name')\n\n let contractAddress: Uint8Array\n try {\n contractAddress = this.fromBase64(executable.destination)\n } catch (error) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address: ${executable.destination}`)\n }\n\n return {\n type: 'fastset-contract-call',\n contract: contractAddress,\n function: action.func,\n data: JSON.stringify({ function: action.func, arguments: executable.args }),\n value: executable.value,\n chain: executable.chain,\n }\n }\n\n async executeQuery(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action) as any\n if (action.type !== 'query') throw new Error(`WarpFastsetExecutor: Invalid action type for executeQuery: ${action.type}`)\n if (!action.func) throw new Error('WarpFastsetExecutor: Query action must have a function name')\n\n try {\n const result = await this.executeFastsetQuery(this.fromBase64(executable.destination), action.func, executable.args)\n return { success: true, result, chain: executable.chain }\n } catch (error) {\n return { success: false, error: error instanceof Error ? error.message : String(error), chain: executable.chain }\n }\n }\n\n async executeTransfer(executable: WarpExecutable): Promise<any> {\n const transaction = await this.createTransferTransaction(executable)\n return { success: true, transaction, chain: executable.chain.name }\n }\n\n async executeTransferWithKey(executable: WarpExecutable, privateKey: string): Promise<any> {\n const transaction = await this.createTransferTransaction(executable)\n const privateKeyBytes = this.fromBase64(privateKey)\n\n const transactionData = {\n sender: privateKeyBytes.slice(0, 32),\n recipient: transaction.getRecipientAddress(),\n nonce: await this.fastsetClient.getNextNonce(FastsetClient.encodeBech32Address(privateKeyBytes.slice(0, 32))),\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim: { Transfer: { amount: transaction.getAmount(), user_data: transaction.getUserData() } },\n }\n\n const signature = await this.signTransaction(transactionData, privateKeyBytes)\n const result = await this.fastsetClient.submitTransaction(transactionData, signature)\n\n return { success: true, result, message: 'Transaction submitted successfully', chain: executable.chain.name }\n }\n\n private async signTransaction(transaction: any, privateKey: Uint8Array): Promise<Uint8Array> {\n const wallet = new (await import('./sdk')).Wallet(Buffer.from(privateKey).toString('hex'))\n return wallet.signTransactionRaw(this.serializeTransaction(transaction))\n }\n\n private serializeTransaction(tx: any): Uint8Array {\n const serialized = JSON.stringify(tx, (k, v) => (v instanceof Uint8Array ? Array.from(v) : v))\n return new TextEncoder().encode(serialized)\n }\n\n private async executeFastsetQuery(contractAddress: Uint8Array, functionName: string, args: unknown[]): Promise<unknown> {\n const response = await fetch('https://proxy.fastset.xyz', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method: 'set_proxy_query',\n params: { contract: Array.from(contractAddress), function: functionName, arguments: args },\n id: 1,\n }),\n })\n if (!response.ok) throw new Error(`Fastset query failed: ${response.statusText}`)\n return response.json()\n }\n\n private fromBase64(base64: string): Uint8Array {\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))\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 getWarpWalletAddressFromConfig,\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: getWarpWalletAddressFromConfig(this.config, this.chain.name),\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","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 * as bip39 from '@scure/bip39'\nimport {\n AdapterWarpWallet,\n getWarpWalletAddressFromConfig,\n getWarpWalletPrivateKeyFromConfig,\n WarpAdapterGenericTransaction,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n} from '@vleap/warps'\nimport { encoder, hexToUint8Array, stringToUint8Array, uint8ArrayToHex } from './helpers'\nimport { getConfiguredFastsetClient } from './helpers/general'\nimport { FastsetClient, Transaction, Wallet } from './sdk'\nimport { ed } from './sdk/ed25519-setup'\n\nexport class WarpFastsetWallet implements AdapterWarpWallet {\n private wallet: Wallet | null = null\n private client: FastsetClient\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {\n const privateKey = getWarpWalletPrivateKeyFromConfig(this.config, this.chain.name)\n if (privateKey) {\n this.wallet = new Wallet(privateKey)\n }\n this.client = getConfiguredFastsetClient(this.config, this.chain)\n }\n\n async signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction> {\n if (!this.wallet) throw new Error('Wallet not initialized')\n const transaction = tx as Transaction\n const serializedTx = this.serializeTransaction(transaction.toTransaction())\n const signature = await ed.sign(serializedTx, this.wallet.getPrivateKey())\n return Object.assign(transaction, { signature: uint8ArrayToHex(signature) })\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error('Wallet not initialized')\n const messageBytes = stringToUint8Array(message)\n const signature = await ed.sign(messageBytes, this.wallet.getPrivateKey())\n return uint8ArrayToHex(signature)\n }\n\n async sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string> {\n if (!this.wallet) throw new Error('Wallet not initialized')\n const transaction = tx as Transaction\n const fastsetTx = transaction.toTransaction()\n\n const transactionData = {\n sender: fastsetTx.sender,\n recipient: fastsetTx.recipient,\n nonce: fastsetTx.nonce,\n timestamp_nanos: fastsetTx.timestamp_nanos,\n claim: fastsetTx.claim,\n }\n\n const signature = tx.signature\n ? hexToUint8Array(tx.signature)\n : await ed.sign(this.serializeTransaction(transactionData), this.wallet.getPrivateKey())\n\n return await this.client.submitTransaction(transactionData, signature)\n }\n\n create(mnemonic: string): WarpWalletDetails {\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const privateKey = seed.slice(0, 32) // Use first 32 bytes of seed as private key\n const wallet = new Wallet(uint8ArrayToHex(privateKey))\n return { address: wallet.toBech32(), privateKey: uint8ArrayToHex(wallet.getPrivateKey()), mnemonic }\n }\n\n generate(): WarpWalletDetails {\n const privateKey = ed.utils.randomPrivateKey()\n const wallet = new Wallet(uint8ArrayToHex(privateKey))\n return { address: wallet.toBech32(), privateKey: uint8ArrayToHex(wallet.getPrivateKey()), mnemonic: null }\n }\n\n getAddress(): string | null {\n return getWarpWalletAddressFromConfig(this.config, this.chain.name)\n }\n\n private serializeTransaction(tx: any): Uint8Array {\n const serialized = JSON.stringify(tx, (k, v) => {\n if (v instanceof Uint8Array) return Array.from(v)\n if (typeof v === 'bigint') return v.toString()\n return v\n })\n return encoder.encode(serialized)\n }\n}\n","export * from './main'\nexport { FastsetClient, Transaction, Wallet } from './sdk'\nexport { WarpFastsetExecutor } from './WarpFastsetExecutor'\nexport { WarpFastsetWallet } from './WarpFastsetWallet'\n"],"mappings":"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","names":["bech32","getWarpWalletAddressFromConfig","getWarpWalletAddressFromConfig","getWarpWalletAddressFromConfig","getWarpWalletAddressFromConfig"]}
|
|
1
|
+
{"version":3,"sources":["../src/main.ts","../src/WarpFastsetDataLoader.ts","../src/helpers/encode.ts","../src/helpers/general.ts","../src/sdk/FastsetClient.ts","../src/WarpFastsetExecutor.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetWallet.ts","../src/sdk/ed25519-setup.ts","../src/sdk/types.ts"],"sourcesContent":["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'\nimport { WarpFastsetWallet } from './WarpFastsetWallet'\n\nexport const NativeTokenSet: WarpChainAsset = {\n chain: WarpChainName.Fastset,\n identifier: 'SET',\n name: 'SET',\n symbol: 'SET',\n decimals: 0,\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 wallet: new WarpFastsetWallet(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://proxy.fastset.xyz',\n logoUrl: 'https://vleap.ai/images/chains/fastset.svg',\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://proxy.fastset.xyz',\n logoUrl: 'https://vleap.ai/images/chains/fastset.svg',\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://proxy.fastset.xyz',\n logoUrl: 'https://vleap.ai/images/chains/fastset.svg',\n nativeToken: NativeTokenSet,\n },\n})\n","import {\n AdapterWarpDataLoader,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport * as bech32 from 'bech32'\nimport { getConfiguredFastsetClient } from './helpers'\nimport { FastsetClient } from './sdk/FastsetClient'\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 = getConfiguredFastsetClient(config, chain)\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n const addressBytes = this.addressToBytes(address)\n const accountInfo = await this.client.getAccountInfo(addressBytes)\n\n return { chain: this.chain.name, address, balance: BigInt(parseInt(accountInfo.result?.balance ?? '0', 16)) }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n const addressBytes = this.addressToBytes(address)\n const accountInfo = await this.client.getAccountInfo(addressBytes)\n\n const assets: WarpChainAsset[] = []\n console.log('accountInfo', accountInfo)\n const balance = BigInt(parseInt(accountInfo.result?.balance ?? '0', 16))\n if (balance > 0n) {\n assets.push({ ...this.chain.nativeToken, amount: balance })\n }\n\n for (const [tokenId, tokenBalance] of accountInfo.result?.token_balance ?? []) {\n const amount = BigInt(parseInt(tokenBalance, 16))\n if (amount > 0n) {\n const tokenInfo = await this.client.getTokenInfo([tokenId])\n const metadata = tokenInfo.requested_token_metadata[0]?.[1]\n\n assets.push({\n chain: this.chain.name,\n identifier: Buffer.from(tokenId).toString('hex'),\n symbol: metadata?.token_name || 'UNKNOWN',\n name: metadata?.token_name || 'Unknown Token',\n decimals: metadata?.decimals || 6,\n logoUrl: undefined,\n amount,\n })\n }\n }\n\n return assets\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n if (identifier === this.chain.nativeToken.identifier) {\n return this.chain.nativeToken\n }\n\n const tokenId = Buffer.from(identifier, 'hex')\n const tokenInfo = await this.client.getTokenInfo([Array.from(tokenId)])\n const metadata = tokenInfo.requested_token_metadata[0]?.[1]\n if (!metadata) return null\n\n return {\n chain: this.chain.name,\n identifier,\n symbol: metadata.token_name,\n name: metadata.token_name,\n decimals: metadata.decimals,\n logoUrl: undefined,\n amount: BigInt(metadata.total_supply),\n }\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 private addressToBytes(address: string): number[] {\n try {\n const decoded = bech32.bech32m.decode(address)\n return Array.from(bech32.bech32m.fromWords(decoded.words))\n } catch {\n try {\n const decoded = bech32.bech32.decode(address)\n return Array.from(bech32.bech32.fromWords(decoded.words))\n } catch {\n throw new Error(`Invalid FastSet address: ${address}`)\n }\n }\n }\n}\n","// Cross-environment utilities using the Buffer polyfill\nexport const encoder = new TextEncoder()\nexport const decoder = new TextDecoder()\n\n// Clean helper functions using Buffer\nexport function uint8ArrayToHex(uint8Array: Uint8Array): string {\n return Buffer.from(uint8Array).toString('hex')\n}\n\nexport function hexToUint8Array(hex: string): Uint8Array {\n return new Uint8Array(Buffer.from(hex, 'hex'))\n}\n\nexport function uint8ArrayToString(uint8Array: Uint8Array): string {\n return Buffer.from(uint8Array).toString('utf8')\n}\n\nexport function stringToUint8Array(str: string): Uint8Array {\n return new Uint8Array(Buffer.from(str, 'utf8'))\n}\n","import { WarpChainInfo, WarpClientConfig, getProviderUrl } from '@vleap/warps'\nimport { FastsetClient } from '../sdk'\n\nexport const getConfiguredFastsetClient = (config: WarpClientConfig, chain: WarpChainInfo) => {\n const proxyUrl = getProviderUrl(config, chain.name, config.env, chain.defaultApiUrl)\n return new FastsetClient(proxyUrl)\n}\n","import { BCS, getSuiMoveConfig } from '@mysten/bcs'\nimport * as bech32 from 'bech32'\nimport { FastsetJsonRpcResponse } from './types'\n;(BigInt.prototype as any).toJSON = function () {\n return Number(this)\n}\n\nexport interface TransactionData {\n sender: number[] | Uint8Array\n recipient: any\n nonce: number\n timestamp_nanos: bigint\n claim: any\n signature?: string\n}\n\nexport interface AccountInfoResponse {\n sender: number[]\n balance: string\n next_nonce: number\n pending_confirmation?: any\n requested_certificate?: any\n requested_validated_transaction?: any\n requested_received_transfers: any[]\n token_balance: Array<[number[], string]>\n requested_claim_by_id?: any\n requested_claims: any[]\n}\n\nexport interface AccountInfoResponse {\n sender: number[]\n balance: string\n next_nonce: number\n pending_confirmation?: any\n requested_certificate?: any\n requested_validated_transaction?: any\n requested_received_transfers: any[]\n token_balance: Array<[number[], string]>\n requested_claim_by_id?: any\n requested_claims: any[]\n}\n\n// BCS instance for Fastset transaction serialization\nconst bcs = new BCS(getSuiMoveConfig())\n\n// Register Fastset-specific types\nbcs.registerStructType('FastSetAddress', {\n bytes: 'vector<u8>',\n})\n\nbcs.registerStructType('ExternalAddress', {\n bytes: 'vector<u8>',\n})\n\n// Register Address as a union type\nbcs.registerEnumType('Address', {\n FastSet: 'FastSetAddress',\n External: 'ExternalAddress',\n})\n\n// Register option type as enum\nbcs.registerEnumType('UserDataOption', {\n Some: 'vector<u8>',\n None: 'bool', // Use bool for None variant (false = None)\n})\n\nbcs.registerStructType('TransferClaim', {\n amount: 'u256', // 256-bit unsigned integer\n user_data: 'UserDataOption', // Use our custom option type\n})\n\nbcs.registerStructType('ClaimType', {\n Transfer: 'TransferClaim',\n})\n\nbcs.registerStructType('Transaction', {\n sender: 'vector<u8>', // 32 bytes\n recipient: 'Address',\n nonce: 'u64',\n timestamp_nanos: 'u128',\n claim: 'ClaimType',\n})\n\nlet id = 0\n\nexport class FastsetClient {\n private proxyUrl: string\n\n constructor(proxyUrl: string) {\n this.proxyUrl = proxyUrl\n }\n\n async request(url: string, method: string, params: any): Promise<any> {\n const request = this.buildJsonRpcRequest(id++, method, params)\n const headers = { 'Content-Type': 'application/json' }\n const body = this.jsonSerialize(request)\n const response = await fetch(url, { method: 'POST', headers, body })\n const json = await response.json()\n return json\n }\n\n private buildJsonRpcRequest(id: number, method: string, params: any) {\n return { jsonrpc: '2.0', id, method, params }\n }\n\n private jsonSerialize(data: any) {\n return JSON.stringify(data, (k, v) => {\n if (v instanceof Uint8Array) {\n return Array.from(v)\n }\n return v\n })\n }\n\n async getAccountInfo(address: number[]): Promise<FastsetJsonRpcResponse<AccountInfoResponse>> {\n return this.request(this.proxyUrl, 'set_proxy_getAccountInfo', { address })\n }\n\n async getNextNonce(address: string | number[]): Promise<number> {\n const addressBytes = typeof address === 'string' ? this.addressToBytes(address) : address\n const accountInfoRes = await this.getAccountInfo(addressBytes)\n return accountInfoRes.result?.next_nonce ?? 0\n }\n\n private addressToBytes(address: string): number[] {\n try {\n const decoded = bech32.bech32m.decode(address)\n return Array.from(bech32.bech32m.fromWords(decoded.words))\n } catch {\n const decoded = bech32.bech32.decode(address)\n return Array.from(bech32.bech32.fromWords(decoded.words))\n }\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 {\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","import {\n AdapterWarpExecutor,\n getWarpActionByIndex,\n getWarpWalletAddressFromConfig,\n WarpAdapterGenericTransaction,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n} from '@vleap/warps'\nimport { getConfiguredFastsetClient } from './helpers'\nimport { FastsetClient } from './sdk'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly client: FastsetClient\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.client = getConfiguredFastsetClient(this.config, this.chain)\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (action.type === 'transfer') return this.createTransferTransaction(executable)\n if (action.type === 'contract') return this.createContractCallTransaction(executable)\n if (action.type === 'query') throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n if (action.type === 'collect')\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n throw new Error(`WarpFastsetExecutor: Invalid action type (${action.type})`)\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<WarpAdapterGenericTransaction> {\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpFastsetExecutor: createTransfer - user address not set')\n const senderPubKey = FastsetClient.decodeBech32Address(userWallet)\n const recipientPubKey = FastsetClient.decodeBech32Address(executable.destination)\n const nonce = await this.client.getNextNonce(userWallet)\n\n const nativeAmountInTransfers =\n executable.transfers.find((transfer) => transfer.identifier === this.chain.nativeToken?.identifier)?.amount || 0n\n\n const nativeAmountTotal = nativeAmountInTransfers + executable.value\n const amountHex = BigInt(nativeAmountTotal).toString(16)\n\n return {\n sender: senderPubKey,\n recipient: { FastSet: recipientPubKey },\n nonce,\n timestamp_nanos: BigInt(Date.now()) * 1_000_000n,\n claim: { Transfer: { amount: amountHex, user_data: null } },\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n throw new Error('WarpFastsetExecutor: Not implemented')\n }\n\n async executeQuery(executable: WarpExecutable): Promise<any> {\n throw new Error('WarpFastsetExecutor: Not implemented')\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 getWarpWalletAddressFromConfig,\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: getWarpWalletAddressFromConfig(this.config, this.chain.name),\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","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 * as bip39 from '@scure/bip39'\nimport {\n AdapterWarpWallet,\n getProviderUrl,\n getWarpWalletAddressFromConfig,\n getWarpWalletPrivateKeyFromConfig,\n WarpAdapterGenericTransaction,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n} from '@vleap/warps'\nimport { stringToUint8Array, uint8ArrayToHex } from './helpers'\nimport { getConfiguredFastsetClient } from './helpers/general'\nimport { FastsetClient } from './sdk'\nimport { ed } from './sdk/ed25519-setup'\nimport { Transaction } from './sdk/types'\n\nexport class WarpFastsetWallet implements AdapterWarpWallet {\n private client: FastsetClient\n private privateKey: string\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {\n this.client = getConfiguredFastsetClient(this.config, this.chain)\n\n const privateKey = getWarpWalletPrivateKeyFromConfig(this.config, this.chain.name)\n if (!privateKey) throw new Error('Wallet not initialized - no private key provided')\n this.privateKey = privateKey\n }\n\n async signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction> {\n const msg = Transaction.serialize(tx)\n const msgBytes = msg.toBytes()\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 const signature = ed.sign(dataToSign, this.privateKey)\n return { ...tx, signature }\n }\n\n async signMessage(message: string): Promise<string> {\n const messageBytes = stringToUint8Array(message)\n const signature = ed.sign(messageBytes, this.privateKey)\n return uint8ArrayToHex(signature)\n }\n\n async sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string> {\n const { signature, ...transactionWithoutSignature } = tx\n\n const submitTxReq = {\n transaction: transactionWithoutSignature,\n signature,\n }\n\n const proxyUrl = getProviderUrl(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n const response = await this.client.request(proxyUrl, 'set_proxy_submitTransaction', submitTxReq)\n\n if (response.error) throw new Error(`JSON-RPC error ${response.error.code}: ${response.error.message}`)\n console.log('submitTransaction response', response.result)\n return 'TODO'\n }\n\n create(mnemonic: string): WarpWalletDetails {\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const privateKey = seed.slice(0, 32) // Use first 32 bytes of seed as private key\n const publicKey = ed.getPublicKey(privateKey)\n const address = FastsetClient.encodeBech32Address(publicKey)\n return { address, privateKey: uint8ArrayToHex(privateKey), mnemonic }\n }\n\n generate(): WarpWalletDetails {\n const privateKey = ed.utils.randomPrivateKey()\n const publicKey = ed.getPublicKey(privateKey)\n const address = FastsetClient.encodeBech32Address(publicKey)\n return { address, privateKey: uint8ArrayToHex(privateKey), mnemonic: null }\n }\n\n getAddress(): string | null {\n return getWarpWalletAddressFromConfig(this.config, this.chain.name)\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 { bcs } from '@mysten/bcs'\n\n// BigInt serialization workaround\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return Number(this)\n}\n\n// Type guards\nexport const isValidFastSetAddress = (address: string): boolean => {\n return address.startsWith('set1') && address.length === 62\n}\n\nexport const isValidHexString = (hex: string): boolean => {\n return /^0x[0-9a-fA-F]*$/.test(hex)\n}\n\n// BCS Type Definitions\nexport const Bytes32 = bcs.fixedArray(32, bcs.u8())\nexport const Bytes64 = bcs.fixedArray(64, bcs.u8())\n// FastSet uses Ed25519 public keys as addresses.\nexport const PublicKey = Bytes32\nexport const Signature = Bytes64\n\nexport const Address = bcs.enum('Address', {\n External: PublicKey,\n FastSet: PublicKey,\n})\n\nexport const Amount = bcs.u256().transform({\n // CAUTION: When we build a transaction object, we must use a hex encoded string because the\n // validator expects amounts to be in hex. However, bcs.u256() by default expects a decimal\n // string. Therefore, we must transform the input amount from hex to decimal here.\n input: (val: unknown) => hexToDecimal((val as string).toString()),\n output: (value: string) => value,\n})\n\nexport const Balance = bcs.string().transform({\n input: (val: unknown) => val as string,\n output: (value: string) => value,\n})\n\nexport const UserData = bcs.option(Bytes32)\nexport const Nonce = bcs.u64()\nexport const Quorum = bcs.u64()\nexport const TokenId = Bytes32\n\nexport const Transfer = bcs.struct('Transfer', {\n amount: Amount,\n user_data: UserData,\n})\n\nexport const TokenTransfer = bcs.struct('TokenTransfer', {\n token_id: TokenId,\n amount: Amount,\n user_data: UserData,\n})\n\nexport const TokenCreation = bcs.struct('TokenCreation', {\n token_name: bcs.string(),\n decimals: bcs.u8(),\n initial_amount: Amount,\n mints: bcs.vector(PublicKey),\n user_data: UserData,\n})\n\nexport const AddressChange = bcs.enum('AddressChange', {\n Add: PublicKey,\n Remove: PublicKey,\n})\n\nexport const TokenManagement = bcs.struct('TokenManagement', {\n token_id: TokenId,\n update_id: Nonce,\n new_admin: bcs.option(PublicKey),\n mints: bcs.vector(bcs.tuple([AddressChange, PublicKey])),\n user_data: UserData,\n})\n\nexport const Mint = bcs.struct('Mint', {\n token_id: TokenId,\n amount: Amount,\n})\n\nexport const ClaimData = bcs.vector(bcs.u8())\n\nexport const ExternalClaimBody = bcs.struct('ExternalClaimBody', {\n verifier_committee: bcs.vector(PublicKey),\n verifier_quorum: Quorum,\n claim_data: ClaimData,\n})\n\nexport const ExternalClaim = bcs.struct('ExternalClaim', {\n claim: ExternalClaimBody,\n signatures: bcs.vector(bcs.tuple([PublicKey, Signature])),\n})\n\nexport const ClaimType = bcs.enum('ClaimType', {\n Transfer: Transfer,\n TokenTransfer: TokenTransfer,\n TokenCreation: TokenCreation,\n TokenManagement: TokenManagement,\n Mint: Mint,\n ExternalClaim: ExternalClaim,\n})\n\n// The Transaction data type is the one that users sign over.\nexport const Transaction = bcs.struct('Transaction', {\n sender: PublicKey,\n recipient: Address,\n nonce: Nonce,\n timestamp_nanos: bcs.u128(),\n claim: ClaimType,\n})\n\n// TypeScript interfaces for API types\n// Transaction types from the example\nexport interface TransactionData {\n sender: number[] // PublicKeyBytes (32 bytes) as array\n recipient: Address\n nonce: number // uint64\n timestamp_nanos: string // uint128 as string\n claim: ClaimType\n}\n\nexport interface Address {\n External?: number[]\n FastSet?: number[]\n}\n\nexport interface ClaimType {\n Transfer?: Transfer\n TokenTransfer?: TokenTransfer\n TokenCreation?: TokenCreation\n TokenManagement?: TokenManagement\n Mint?: Mint\n ExternalClaim?: ExternalClaim\n}\n\nexport interface Transfer {\n amount: string // Amount as hex string\n user_data?: number[] | null // Optional 32 bytes as array\n}\n\nexport interface TokenTransfer {\n token_id: number[] // 32 bytes as array\n amount: string // Amount as hex string\n user_data?: number[] | null // Optional 32 bytes as array\n}\n\nexport interface TokenCreation {\n token_name: string\n decimals: number // uint8\n initial_amount: string // Amount as hex string\n mints: number[][] // Array of PublicKeyBytes as arrays\n user_data?: number[] | null // Optional 32 bytes as array\n}\n\nexport interface TokenManagement {\n token_id: number[] // 32 bytes as array\n update_id: number // uint64\n new_admin?: number[] // Optional PublicKeyBytes as array\n mints: Array<[AddressChange, number[]]>\n user_data?: number[] | null // Optional 32 bytes as array\n}\n\nexport interface AddressChange {\n Add?: any[]\n Remove?: any[]\n}\n\nexport interface Mint {\n token_id: number[] // 32 bytes as array\n amount: string // Amount as hex string\n}\n\nexport interface ExternalClaim {\n claim: ExternalClaimBody\n signatures: Array<[number[], number[]]> // [(PublicKeyBytes, Signature)] as arrays\n}\n\nexport interface ExternalClaimBody {\n verifier_committee: number[][] // Array of PublicKeyBytes as arrays\n verifier_quorum: number // uint64\n claim_data: number[] // Array of bytes\n}\n\nexport interface Signature extends Array<number> {} // 64 bytes as array\n\nexport interface PageRequest {\n limit: number\n token?: number[] // Optional array of bytes\n}\n\nexport interface Pagination {\n limit?: number\n offset: number\n}\n\n// Legacy interface for backward compatibility\nexport interface FastsetTransaction {\n sender: Uint8Array\n recipient: { FastSet: Uint8Array } | { External: Uint8Array }\n nonce: number\n timestamp_nanos: bigint\n claim: any // Can be Transfer, TokenTransfer, TokenCreation, etc.\n}\n\n// API Response Types\nexport interface TokenMetadata {\n update_id: number\n admin: Uint8Array\n token_name: string\n decimals: number\n total_supply: string\n mints: Uint8Array[]\n}\n\nexport interface SettleTiming {\n settled_at: bigint\n}\n\nexport interface Timed<T> {\n data: T\n timing?: SettleTiming\n}\n\nexport interface Pagination {\n limit?: number\n offset: number\n}\n\nexport interface Page<T> {\n data: T[]\n next_page_token: Uint8Array\n}\n\nexport interface TokenInfoResponse {\n requested_token_metadata: Array<[Uint8Array, TokenMetadata]>\n}\n\nexport interface TransactionWithHash {\n transaction: TransactionData\n hash: Uint8Array\n}\n\nexport interface ValidatedTransaction {\n value: TransactionEnvelope\n validator: Uint8Array\n signature: Uint8Array\n}\n\nexport interface TransactionCertificate {\n envelope: TransactionEnvelope\n signatures: Array<[Uint8Array, Uint8Array]>\n}\n\nexport interface TransactionEnvelope {\n transaction: TransactionData\n signature: Uint8Array\n}\n\nexport interface AccountInfoResponse {\n sender: Uint8Array\n balance: string\n next_nonce: number\n pending_confirmation?: ValidatedTransaction\n requested_certificate?: TransactionCertificate\n requested_validated_transaction?: ValidatedTransaction\n requested_received_transfers: TransactionCertificate[]\n token_balance: Array<[Uint8Array, string]>\n requested_claim_by_id?: any\n requested_claims: TransactionWithHash[]\n}\n\n// Legacy interfaces (keeping for compatibility)\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: string | Uint8Array\n amount: typeof Amount\n tokenId?: typeof TokenId | Uint8Array\n}\n\nexport interface FastsetFaucetResponse {\n // Empty response\n}\n\nexport interface FastsetJsonRpcRequest {\n jsonrpc: '2.0'\n id: number\n method: string\n params: 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// API Response Types\nexport const SubmitTransactionResponse = bcs.struct('SubmitTransactionResponse', {\n validator: PublicKey,\n signature: Signature,\n next_nonce: Nonce,\n transaction_hash: bcs.vector(bcs.u8()),\n})\n\nexport const TransactionEnvelope = bcs.struct('TransactionEnvelope', {\n transaction: Transaction,\n signature: Signature,\n})\n\nexport const TransactionCertificate = bcs.struct('TransactionCertificate', {\n envelope: TransactionEnvelope,\n signatures: bcs.vector(bcs.tuple([PublicKey, Signature])),\n})\n\n// Helper functions\nexport function hexToDecimal(hex: string): string {\n return BigInt(`0x${hex}`).toString()\n}\n"],"mappings":"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","names":["bech32","id","getWarpWalletAddressFromConfig","getWarpWalletAddressFromConfig","getProviderUrl","getWarpWalletAddressFromConfig","bcs","bcs","getProviderUrl","getWarpWalletAddressFromConfig"]}
|