@vleap/warps-adapter-fastset 0.1.0-alpha.2 → 0.1.0-alpha.20

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/WarpFastsetBuilder.ts","../src/WarpFastsetExecutor.ts","../src/config.ts","../src/WarpFastsetSerializer.ts","../src/WarpFastsetExplorer.ts","../src/WarpFastsetResults.ts","../src/main.ts"],"sourcesContent":["export const WarpFastsetConstants = {\n ChainName: 'fastset',\n ChainPrefix: 'fastset',\n Pi: {\n Identifier: 'PI',\n DisplayName: 'Pi',\n Decimals: 18,\n },\n GasLimit: {\n Default: 21000,\n ContractCall: 100000,\n ContractDeploy: 500000,\n Transfer: 21000,\n Approve: 46000,\n Swap: 200000,\n },\n GasPrice: {\n Default: '20000000000', // 20 gwei\n Low: '10000000000', // 10 gwei\n Medium: '20000000000', // 20 gwei\n High: '50000000000', // 50 gwei\n },\n Network: {\n Mainnet: {\n ChainId: '1',\n Name: 'Fastset Mainnet',\n BlockTime: 12,\n },\n Testnet: {\n ChainId: '11155111',\n Name: 'Fastset Testnet',\n BlockTime: 12,\n },\n Devnet: {\n ChainId: '1337',\n Name: 'Fastset Devnet',\n BlockTime: 12,\n },\n },\n Validation: {\n AddressLength: 42,\n HexPrefix: '0x',\n MinGasLimit: 21000,\n MaxGasLimit: 30000000,\n },\n Timeouts: {\n DefaultRpcTimeout: 30000, // 30 seconds\n GasEstimationTimeout: 10000, // 10 seconds\n QueryTimeout: 15000, // 15 seconds\n },\n}\n","import { BaseWarpBuilder, CombinedWarpBuilder, Warp, WarpAction, WarpClientConfig } from '@vleap/warps'\n\nexport class WarpFastsetBuilder implements CombinedWarpBuilder {\n private warp: Partial<Warp> = {}\n private actions: WarpAction[] = []\n\n constructor(private readonly config: WarpClientConfig) {}\n\n async createFromRaw(encoded: string): Promise<Warp> {\n // TODO: Implement Fastset-specific raw data parsing\n // This should parse Fastset-specific encoded data format\n\n try {\n const parsed = JSON.parse(encoded)\n this.warp = parsed\n this.actions = parsed.actions || []\n return this.build()\n } catch (error) {\n throw new Error(`Failed to parse Fastset warp data: ${error}`)\n }\n }\n\n setTitle(title: string): BaseWarpBuilder {\n this.warp.title = title\n return this\n }\n\n setDescription(description: string): BaseWarpBuilder {\n this.warp.description = description\n return this\n }\n\n setPreview(preview: string): BaseWarpBuilder {\n this.warp.preview = preview\n return this\n }\n\n setActions(actions: WarpAction[]): BaseWarpBuilder {\n this.actions = actions\n return this\n }\n\n addAction(action: WarpAction): BaseWarpBuilder {\n this.actions.push(action)\n return this\n }\n\n async build(): Promise<Warp> {\n // TODO: Implement Fastset-specific warp building logic\n // This should create a Fastset-specific warp object\n\n return {\n protocol: 'warp',\n name: this.warp.name || 'fastset-warp',\n title: this.warp.title || '',\n description: this.warp.description || null,\n preview: this.warp.preview || null,\n actions: this.actions,\n meta: {\n chain: 'fastset',\n hash: this.generateHash(this.warp.title || ''),\n creator: this.config.user?.wallets?.fastset || '',\n createdAt: new Date().toISOString(),\n },\n } as Warp\n }\n\n createInscriptionTransaction(warp: Warp): any {\n // TODO: Implement Fastset-specific inscription transaction creation\n // This should create a transaction that inscribes the warp on Fastset\n\n return {\n type: 'fastset-inscription',\n data: JSON.stringify(warp),\n // TODO: Add Fastset-specific transaction fields\n }\n }\n\n async createFromTransaction(tx: any, validate: boolean = true): Promise<Warp> {\n // TODO: Implement Fastset-specific transaction parsing\n // This should parse Fastset transactions to extract warp data\n\n try {\n const warpData = tx.data || tx.payload || tx.content\n if (!warpData) {\n throw new Error('No warp data found in transaction')\n }\n\n const parsed = typeof warpData === 'string' ? JSON.parse(warpData) : warpData\n\n if (validate) {\n // TODO: Add Fastset-specific validation\n this.validateWarp(parsed)\n }\n\n return parsed\n } catch (error) {\n throw new Error(`Failed to create warp from Fastset transaction: ${error}`)\n }\n }\n\n async createFromTransactionHash(hash: string, cache?: any): Promise<Warp | null> {\n // TODO: Implement Fastset-specific transaction hash lookup\n // This should fetch transaction data from Fastset blockchain\n\n try {\n // TODO: Implement Fastset RPC call to get transaction\n const tx = await this.fetchTransaction(hash)\n if (!tx) {\n return null\n }\n\n return this.createFromTransaction(tx)\n } catch (error) {\n console.error(`Failed to create warp from Fastset transaction hash: ${error}`)\n return null\n }\n }\n\n private generateHash(data: string): string {\n // TODO: Implement Fastset-specific hash generation\n // This should use Fastset's preferred hashing algorithm\n\n // Simple hash for now - replace with Fastset-specific implementation\n let hash = 0\n for (let i = 0; i < data.length; i++) {\n const char = data.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32-bit integer\n }\n return hash.toString(16)\n }\n\n private validateWarp(warp: any): void {\n // TODO: Implement Fastset-specific warp validation\n // This should validate warp data according to Fastset rules\n\n if (!warp.title) {\n throw new Error('Warp must have a title')\n }\n\n if (!warp.actions || !Array.isArray(warp.actions)) {\n throw new Error('Warp must have actions array')\n }\n\n // TODO: Add more Fastset-specific validation rules\n }\n\n private async fetchTransaction(hash: string): Promise<any> {\n // TODO: Implement Fastset RPC call\n // This should fetch transaction data from Fastset blockchain\n\n // Placeholder implementation\n const response = await fetch(`${this.getApiUrl()}/transaction/${hash}`)\n if (!response.ok) {\n return null\n }\n\n return response.json()\n }\n\n private getApiUrl(): string {\n // TODO: Get Fastset API URL from config\n return 'https://api.fastset.xyz'\n }\n}\n","import {\n AdapterWarpExecutor,\n getWarpActionByIndex,\n WarpActionInputType,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { getFastsetApiUrl } from './config'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpFastsetSerializer\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n // TODO: Implement Fastset-specific transaction creation\n // This should create Fastset transactions based on the executable\n\n const action = getWarpActionByIndex(executable.warp, executable.action)\n\n let tx: any = null\n if (action.type === 'transfer') {\n tx = await this.createTransferTransaction(executable)\n } else if (action.type === 'contract') {\n tx = await this.createContractCallTransaction(executable)\n } else if (action.type === 'query') {\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n } else if (action.type === 'collect') {\n throw new Error('WarpFastsetExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n }\n\n if (!tx) throw new Error(`WarpFastsetExecutor: Invalid action type (${action.type})`)\n\n return tx\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<any> {\n // TODO: Implement Fastset-specific transfer transaction creation\n // This should create a Fastset transfer transaction\n\n const userWallet = this.config.user?.wallets?.[executable.chain.name]\n if (!userWallet) throw new Error('WarpFastsetExecutor: createTransfer - user address not set')\n\n // TODO: Add Fastset-specific address validation\n if (!this.isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid destination address: ${executable.destination}`)\n }\n\n // TODO: Add Fastset-specific value validation\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Transfer value cannot be negative: ${executable.value}`)\n }\n\n return {\n type: 'fastset-transfer',\n from: userWallet,\n to: executable.destination,\n value: executable.value,\n data: executable.data ? this.serializer.stringToTyped(executable.data) : '',\n // TODO: Add Fastset-specific transaction fields\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n // TODO: Implement Fastset-specific contract call transaction creation\n // This should create a Fastset contract call transaction\n\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 // TODO: Add Fastset-specific address validation\n if (!this.isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address: ${executable.destination}`)\n }\n\n // TODO: Add Fastset-specific value validation\n if (executable.value < 0) {\n throw new Error(`WarpFastsetExecutor: Contract call value cannot be negative: ${executable.value}`)\n }\n\n try {\n // TODO: Implement Fastset-specific function encoding\n const encodedData = this.encodeFunctionData(action.func, executable.args)\n\n return {\n type: 'fastset-contract-call',\n from: userWallet,\n to: executable.destination,\n value: executable.value,\n data: encodedData,\n function: action.func,\n // TODO: Add Fastset-specific transaction fields\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 // TODO: Implement Fastset-specific query execution\n // This should execute queries on Fastset blockchain\n\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 // TODO: Add Fastset-specific address validation\n if (!this.isValidFastsetAddress(executable.destination)) {\n throw new Error(`WarpFastsetExecutor: Invalid contract address for query: ${executable.destination}`)\n }\n\n try {\n // TODO: Implement Fastset-specific query execution\n const result = await this.executeFastsetQuery(executable.destination, action.func, executable.args)\n\n return {\n success: true,\n result,\n // TODO: Add Fastset-specific result fields\n }\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n // TODO: Add Fastset-specific error fields\n }\n }\n }\n\n async preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string> {\n // TODO: Implement Fastset-specific input preprocessing\n // This should validate and preprocess inputs according to Fastset rules\n\n const typedValue = this.serializer.stringToTyped(value)\n\n switch (type) {\n case 'address':\n // TODO: Add Fastset-specific address validation\n if (!this.isValidFastsetAddress(typedValue)) {\n throw new Error(`Invalid Fastset address format: ${typedValue}`)\n }\n return typedValue\n case 'number':\n const numValue = Number(typedValue)\n if (isNaN(numValue)) {\n throw new Error(`Invalid number format: ${typedValue}`)\n }\n return numValue.toString()\n case 'bigint':\n const bigIntValue = BigInt(typedValue)\n if (bigIntValue < 0) {\n throw new Error(`Negative value not allowed for type ${type}: ${typedValue}`)\n }\n return bigIntValue.toString()\n default:\n return String(typedValue)\n }\n }\n\n private isValidFastsetAddress(address: string): boolean {\n // TODO: Implement Fastset-specific address validation\n // This should validate Fastset address format\n\n // Placeholder implementation - replace with Fastset-specific validation\n return typeof address === 'string' && address.length > 0\n }\n\n private encodeFunctionData(functionName: string, args: any[]): string {\n // TODO: Implement Fastset-specific function encoding\n // This should encode function calls according to Fastset's ABI format\n\n // Placeholder implementation - replace with Fastset-specific encoding\n return JSON.stringify({\n function: functionName,\n arguments: args,\n })\n }\n\n private async executeFastsetQuery(contractAddress: string, functionName: string, args: any[]): Promise<any> {\n // TODO: Implement Fastset-specific query execution\n // This should execute queries on Fastset blockchain\n\n // Placeholder implementation - replace with Fastset-specific RPC call\n const response = await fetch(`${getFastsetApiUrl(this.config.env, 'fastset')}/query`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n contract: contractAddress,\n function: functionName,\n arguments: args,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`Fastset query failed: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n async signMessage(message: string, privateKey: string): Promise<string> {\n throw new Error('Not implemented')\n }\n}\n","import { WarpChainEnv } from '@vleap/warps'\n\n// Fastset Chain configurations\nexport interface FastsetChainConfig {\n apiUrl: string\n explorerUrl: string\n chainId: string\n registryAddress: string\n nativeToken: string\n blockTime?: number\n}\n\n// Predefined chain configurations\nexport const FASTSET_CHAIN_CONFIGS: Record<string, Record<WarpChainEnv, FastsetChainConfig>> = {\n fastset: {\n mainnet: {\n apiUrl: 'https://mainnet.fastset.com/api',\n explorerUrl: 'https://explorer.fastset.com',\n chainId: '1',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12,\n },\n testnet: {\n apiUrl: 'https://testnet.fastset.com/api',\n explorerUrl: 'https://testnet-explorer.fastset.com',\n chainId: '11155111',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12,\n },\n devnet: {\n apiUrl: 'http://localhost:8545',\n explorerUrl: 'http://localhost:4000',\n chainId: '1337',\n registryAddress: '0x0000000000000000000000000000000000000000',\n nativeToken: 'PI',\n blockTime: 12,\n },\n },\n}\n\n// Default chain\nconst DEFAULT_CHAIN = 'fastset'\n\nexport const getFastsetChainConfig = (chain: string = DEFAULT_CHAIN, env: WarpChainEnv): FastsetChainConfig => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n throw new Error(`Unsupported Fastset chain: ${chain}`)\n }\n\n const config = chainConfigs[env]\n if (!config) {\n throw new Error(`Unsupported environment ${env} for chain ${chain}`)\n }\n\n return config\n}\n\nexport const getFastsetApiUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).apiUrl\n}\n\nexport const getFastsetExplorerUrl = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).explorerUrl\n}\n\nexport const getFastsetChainId = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).chainId\n}\n\nexport const getFastsetRegistryAddress = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).registryAddress\n}\n\nexport const getFastsetNativeToken = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): string => {\n return getFastsetChainConfig(chain, env).nativeToken\n}\n\nexport const getFastsetBlockTime = (env: WarpChainEnv, chain: string = DEFAULT_CHAIN): number => {\n return getFastsetChainConfig(chain, env).blockTime || 12\n}\n\n// Helper function to get all supported chains\nexport const getSupportedFastsetChains = (): string[] => {\n return Object.keys(FASTSET_CHAIN_CONFIGS)\n}\n\n// Helper function to get all supported environments for a chain\nexport const getSupportedEnvironments = (chain: string): WarpChainEnv[] => {\n const chainConfigs = FASTSET_CHAIN_CONFIGS[chain]\n if (!chainConfigs) {\n return []\n }\n return Object.keys(chainConfigs) as WarpChainEnv[]\n}\n","import {\n AdapterWarpSerializer,\n BaseWarpActionInputType,\n WarpActionInputType,\n WarpAdapterGenericType,\n WarpNativeValue,\n WarpSerializer,\n} from '@vleap/warps'\n\nexport class WarpFastsetSerializer implements AdapterWarpSerializer {\n public readonly coreSerializer: WarpSerializer\n\n constructor() {\n this.coreSerializer = new WarpSerializer()\n }\n\n typedToString(value: any): string {\n // TODO: Implement Fastset-specific serialization logic\n // This should handle Fastset-specific data types and formats\n\n if (typeof value === 'string') {\n // TODO: Add Fastset address validation if needed\n return `string:${value}`\n }\n\n if (typeof value === 'number') {\n return `number:${value}`\n }\n\n if (typeof value === 'boolean') {\n return `boolean:${value}`\n }\n\n if (typeof value === 'bigint') {\n return `bigint:${value.toString()}`\n }\n\n if (Array.isArray(value)) {\n const items = value.map((item) => this.typedToString(item)).join(',')\n return `array:${items}`\n }\n\n if (value === null) {\n return 'null:null'\n }\n\n if (value === undefined) {\n return 'undefined:undefined'\n }\n\n // Default to string representation\n return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\n // TODO: Implement Fastset-specific type conversion\n // This should convert Fastset-specific types to native types\n\n if (typeof value === 'string') {\n return ['string', value]\n }\n\n if (typeof value === 'number') {\n return ['number', value]\n }\n\n if (typeof value === 'boolean') {\n return ['boolean', value]\n }\n\n if (typeof value === 'bigint') {\n return ['bigint', value]\n }\n\n // Default to string\n return ['string', String(value)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\n // TODO: Implement Fastset-specific type conversion\n // This should convert native types to Fastset-specific types\n\n switch (type) {\n case 'string':\n return String(value)\n case 'number':\n return Number(value)\n case 'boolean':\n return Boolean(value)\n case 'bigint':\n return BigInt(value as string | number)\n default:\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n // TODO: Implement Fastset-specific type mapping\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'bigint':\n return 'bigint'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\n // TODO: Implement Fastset-specific string parsing\n // This should parse Fastset-specific string formats\n\n const colonIndex = value.indexOf(':')\n if (colonIndex === -1) {\n return value\n }\n\n const type = value.substring(0, colonIndex)\n const stringValue = value.substring(colonIndex + 1)\n\n switch (type) {\n case 'string':\n return stringValue\n case 'number':\n return Number(stringValue)\n case 'boolean':\n return stringValue === 'true'\n case 'bigint':\n return BigInt(stringValue)\n case 'array':\n return stringValue.split(',').map((item) => this.stringToTyped(item))\n case 'null':\n return null\n case 'undefined':\n return undefined\n default:\n return stringValue\n }\n }\n}\n","import { AdapterWarpExplorer, WarpChainInfo } from '@vleap/warps'\n\nexport class WarpFastsetExplorer implements AdapterWarpExplorer {\n private readonly chainInfo: WarpChainInfo\n private readonly chainName: string\n\n constructor(chainInfo: WarpChainInfo, chainName: string = 'fastset') {\n this.chainInfo = chainInfo\n this.chainName = chainName\n }\n\n getAccountUrl(address: string): string {\n // TODO: Implement Fastset-specific account URL generation\n // This should generate a URL to view an account on Fastset explorer\n\n const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl()\n return `${baseUrl}/address/${address}`\n }\n\n getTransactionUrl(hash: string): string {\n // TODO: Implement Fastset-specific transaction URL generation\n // This should generate a URL to view a transaction on Fastset explorer\n\n const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl()\n return `${baseUrl}/tx/${hash}`\n }\n\n getBlockUrl(blockNumber: string | number): string {\n // TODO: Implement Fastset-specific block URL generation\n // This should generate a URL to view a block on Fastset explorer\n\n const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl()\n return `${baseUrl}/block/${blockNumber}`\n }\n\n getContractUrl(address: string): string {\n // TODO: Implement Fastset-specific contract URL generation\n // This should generate a URL to view a contract on Fastset explorer\n\n const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl()\n return `${baseUrl}/contract/${address}`\n }\n\n getTokenUrl(address: string): string {\n // TODO: Implement Fastset-specific token URL generation\n // This should generate a URL to view a token on Fastset explorer\n\n const baseUrl = this.chainInfo.explorerUrl || this.getDefaultExplorerUrl()\n return `${baseUrl}/token/${address}`\n }\n\n private getDefaultExplorerUrl(): string {\n // TODO: Replace with actual Fastset explorer URL when available\n return `https://explorer.fastset.xyz`\n }\n}\n","import {\n AdapterWarpResults,\n evaluateResultsCommon,\n parseResultsOutIndex,\n ResolvedInput,\n Warp,\n WarpClientConfig,\n WarpConstants,\n WarpExecution,\n WarpExecutionResults,\n} from '@vleap/warps'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport class WarpFastsetResults implements AdapterWarpResults {\n private readonly serializer: WarpFastsetSerializer\n\n constructor(private readonly config: WarpClientConfig) {\n this.serializer = new WarpFastsetSerializer()\n }\n\n async getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution> {\n // TODO: Implement Fastset-specific transaction result processing\n // This should process Fastset transaction results into WarpExecution format\n\n const success = this.isTransactionSuccessful(tx)\n const gasUsed = this.extractGasUsed(tx)\n const gasPrice = this.extractGasPrice(tx)\n const blockNumber = this.extractBlockNumber(tx)\n const transactionHash = this.extractTransactionHash(tx)\n\n const logs = this.extractLogs(tx)\n\n return {\n success,\n warp,\n action: 0,\n user: this.config.user?.wallets?.fastset || null,\n txHash: transactionHash,\n next: null,\n values: [transactionHash, blockNumber, gasUsed, gasPrice, ...(logs.length > 0 ? logs : [])],\n results: {},\n messages: {},\n }\n }\n\n async extractQueryResults(\n warp: Warp,\n typedValues: any[],\n actionIndex: number,\n inputs: ResolvedInput[]\n ): Promise<{ values: any[]; results: WarpExecutionResults }> {\n // TODO: Implement Fastset-specific query result extraction\n // This should extract and process query results according to Fastset format\n\n const values = typedValues.map((t) => this.serializer.typedToString(t))\n const valuesRaw = typedValues.map((t) => this.serializer.typedToNative(t)[1])\n let results: WarpExecutionResults = {}\n\n if (!warp.results) return { values, results }\n\n const getNestedValue = (path: string): unknown => {\n const indices = path\n .split('.')\n .slice(1)\n .map((i) => parseInt(i) - 1)\n if (indices.length === 0) return undefined\n let value: any = valuesRaw[indices[0]]\n for (let i = 1; i < indices.length; i++) {\n if (value === undefined || value === null) return undefined\n value = value[indices[i]]\n }\n return value\n }\n\n for (const [key, path] of Object.entries(warp.results)) {\n if (path.startsWith(WarpConstants.Transform.Prefix)) continue\n const currentActionIndex = parseResultsOutIndex(path)\n if (currentActionIndex !== null && currentActionIndex !== actionIndex) {\n results[key] = null\n continue\n }\n if (path.startsWith('out.') || path === 'out' || path.startsWith('out[')) {\n results[key] = getNestedValue(path) || null\n } else {\n results[key] = path\n }\n }\n\n return { values, results: await evaluateResultsCommon(warp, results, actionIndex, inputs) }\n }\n\n private isTransactionSuccessful(tx: any): boolean {\n // TODO: Implement Fastset-specific transaction success detection\n // This should determine if a Fastset transaction was successful\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.status === 'success' || tx.status === 1 || tx.success === true\n }\n\n private extractGasUsed(tx: any): string {\n // TODO: Implement Fastset-specific gas used extraction\n // This should extract gas used from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasUsed?.toString() || tx.gas_used?.toString() || '0'\n }\n\n private extractGasPrice(tx: any): string {\n // TODO: Implement Fastset-specific gas price extraction\n // This should extract gas price from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.gasPrice?.toString() || tx.gas_price?.toString() || '0'\n }\n\n private extractBlockNumber(tx: any): string {\n // TODO: Implement Fastset-specific block number extraction\n // This should extract block number from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.blockNumber?.toString() || tx.block_number?.toString() || '0'\n }\n\n private extractTransactionHash(tx: any): string {\n // TODO: Implement Fastset-specific transaction hash extraction\n // This should extract transaction hash from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n return tx.hash || tx.transactionHash || tx.transaction_hash || ''\n }\n\n private extractLogs(tx: any): any[] {\n // TODO: Implement Fastset-specific log extraction\n // This should extract logs from Fastset transaction\n\n // Placeholder implementation - replace with Fastset-specific logic\n const logs = tx.logs || tx.events || []\n\n return logs.map((log: any) => ({\n address: log.address || log.contract,\n topics: log.topics || log.topics || [],\n data: log.data || log.payload || '',\n blockNumber: log.blockNumber?.toString() || log.block_number?.toString() || '0',\n transactionHash: log.transactionHash || log.transaction_hash || '',\n index: log.index?.toString() || '0',\n }))\n }\n}\n","import { Adapter, AdapterFactory, WarpClientConfig } from '@vleap/warps'\nimport { WarpFastsetConstants } from './constants'\nimport { WarpFastsetBuilder } from './WarpFastsetBuilder'\nimport { WarpFastsetExecutor } from './WarpFastsetExecutor'\nimport { WarpFastsetExplorer } from './WarpFastsetExplorer'\nimport { WarpFastsetResults } from './WarpFastsetResults'\nimport { WarpFastsetSerializer } from './WarpFastsetSerializer'\n\nexport const getFastsetAdapter: AdapterFactory = (config: WarpClientConfig, fallback?: Adapter) => {\n if (!fallback) throw new Error('Fastset adapter requires a fallback adapter')\n\n return {\n chain: WarpFastsetConstants.ChainName,\n prefix: WarpFastsetConstants.ChainPrefix,\n builder: () => new WarpFastsetBuilder(config),\n executor: new WarpFastsetExecutor(config),\n results: new WarpFastsetResults(config),\n serializer: new WarpFastsetSerializer(),\n registry: fallback.registry,\n explorer: (chainInfo) => new WarpFastsetExplorer(chainInfo),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/main.ts","../src/WarpFastsetDataLoader.ts","../src/sdk/FastsetClient.ts","../src/WarpFastsetExecutor.ts","../src/sdk/Wallet.ts","../src/sdk/ed25519-setup.ts","../src/sdk/Transaction.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 {\n AdapterWarpDataLoader,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport * as bech32 from 'bech32'\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 = new FastsetClient(config, chain)\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 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(accountInfo.balance) }\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(accountInfo.balance)\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(tokenBalance)\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 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\n if (!metadata) {\n return null\n }\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","import { bcs } from '@mysten/bcs'\nimport { WarpClientConfig } from '@vleap/warps'\nimport * as bech32 from 'bech32'\n\nconst bcsTransaction = bcs.struct('Transaction', {\n sender: bcs.fixedArray(32, bcs.u8()),\n recipient: bcs.enum('Address', {\n External: bcs.fixedArray(32, bcs.u8()),\n FastSet: bcs.fixedArray(32, bcs.u8()),\n }),\n nonce: bcs.u64(),\n timestamp_nanos: bcs.u128(),\n claim: bcs.enum('ClaimType', {\n Transfer: bcs.struct('Transfer', {\n recipient: bcs.enum('Address', {\n External: bcs.fixedArray(32, bcs.u8()),\n FastSet: bcs.fixedArray(32, bcs.u8()),\n }),\n amount: bcs.string(),\n user_data: bcs.option(bcs.fixedArray(32, bcs.u8())),\n }),\n TokenTransfer: bcs.struct('TokenTransfer', {\n token_id: bcs.fixedArray(32, bcs.u8()),\n amount: bcs.string(),\n user_data: bcs.option(bcs.fixedArray(32, bcs.u8())),\n }),\n TokenCreation: bcs.struct('TokenCreation', {\n token_name: bcs.string(),\n decimals: bcs.u8(),\n initial_amount: bcs.string(),\n mints: bcs.vector(bcs.fixedArray(32, bcs.u8())),\n user_data: bcs.option(bcs.fixedArray(32, bcs.u8())),\n }),\n TokenManagement: bcs.struct('TokenManagement', {\n token_id: bcs.fixedArray(32, bcs.u8()),\n update_id: bcs.u64(),\n new_admin: bcs.option(bcs.fixedArray(32, bcs.u8())),\n mints: bcs.vector(\n bcs.tuple([\n bcs.enum('AddressChange', {\n Add: bcs.fixedArray(32, bcs.u8()),\n Remove: bcs.fixedArray(32, bcs.u8()),\n }),\n bcs.fixedArray(32, bcs.u8()),\n ])\n ),\n user_data: bcs.option(bcs.fixedArray(32, bcs.u8())),\n }),\n Mint: bcs.struct('Mint', {\n token_id: bcs.fixedArray(32, bcs.u8()),\n amount: bcs.string(),\n }),\n ExternalClaim: bcs.struct('ExternalClaim', {\n claim: bcs.struct('ExternalClaimBody', {\n verifier_committee: bcs.vector(bcs.fixedArray(32, bcs.u8())),\n verifier_quorum: bcs.u64(),\n claim_data: bcs.vector(bcs.u8()),\n }),\n signatures: bcs.vector(bcs.tuple([bcs.fixedArray(32, bcs.u8()), bcs.fixedArray(64, bcs.u8())])),\n }),\n }),\n})\n\nexport interface PageRequest {\n limit: number\n token?: number[]\n}\n\nexport interface Pagination {\n limit?: number\n offset: number\n}\n\nexport interface Page<T> {\n data: T[]\n next_page_token: number[]\n}\n\nexport interface Timed<T> {\n data: T\n timing?: {\n signing_duration_nanos?: number\n user_time_nanos?: number\n settlement_duration_nanos: number\n }\n}\n\nexport interface TokenMetadata {\n update_id: number\n admin: number[]\n token_name: string\n decimals: number\n total_supply: string\n mints: number[][]\n}\n\nexport interface TokenInfoResponse {\n requested_token_metadata: Array<[number[], TokenMetadata]>\n}\n\nexport interface TransactionData {\n sender: number[]\n recipient: any\n nonce: number\n timestamp_nanos: string\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 FastsetClient {\n private readonly apiUrl: string\n\n constructor(config?: WarpClientConfig | { proxyUrl: string }, chain?: any) {\n if (config && 'proxyUrl' in config) {\n // Legacy constructor for executor\n this.apiUrl = config.proxyUrl\n } else if (config && chain) {\n // New constructor for data loader\n this.apiUrl = chain.defaultApiUrl\n } else {\n // Default\n this.apiUrl = 'https://rpc.fastset.xyz'\n }\n }\n\n private async makeRequest<T = any>(method: string, params: any = {}): Promise<T> {\n const response = await fetch(this.apiUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method,\n params,\n id: Date.now(),\n }),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const jsonResponse = await response.json()\n\n if (jsonResponse.error) {\n throw new Error(`JSON-RPC error ${jsonResponse.error.code}: ${jsonResponse.error.message}`)\n }\n\n return jsonResponse.result\n }\n\n async getAccountInfo(address: number[], token_balance_filter?: number[][], certificate_by_nonce?: number): Promise<AccountInfoResponse> {\n return this.makeRequest('set_getAccountInfo', {\n address,\n token_balance_filter,\n certificate_by_nonce,\n })\n }\n\n async getTokenInfo(token_ids: number[][]): Promise<TokenInfoResponse> {\n return this.makeRequest('set_getTokenInfo', {\n token_ids,\n })\n }\n\n async getTransfers(page: PageRequest): Promise<Page<Timed<any>>> {\n return this.makeRequest('set_getTransfers', { page })\n }\n\n async getClaims(confirmed: boolean, page: PageRequest): Promise<Page<Timed<any>>> {\n return this.makeRequest('set_getClaims', { confirmed, page })\n }\n\n async getClaimsByAddress(address: number[], page: Pagination): Promise<any[]> {\n return this.makeRequest('set_getClaimsByAddress', {\n address,\n page,\n })\n }\n\n async getNextNonce(address: string | number[]): Promise<number> {\n if (typeof address === 'string') {\n const addressBytes = this.addressToBytes(address)\n const accountInfo = await this.getAccountInfo(addressBytes)\n return accountInfo.next_nonce\n }\n const accountInfo = await this.getAccountInfo(address)\n return accountInfo.next_nonce\n }\n\n async submitTransaction(transaction: TransactionData, signature: number[] | Uint8Array): Promise<any> {\n const signatureArray = Array.isArray(signature) ? signature : Array.from(signature)\n return this.makeRequest('set_submitTransaction', {\n transaction,\n signature: signatureArray,\n })\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","import * as ed25519 from '@noble/ed25519'\nimport {\n AdapterWarpExecutor,\n getProviderUrl,\n getWarpActionByIndex,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { FastsetClient, TransactionData } from './sdk/FastsetClient'\nimport { Wallet } from './sdk/Wallet'\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 proxyUrl = getProviderUrl(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n this.fastsetClient = new FastsetClient({\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 private async signTransaction(transaction: TransactionData, privateKey: Uint8Array): Promise<Uint8Array> {\n // Create the message to sign following the same pattern as the original TransactionSigner\n const transactionJson = JSON.stringify(transaction, (key, value) => {\n if (value instanceof Uint8Array) {\n return Array.from(value)\n }\n return value\n })\n\n const prefix = 'Transaction::'\n const dataToSign = new TextEncoder().encode(prefix + transactionJson)\n\n return await ed25519.sign(dataToSign, privateKey)\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\n // Create transaction data for the new API\n const transactionData = {\n sender: Array.from(privateKeyBytes.slice(0, 32)), // First 32 bytes as public key\n recipient: { FastSet: transaction.recipient },\n nonce: await this.fastsetClient.getNextNonce(Wallet.encodeBech32Address(privateKeyBytes.slice(0, 32))),\n timestamp_nanos: (BigInt(Date.now()) * 1_000_000n).toString(),\n claim: {\n Transfer: {\n recipient: { FastSet: transaction.recipient },\n amount: transaction.amount,\n user_data: transaction.userData ? Array.from(transaction.userData as Uint8Array) : null,\n },\n },\n }\n\n // Sign the transaction\n const signature = await this.signTransaction(transactionData, privateKeyBytes)\n\n // Submit the transaction\n const transactionHash = await this.fastsetClient.submitTransaction(transactionData, signature)\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 * as bech32 from 'bech32'\nimport { ed } from './ed25519-setup'\nimport { Transaction } from './Transaction'\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): any {\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 {\n Transfer: {\n recipient: { FastSet: recipientBytes },\n amount: amount.toString(),\n user_data: userData,\n },\n }\n }\n\n createTransaction(nonce: number, recipient: { FastSet: Uint8Array } | { External: Uint8Array }, claim: any): Transaction {\n return new Transaction(this.publicKey, recipient, nonce, claim)\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 * 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 { FastsetTransaction } from './types'\n\nexport interface TransactionOptions {\n timestamp?: bigint\n recipient?: { FastSet: Uint8Array } | { External: Uint8Array }\n}\n\nexport class Transaction {\n private sender: Uint8Array\n private recipient: { FastSet: Uint8Array } | { External: Uint8Array }\n private nonce: number\n private claim: any\n private timestamp: bigint\n\n constructor(\n sender: Uint8Array,\n recipient: { FastSet: Uint8Array } | { External: Uint8Array },\n nonce: number,\n claim: any,\n options: TransactionOptions = {}\n ) {\n this.sender = sender\n this.recipient = recipient\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 recipient: this.recipient,\n nonce: this.nonce,\n timestamp_nanos: this.timestamp,\n claim: this.claim,\n }\n }\n\n getSender(): Uint8Array {\n return this.sender\n }\n\n getRecipient(): { FastSet: Uint8Array } | { External: Uint8Array } {\n return this.recipient\n }\n\n getNonce(): number {\n return this.nonce\n }\n\n getClaim(): any {\n return this.claim\n }\n\n getTimestamp(): bigint {\n return this.timestamp\n }\n\n static fromTransaction(transaction: FastsetTransaction): Transaction {\n return new Transaction(transaction.sender, transaction.recipient, transaction.nonce, transaction.claim, {\n timestamp: transaction.timestamp_nanos,\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 { 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":["bech32","accountInfo","bech32"]}
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "@vleap/warps-adapter-fastset",
3
- "version": "0.1.0-alpha.2",
3
+ "version": "0.1.0-alpha.20",
4
4
  "description": "Fastset adapter for Warps SDK",
5
- "main": "./dist/index.js",
5
+ "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
- "module": "./dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js",
12
+ "default": "./dist/index.mjs"
13
+ }
14
+ },
8
15
  "scripts": {
9
16
  "build": "tsup",
10
- "test": "jest --config jest.config.js",
17
+ "test": "jest --config jest.config.mjs",
11
18
  "lint": "tsc --noEmit",
12
19
  "prepare": "npm run build",
13
20
  "preversion": "npm run lint && npm run build"
@@ -30,6 +37,10 @@
30
37
  "access": "public"
31
38
  },
32
39
  "dependencies": {
33
- "@vleap/warps": "^3.0.0-alpha.60"
40
+ "@mysten/bcs": "^0.8.0",
41
+ "@noble/ed25519": "^2.1.0",
42
+ "@noble/hashes": "^1.4.0",
43
+ "@vleap/warps": "^3.0.0-alpha.95",
44
+ "bech32": "^2.0.0"
34
45
  }
35
46
  }
package/dist/index.d.mts DELETED
@@ -1,132 +0,0 @@
1
- import { AdapterFactory, CombinedWarpBuilder, WarpClientConfig, Warp, BaseWarpBuilder, WarpAction, AdapterWarpExecutor, WarpExecutable, WarpChainInfo, WarpActionInputType, AdapterWarpExplorer, AdapterWarpResults, WarpExecution, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
2
-
3
- declare const WarpFastsetConstants: {
4
- ChainName: string;
5
- ChainPrefix: string;
6
- Pi: {
7
- Identifier: string;
8
- DisplayName: string;
9
- Decimals: number;
10
- };
11
- GasLimit: {
12
- Default: number;
13
- ContractCall: number;
14
- ContractDeploy: number;
15
- Transfer: number;
16
- Approve: number;
17
- Swap: number;
18
- };
19
- GasPrice: {
20
- Default: string;
21
- Low: string;
22
- Medium: string;
23
- High: string;
24
- };
25
- Network: {
26
- Mainnet: {
27
- ChainId: string;
28
- Name: string;
29
- BlockTime: number;
30
- };
31
- Testnet: {
32
- ChainId: string;
33
- Name: string;
34
- BlockTime: number;
35
- };
36
- Devnet: {
37
- ChainId: string;
38
- Name: string;
39
- BlockTime: number;
40
- };
41
- };
42
- Validation: {
43
- AddressLength: number;
44
- HexPrefix: string;
45
- MinGasLimit: number;
46
- MaxGasLimit: number;
47
- };
48
- Timeouts: {
49
- DefaultRpcTimeout: number;
50
- GasEstimationTimeout: number;
51
- QueryTimeout: number;
52
- };
53
- };
54
-
55
- declare const getFastsetAdapter: AdapterFactory;
56
-
57
- declare class WarpFastsetBuilder implements CombinedWarpBuilder {
58
- private readonly config;
59
- private warp;
60
- private actions;
61
- constructor(config: WarpClientConfig);
62
- createFromRaw(encoded: string): Promise<Warp>;
63
- setTitle(title: string): BaseWarpBuilder;
64
- setDescription(description: string): BaseWarpBuilder;
65
- setPreview(preview: string): BaseWarpBuilder;
66
- setActions(actions: WarpAction[]): BaseWarpBuilder;
67
- addAction(action: WarpAction): BaseWarpBuilder;
68
- build(): Promise<Warp>;
69
- createInscriptionTransaction(warp: Warp): any;
70
- createFromTransaction(tx: any, validate?: boolean): Promise<Warp>;
71
- createFromTransactionHash(hash: string, cache?: any): Promise<Warp | null>;
72
- private generateHash;
73
- private validateWarp;
74
- private fetchTransaction;
75
- private getApiUrl;
76
- }
77
-
78
- declare class WarpFastsetExecutor implements AdapterWarpExecutor {
79
- private readonly config;
80
- private readonly serializer;
81
- constructor(config: WarpClientConfig);
82
- createTransaction(executable: WarpExecutable): Promise<any>;
83
- createTransferTransaction(executable: WarpExecutable): Promise<any>;
84
- createContractCallTransaction(executable: WarpExecutable): Promise<any>;
85
- executeQuery(executable: WarpExecutable): Promise<any>;
86
- preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string>;
87
- private isValidFastsetAddress;
88
- private encodeFunctionData;
89
- private executeFastsetQuery;
90
- signMessage(message: string, privateKey: string): Promise<string>;
91
- }
92
-
93
- declare class WarpFastsetExplorer implements AdapterWarpExplorer {
94
- private readonly chainInfo;
95
- private readonly chainName;
96
- constructor(chainInfo: WarpChainInfo, chainName?: string);
97
- getAccountUrl(address: string): string;
98
- getTransactionUrl(hash: string): string;
99
- getBlockUrl(blockNumber: string | number): string;
100
- getContractUrl(address: string): string;
101
- getTokenUrl(address: string): string;
102
- private getDefaultExplorerUrl;
103
- }
104
-
105
- declare class WarpFastsetResults implements AdapterWarpResults {
106
- private readonly config;
107
- private readonly serializer;
108
- constructor(config: WarpClientConfig);
109
- getTransactionExecutionResults(warp: Warp, tx: any): Promise<WarpExecution>;
110
- extractQueryResults(warp: Warp, typedValues: any[], actionIndex: number, inputs: ResolvedInput[]): Promise<{
111
- values: any[];
112
- results: WarpExecutionResults;
113
- }>;
114
- private isTransactionSuccessful;
115
- private extractGasUsed;
116
- private extractGasPrice;
117
- private extractBlockNumber;
118
- private extractTransactionHash;
119
- private extractLogs;
120
- }
121
-
122
- declare class WarpFastsetSerializer implements AdapterWarpSerializer {
123
- readonly coreSerializer: WarpSerializer;
124
- constructor();
125
- typedToString(value: any): string;
126
- typedToNative(value: any): [WarpActionInputType, WarpNativeValue];
127
- nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any;
128
- nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType;
129
- stringToTyped(value: string): any;
130
- }
131
-
132
- export { WarpFastsetBuilder, WarpFastsetConstants, WarpFastsetExecutor, WarpFastsetExplorer, WarpFastsetResults, WarpFastsetSerializer, getFastsetAdapter };