@vleap/warps-adapter-near 0.1.0-beta.5 → 0.1.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +83 -48
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +81 -46
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/WarpNearDataLoader.ts","../src/constants.ts","../src/tokens.ts","../src/WarpNearExecutor.ts","../src/WarpNearOutput.ts","../src/WarpNearSerializer.ts","../src/WarpNearExplorer.ts","../src/WarpNearWallet.ts","../src/providers/MnemonicWalletProvider.ts","../src/providers/PrivateKeyWalletProvider.ts","../src/chains/common.ts","../src/chains/near.ts"],"sourcesContent":["export * from './chains'\nexport * from './constants'\nexport * from './main'\nexport * from './tokens'\nexport * from './WarpNearDataLoader'\nexport * from './WarpNearExecutor'\nexport * from './WarpNearExplorer'\nexport * from './WarpNearOutput'\nexport * from './WarpNearSerializer'\nexport * from './WarpNearWallet'\n","import {\n AdapterWarpDataLoader,\n CacheTtl,\n getProviderConfig,\n WarpCache,\n WarpCacheKey,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { WarpNearConstants } from './constants'\nimport { findKnownTokenById, getKnownTokensForChain } from './tokens'\n\nexport class WarpNearDataLoader implements AdapterWarpDataLoader {\n private cache: WarpCache\n private nearConfig: any\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.cache = new WarpCache(config.cache?.type)\n const providerConfig = getProviderConfig(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n try {\n const near = await connect(this.nearConfig)\n const account = await near.account(address)\n const balance = await account.getAccountBalance()\n const balanceBigInt = BigInt(balance.total)\n\n return {\n chain: this.chain.name,\n address,\n balance: balanceBigInt,\n }\n } catch (error) {\n throw new Error(`Failed to get account: ${error}`)\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n try {\n const account = await this.getAccount(address)\n const assets: WarpChainAsset[] = account.balance > 0n ? [{ ...this.chain.nativeToken, amount: account.balance }] : []\n\n const env = this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'devnet' ? 'devnet' : 'testnet'\n const knownTokens = getKnownTokensForChain(this.chain.name, env)\n\n for (const token of knownTokens) {\n try {\n const near = await connect(this.nearConfig)\n const accountObj = await near.account(address)\n const balance = await accountObj.viewFunction({\n contractId: token.identifier,\n methodName: 'ft_balance_of',\n args: { account_id: address },\n })\n if (balance && BigInt(balance) > 0n) {\n assets.push({\n ...token,\n amount: BigInt(balance),\n })\n }\n } catch {\n // Token contract might not exist or method might not be available\n }\n }\n\n return assets\n } catch (error) {\n return []\n }\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n try {\n if (identifier === this.chain.nativeToken.identifier || identifier === WarpNearConstants.NativeToken.Identifier) {\n return this.chain.nativeToken\n }\n\n const cacheKey = WarpCacheKey.Asset(this.config.env, this.chain.name, identifier)\n const cachedAsset = this.cache.get<WarpChainAsset>(cacheKey)\n if (cachedAsset) {\n return cachedAsset\n }\n\n const env = this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'devnet' ? 'devnet' : 'testnet'\n const knownToken = findKnownTokenById(this.chain.name, env, identifier)\n\n if (knownToken) {\n return {\n chain: this.chain.name,\n identifier,\n name: knownToken.name,\n symbol: knownToken.symbol,\n amount: 0n,\n decimals: knownToken.decimals,\n logoUrl: knownToken.logoUrl,\n }\n }\n\n try {\n const near = await connect(this.nearConfig)\n const account = await near.account(identifier)\n const metadata = await account.viewFunction({\n contractId: identifier,\n methodName: 'ft_metadata',\n args: {},\n })\n\n const asset: WarpChainAsset = {\n chain: this.chain.name,\n identifier,\n name: metadata.name || 'Unknown Token',\n symbol: metadata.symbol || 'UNKNOWN',\n amount: 0n,\n decimals: metadata.decimals || WarpNearConstants.NativeToken.Decimals,\n logoUrl: metadata.icon || '',\n }\n\n this.cache.set(cacheKey, asset, CacheTtl.OneHour)\n\n return asset\n } catch {\n const asset: WarpChainAsset = {\n chain: this.chain.name,\n identifier,\n name: 'Unknown Token',\n symbol: 'UNKNOWN',\n amount: 0n,\n decimals: WarpNearConstants.NativeToken.Decimals,\n logoUrl: '',\n }\n\n return asset\n }\n } catch (error) {\n return null\n }\n }\n\n async getAction(identifier: string, awaitCompleted = false): Promise<WarpChainAction | null> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(identifier, this.nearConfig.networkId)\n\n if (!txStatus) return null\n\n const statusObj = txStatus.status as any\n const isSuccess = statusObj && ('SuccessValue' in statusObj || 'SuccessReceiptId' in statusObj)\n const status = isSuccess ? 'success' : 'failed'\n const transaction = txStatus.transaction\n const receipt = txStatus.receipts?.[0]\n\n const sender = transaction.signer_id\n const receiver = transaction.receiver_id\n const value = transaction.actions?.[0]?.Transfer?.deposit ? BigInt(transaction.actions[0].Transfer.deposit) : 0n\n\n return {\n chain: this.chain.name,\n id: identifier,\n receiver,\n sender,\n value,\n function: transaction.actions?.[0]?.FunctionCall?.method_name || 'transfer',\n status,\n createdAt: new Date().toISOString(),\n error: status === 'failed' ? JSON.stringify(txStatus.status) : null,\n tx: txStatus as any,\n }\n } catch (error) {\n return null\n }\n }\n\n async getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]> {\n return []\n }\n}\n","export const WarpNearConstants = {\n NativeToken: {\n Identifier: 'NEAR',\n Decimals: 24,\n },\n Gas: {\n Default: '300000000000000',\n Transfer: '100000000000000',\n FunctionCall: '300000000000000',\n },\n}\n\nexport enum NearExplorers {\n NearExplorer = 'near_explorer',\n NearBlocks = 'near_blocks',\n NearScan = 'nearscan',\n}\n\nexport type ExplorerName = NearExplorers\n\nexport const NearExplorerMap = {\n near: {\n mainnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n testnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n devnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n },\n} as const\n\nexport const ExplorerUrls: Record<ExplorerName, string> = {\n [NearExplorers.NearExplorer]: 'https://explorer.near.org',\n [NearExplorers.NearBlocks]: 'https://nearblocks.io',\n [NearExplorers.NearScan]: 'https://nearscan.io',\n}\n\nexport const NearExplorerNames = {\n mainnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n testnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n devnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n} as const\n\nexport const NearExplorerUrls: Record<ExplorerName, string> = ExplorerUrls\n","import { WarpChain, WarpChainAsset, WarpChainEnv } from '@vleap/warps'\n\nexport const NearTokens: WarpChainAsset[] = []\n\nexport const KnownTokens: Record<WarpChain, Record<string, WarpChainAsset[]>> = {\n near: {\n mainnet: NearTokens,\n testnet: NearTokens,\n devnet: NearTokens,\n },\n}\n\nexport const findKnownTokenById = (chain: WarpChain, env: WarpChainEnv, id: string): WarpChainAsset | null => {\n const chainTokens = KnownTokens[chain]?.[env] || []\n return chainTokens.find((token) => token.identifier === id) || null\n}\n\nexport const getKnownTokensForChain = (chainName: string, env: string = 'mainnet'): WarpChainAsset[] => {\n return KnownTokens[chainName]?.[env] || []\n}\n","import {\n AdapterWarpExecutor,\n applyOutputToMessages,\n extractResolvedInputValues,\n getNextInfo,\n getProviderConfig,\n getWarpActionByIndex,\n getWarpWalletAddressFromConfig,\n WarpActionExecutionResult,\n WarpChainAssetValue,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { WarpNearConstants } from './constants'\nimport { WarpNearOutput } from './WarpNearOutput'\nimport { WarpNearSerializer } from './WarpNearSerializer'\n\nexport class WarpNearExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpNearSerializer\n private readonly nearConfig: any\n private readonly output: WarpNearOutput\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpNearSerializer()\n const providerConfig = getProviderConfig(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n this.output = new WarpNearOutput(config, this.chain)\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n\n let tx: any | null = 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('WarpNearExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n } else if (action.type === 'collect') {\n throw new Error('WarpNearExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n }\n\n if (!tx) throw new Error(`WarpNearExecutor: Invalid action type (${action.type})`)\n\n return tx\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpNearExecutor: createTransfer - user address not set')\n if (!executable.destination) throw new Error('WarpNearExecutor: Destination address is required')\n\n if (executable.transfers && executable.transfers.length > 0) {\n return this.createTokenTransferTransaction(executable, userWallet)\n }\n\n const amount = executable.value > 0n ? executable.value : 0n\n const amountInYoctoNear = amount.toString()\n\n return {\n receiverId: executable.destination,\n actions: [\n {\n type: 'Transfer',\n params: {\n deposit: amountInYoctoNear,\n },\n },\n ],\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpNearExecutor: createContractCall - user address not set')\n\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (!action || !('func' in action) || !action.func) throw new Error('WarpNearExecutor: Contract action must have a function name')\n if (!executable.destination) throw new Error('WarpNearExecutor: Contract address is required')\n\n try {\n const nativeArgs = executable.args.map((arg) => this.serializer.coreSerializer.stringToNative(arg)[1])\n const args = nativeArgs.length > 0 ? nativeArgs : {}\n\n const gas = WarpNearConstants.Gas.FunctionCall\n const deposit = executable.value > 0n ? executable.value.toString() : '0'\n\n return {\n receiverId: executable.destination,\n actions: [\n {\n type: 'FunctionCall',\n params: {\n methodName: action.func,\n args,\n gas,\n deposit,\n },\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`WarpNearExecutor: Failed to create contract call: ${errorMessage}`)\n }\n }\n\n private async createTokenTransferTransaction(executable: WarpExecutable, userWallet: string): Promise<any> {\n if (executable.transfers.length === 0) throw new Error('WarpNearExecutor: No transfers provided')\n if (!this.chain.nativeToken?.identifier) throw new Error('WarpNearExecutor: No native token defined for this chain')\n\n const nativeTokenTransfers = executable.transfers.filter(\n (transfer) =>\n transfer.identifier === this.chain.nativeToken!.identifier || transfer.identifier === WarpNearConstants.NativeToken.Identifier\n )\n const ftTokenTransfers = executable.transfers.filter(\n (transfer) =>\n transfer.identifier !== this.chain.nativeToken!.identifier && transfer.identifier !== WarpNearConstants.NativeToken.Identifier\n )\n\n if (nativeTokenTransfers.length === 1 && ftTokenTransfers.length === 0) {\n const transfer = nativeTokenTransfers[0]\n if (transfer.amount <= 0n) throw new Error('WarpNearExecutor: Native token transfer amount must be positive')\n\n return {\n receiverId: executable.destination,\n actions: [\n {\n type: 'Transfer',\n params: {\n deposit: transfer.amount.toString(),\n },\n },\n ],\n }\n }\n\n if (nativeTokenTransfers.length === 0 && ftTokenTransfers.length === 1) {\n return this.createSingleTokenTransfer(executable, ftTokenTransfers[0])\n }\n\n if (executable.transfers.length > 1) throw new Error('WarpNearExecutor: Multiple token transfers not yet supported')\n\n throw new Error('WarpNearExecutor: Invalid transfer configuration')\n }\n\n private async createSingleTokenTransfer(executable: WarpExecutable, transfer: WarpChainAssetValue): Promise<any> {\n if (!executable.destination) throw new Error('WarpNearExecutor: Destination address is required')\n\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpNearExecutor: User wallet not set')\n\n const args = {\n receiver_id: executable.destination,\n amount: transfer.amount.toString(),\n }\n\n return {\n receiverId: transfer.identifier,\n actions: [\n {\n type: 'FunctionCall',\n params: {\n methodName: 'ft_transfer',\n args,\n gas: WarpNearConstants.Gas.FunctionCall,\n deposit: '1',\n },\n },\n ],\n }\n }\n\n async executeQuery(executable: WarpExecutable): Promise<WarpActionExecutionResult> {\n const action = getWarpActionByIndex(executable.warp, executable.action) as WarpQueryAction\n if (action.type !== 'query') throw new Error(`WarpNearExecutor: Invalid action type for executeQuery: ${action.type}`)\n if (!action.func) throw new Error('WarpNearExecutor: Query action must have a function name')\n\n let queryAddress: string\n try {\n if (!executable.destination) throw new Error('WarpNearExecutor: Query address is required')\n queryAddress = executable.destination\n } catch {\n throw new Error(`WarpNearExecutor: Invalid address for query: ${executable.destination}`)\n }\n\n try {\n const nativeArgs = executable.args.map((arg) => this.serializer.coreSerializer.stringToNative(arg)[1])\n const args = nativeArgs.length > 0 ? nativeArgs : {}\n\n const near = await connect(this.nearConfig)\n const account = await near.account(queryAddress)\n const result = await account.viewFunction({\n contractId: queryAddress,\n methodName: action.func,\n args,\n })\n\n const { values, output } = await this.output.extractQueryOutput(\n executable.warp,\n Array.isArray(result) ? result : [result],\n executable.action,\n executable.resolvedInputs\n )\n\n const next = getNextInfo(this.config, [], executable.warp, executable.action, output)\n\n const destinationInput = executable.resolvedInputs.find((i) => i.input.position === 'receiver' || i.input.position === 'destination')\n const destination = destinationInput?.value || executable.destination\n\n const resolvedInputs = extractResolvedInputValues(executable.resolvedInputs)\n return {\n status: 'success',\n warp: executable.warp,\n action: executable.action,\n user: getWarpWalletAddressFromConfig(this.config, executable.chain.name),\n txHash: null,\n tx: null,\n next,\n values,\n output: { ...output, _DATA: result },\n messages: applyOutputToMessages(executable.warp, output, this.config),\n destination,\n resolvedInputs,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n const destinationInput = executable.resolvedInputs.find((i) => i.input.position === 'receiver' || i.input.position === 'destination')\n const destination = destinationInput?.value || executable.destination\n\n const resolvedInputs = extractResolvedInputValues(executable.resolvedInputs)\n return {\n status: 'error',\n warp: executable.warp,\n action: executable.action,\n user: getWarpWalletAddressFromConfig(this.config, executable.chain.name),\n txHash: null,\n tx: null,\n next: null,\n values: { string: [], native: [], mapped: {} },\n output: { _DATA: errorMessage, _ERROR: errorMessage },\n messages: {},\n destination,\n resolvedInputs,\n }\n }\n }\n}\n","import {\n AdapterWarpOutput,\n evaluateOutputCommon,\n extractResolvedInputValues,\n getProviderConfig,\n getWarpWalletAddressFromConfig,\n parseOutputOutIndex,\n ResolvedInput,\n Warp,\n WarpActionExecutionResult,\n WarpActionIndex,\n WarpAdapterGenericRemoteTransaction,\n WarpCache,\n WarpCacheKey,\n WarpChainAction,\n WarpChainInfo,\n WarpClientConfig,\n WarpConstants,\n WarpExecutionOutput,\n WarpNativeValue,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { WarpNearSerializer } from './WarpNearSerializer'\n\nexport class WarpNearOutput implements AdapterWarpOutput {\n private readonly serializer: WarpNearSerializer\n private readonly nearConfig: any\n private readonly cache: WarpCache\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpNearSerializer()\n const providerConfig = getProviderConfig(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n this.cache = new WarpCache(config.cache?.type)\n }\n\n async getActionExecution(\n warp: Warp,\n actionIndex: WarpActionIndex,\n tx: WarpAdapterGenericRemoteTransaction\n ): Promise<WarpActionExecutionResult> {\n const inputs: ResolvedInput[] = this.cache.get(WarpCacheKey.WarpExecutable(this.config.env, warp.meta?.hash || '', actionIndex)) ?? []\n const resolvedInputs = extractResolvedInputValues(inputs)\n\n if (!tx) {\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n\n if ('status' in tx && typeof tx.status === 'string') {\n return this.handleWarpChainAction(warp, actionIndex, tx as WarpChainAction, resolvedInputs)\n }\n\n if (typeof tx === 'string') {\n return this.handleTransactionHash(warp, actionIndex, tx, resolvedInputs)\n }\n\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n\n private createFailedExecution(warp: Warp, actionIndex: WarpActionIndex, resolvedInputs: string[] = []): WarpActionExecutionResult {\n return {\n status: 'error',\n warp,\n action: actionIndex,\n user: getWarpWalletAddressFromConfig(this.config, this.chain.name),\n txHash: '',\n tx: null,\n next: null,\n values: { string: [], native: [], mapped: {} },\n output: {},\n messages: {},\n destination: null,\n resolvedInputs,\n }\n }\n\n private handleWarpChainAction(\n warp: Warp,\n actionIndex: WarpActionIndex,\n tx: WarpChainAction,\n resolvedInputs: string[] = []\n ): WarpActionExecutionResult {\n const success = tx.status === 'success'\n const transactionHash = tx.id || tx.tx?.hash || ''\n\n const rawValues = [transactionHash]\n const stringValues = rawValues.map(String)\n\n return {\n status: success ? 'success' : 'error',\n warp,\n action: actionIndex,\n user: getWarpWalletAddressFromConfig(this.config, this.chain.name),\n txHash: transactionHash,\n tx,\n next: null,\n values: { string: stringValues, native: rawValues, mapped: {} },\n output: {},\n messages: {},\n destination: null,\n resolvedInputs,\n }\n }\n\n private async handleTransactionHash(\n warp: Warp,\n actionIndex: WarpActionIndex,\n hash: string,\n resolvedInputs: string[] = []\n ): Promise<WarpActionExecutionResult> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(hash, this.nearConfig.networkId)\n\n if (!txStatus) {\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n\n const statusObj = txStatus.status as any\n const success = statusObj && ('SuccessValue' in statusObj || 'SuccessReceiptId' in statusObj)\n const transaction = txStatus.transaction\n\n const rawValues = [hash]\n const stringValues = rawValues.map(String)\n\n return {\n status: success ? 'success' : 'error',\n warp,\n action: actionIndex,\n user: getWarpWalletAddressFromConfig(this.config, this.chain.name),\n txHash: hash,\n tx: {\n hash,\n transaction,\n status: txStatus.status,\n } as any,\n next: null,\n values: { string: stringValues, native: rawValues, mapped: {} },\n output: {},\n messages: {},\n destination: null,\n resolvedInputs,\n }\n } catch (error) {\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n }\n\n async extractQueryOutput(\n warp: Warp,\n typedValues: unknown[],\n actionIndex: number,\n inputs: ResolvedInput[]\n ): Promise<{ values: { string: string[]; native: WarpNativeValue[]; mapped: Record<string, any> }; output: WarpExecutionOutput }> {\n const stringValues = typedValues.map((t) => this.serializer.typedToString(t))\n const nativeValues = typedValues.map((t) => this.serializer.typedToNative(t)[1])\n const values = { string: stringValues, native: nativeValues, mapped: {} }\n let output: WarpExecutionOutput = {}\n\n if (!warp.output) return { values, output }\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: unknown = nativeValues[indices[0]]\n for (let i = 1; i < indices.length; i++) {\n if (value === undefined || value === null) return undefined\n value = (value as Record<string, unknown>)[indices[i]]\n }\n return value\n }\n\n for (const [key, path] of Object.entries(warp.output)) {\n if (path.startsWith(WarpConstants.Transform.Prefix)) continue\n const currentActionIndex = parseOutputOutIndex(path)\n if (currentActionIndex !== null && currentActionIndex !== actionIndex) {\n output[key] = null\n continue\n }\n if (path.startsWith('out.') || path === 'out' || path.startsWith('out[')) {\n output[key] = getNestedValue(path) || null\n } else {\n output[key] = path\n }\n }\n\n return { values, output: await evaluateOutputCommon(warp, output, actionIndex, inputs, this.serializer.coreSerializer, this.config) }\n }\n\n async getTransactionStatus(\n txHash: string\n ): Promise<{ status: 'pending' | 'confirmed' | 'failed'; blockNumber?: number; gasUsed?: bigint }> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(txHash, this.nearConfig.networkId)\n\n if (!txStatus) {\n return { status: 'pending' }\n }\n\n const statusObj = txStatus.status as any\n const isSuccess = statusObj && ('SuccessValue' in statusObj || 'SuccessReceiptId' in statusObj)\n return {\n status: isSuccess ? 'confirmed' : 'failed',\n blockNumber: (txStatus.transaction_outcome as any)?.block_hash ? 0 : undefined,\n gasUsed: BigInt(0),\n }\n } catch (error) {\n throw new Error(`Failed to get transaction status: ${error}`)\n }\n }\n\n async getTransactionReceipt(txHash: string): Promise<any> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(txHash, this.nearConfig.networkId)\n\n if (!txStatus) {\n return null\n }\n\n return {\n hash: txHash,\n transaction: txStatus.transaction,\n status: txStatus.status as any,\n }\n } catch (error) {\n return null\n }\n }\n}\n","import {\n AdapterWarpSerializer,\n BaseWarpActionInputType,\n WarpActionInputType,\n WarpAdapterGenericType,\n WarpConstants,\n WarpNativeValue,\n WarpSerializer,\n} from '@vleap/warps'\n\nexport class WarpNearSerializer 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 if (value.endsWith('.near') || (value.length > 2 && value.length < 65 && /^[a-z0-9._-]+$/.test(value) && !value.includes(' '))) {\n return `address:${value}`\n }\n if (value.startsWith('0x') || /^[0-9a-fA-F]+$/.test(value)) {\n return `hex:${value}`\n }\n return `string:${value}`\n }\n if (typeof value === 'number') {\n if (Number.isInteger(value)) {\n if (value >= 0 && value <= 255) return `uint8:${value}`\n if (value >= 0 && value <= 65535) return `uint16:${value}`\n if (value >= 0 && value <= 4294967295) return `uint32:${value}`\n return `uint64:${value}`\n }\n return `string:${value}`\n }\n if (typeof value === 'bigint') {\n return `biguint:${value.toString()}`\n }\n if (typeof value === 'boolean') {\n return `boolean:${value}`\n }\n if (value instanceof Uint8Array) {\n return `hex:${Buffer.from(value).toString('hex')}`\n }\n if (typeof value === 'object' && value !== null && 'identifier' in value && 'amount' in value) {\n const asset = value as { identifier: string; amount: bigint; decimals?: number }\n if (asset.decimals !== undefined) {\n return `asset:${asset.identifier}${WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}${WarpConstants.ArgCompositeSeparator}${asset.decimals}`\n }\n return `asset:${asset.identifier}${WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}`\n }\n if (Array.isArray(value)) {\n if (value.length === 0) return `list:string:`\n const types = value.map((item) => this.typedToString(item).split(WarpConstants.ArgParamsSeparator)[0]) as BaseWarpActionInputType[]\n const type = types[0] as BaseWarpActionInputType\n const values = value.map((item) => this.typedToString(item).split(WarpConstants.ArgParamsSeparator)[1]) as WarpNativeValue[]\n return `list:${type}:${values.join(',')}`\n }\n if (value === null || value === undefined) {\n return `string:null`\n }\n return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\n const stringValue = this.typedToString(value)\n const [type, ...valueParts] = stringValue.split(WarpConstants.ArgParamsSeparator)\n const nativeValue = valueParts.join(WarpConstants.ArgParamsSeparator)\n return [type, this.parseNativeValue(type, nativeValue)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\n switch (type) {\n case 'string':\n return String(value)\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n return BigInt(value as string | number)\n case 'biguint':\n return BigInt(value as string | number)\n case 'boolean':\n return Boolean(value)\n case 'address':\n return String(value)\n case 'hex':\n return String(value)\n case 'asset':\n if (typeof value === 'object' && value !== null && 'identifier' in value && 'amount' in value) {\n return value\n }\n return value\n default:\n if (type.startsWith('list:')) {\n const [, itemType, itemsStr] = type.split(':')\n if (!itemsStr) return []\n const items = itemsStr.split(',')\n return items.map((item) => this.nativeToTyped(itemType, item))\n }\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n switch (type) {\n case 'string':\n return 'string'\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n case 'biguint':\n return 'bigint'\n case 'boolean':\n return 'boolean'\n case 'address':\n return 'string'\n case 'hex':\n return 'string'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\n const parts = value.split(WarpConstants.ArgParamsSeparator, 2)\n if (parts.length < 2) {\n return value\n }\n\n const [type, stringValue] = parts\n\n switch (type) {\n case 'string':\n return stringValue\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n return BigInt(stringValue)\n case 'biguint':\n return BigInt(stringValue)\n case 'boolean':\n return stringValue === 'true'\n case 'address':\n return stringValue\n case 'hex':\n return stringValue\n case 'asset':\n const assetParts = stringValue.split(WarpConstants.ArgCompositeSeparator)\n const identifier = assetParts[0] || ''\n const amount = assetParts[1] ? BigInt(assetParts[1]) : 0n\n const decimals = assetParts[2] ? parseInt(assetParts[2], 10) : undefined\n return { identifier, amount, decimals }\n default:\n if (type.startsWith('list:')) {\n const [, itemType, itemsStr] = type.split(':')\n if (!itemsStr) return []\n const items = itemsStr.split(',')\n return items.map((item) => this.stringToTyped(`${itemType}:${item}`))\n }\n return stringValue\n }\n }\n\n private parseNativeValue(type: string, value: string): WarpNativeValue {\n switch (type) {\n case 'string':\n return value\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n case 'biguint':\n return BigInt(value)\n case 'boolean':\n return value === 'true'\n case 'address':\n return value\n case 'hex':\n return value\n default:\n return value\n }\n }\n}\n","import { AdapterWarpExplorer, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { ExplorerName, NearExplorerNames, NearExplorers, NearExplorerUrls } from './constants'\n\nexport class WarpNearExplorer implements AdapterWarpExplorer {\n constructor(\n private readonly chain: WarpChainInfo,\n private readonly config: WarpClientConfig\n ) {}\n\n private getExplorers(): readonly ExplorerName[] {\n const explorers = NearExplorerNames[this.config.env]\n if (!explorers) {\n return [NearExplorers.NearExplorer as ExplorerName]\n }\n return explorers\n }\n\n private getPrimaryExplorer(): ExplorerName {\n const explorers = this.getExplorers()\n return explorers[0]\n }\n\n private getExplorerUrlByName(explorer?: ExplorerName): string {\n const userPreference = this.config.preferences?.explorers?.[this.chain.name]\n\n if (userPreference && !explorer) {\n const url = NearExplorerUrls[userPreference as ExplorerName]\n if (url) return url\n }\n\n if (explorer) {\n const url = NearExplorerUrls[explorer]\n if (url) return url\n }\n\n const primaryExplorer = this.getPrimaryExplorer()\n const url = NearExplorerUrls[primaryExplorer]\n return url || NearExplorerUrls[primaryExplorer]\n }\n\n getAccountUrl(address: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/accounts/${address}`\n }\n\n getTransactionUrl(hash: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/transactions/${hash}`\n }\n\n getBlockUrl(blockNumber: string | number, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/blocks/${blockNumber}`\n }\n\n getAssetUrl(identifier: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/tokens/${identifier}`\n }\n\n getContractUrl(address: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/accounts/${address}`\n }\n\n getAllExplorers(): readonly ExplorerName[] {\n return this.getExplorers()\n }\n\n getExplorerByName(name: string): ExplorerName | undefined {\n const explorers = this.getExplorers()\n return explorers.find((explorer) => explorer.toLowerCase() === name.toLowerCase())\n }\n\n getAccountUrls(address: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/accounts/${address}`\n }\n })\n\n return urls\n }\n\n getTransactionUrls(hash: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/transactions/${hash}`\n }\n })\n\n return urls\n }\n\n getAssetUrls(identifier: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/tokens/${identifier}`\n }\n })\n\n return urls\n }\n\n getContractUrls(address: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/accounts/${address}`\n }\n })\n\n return urls\n }\n\n getBlockUrls(blockNumber: string | number): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/blocks/${blockNumber}`\n }\n })\n\n return urls\n }\n}\n","import {\n AdapterWarpWallet,\n getProviderConfig,\n initializeWalletCache,\n WalletProvider,\n WarpAdapterGenericTransaction,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { MnemonicWalletProvider } from './providers/MnemonicWalletProvider'\nimport { PrivateKeyWalletProvider } from './providers/PrivateKeyWalletProvider'\n\nexport class WarpNearWallet implements AdapterWarpWallet {\n private nearConfig: any\n private walletProvider: WalletProvider | null\n private cachedAddress: string | null = null\n private cachedPublicKey: string | null = null\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {\n const providerConfig = getProviderConfig(config, chain.name, config.env, chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n this.walletProvider = this.createProvider()\n this.initializeCache()\n }\n\n private createProvider(): WalletProvider | null {\n const wallet = this.config.user?.wallets?.[this.chain.name]\n if (!wallet) return null\n if (typeof wallet === 'string') throw new Error(`Wallet can not be used for signing: ${wallet}`)\n\n const customWalletProviders = this.config.walletProviders?.[this.chain.name]\n const providerFactory = customWalletProviders?.[wallet.provider]\n if (providerFactory) return providerFactory(this.config, this.chain)\n\n if (wallet.provider === 'privateKey') return new PrivateKeyWalletProvider(this.config, this.chain)\n if (wallet.provider === 'mnemonic') return new MnemonicWalletProvider(this.config, this.chain)\n throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${wallet.provider}`)\n }\n\n private initializeCache() {\n initializeWalletCache(this.walletProvider).then((cache: { address: string | null; publicKey: string | null }) => {\n this.cachedAddress = cache.address\n this.cachedPublicKey = cache.publicKey\n })\n }\n\n async signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction> {\n if (!tx || typeof tx !== 'object') throw new Error('Invalid transaction object')\n if (!this.walletProvider) throw new Error('No wallet provider available')\n\n const accountId = this.getAddress()\n if (!accountId) throw new Error('No account ID available')\n\n if (this.walletProvider instanceof PrivateKeyWalletProvider || this.walletProvider instanceof MnemonicWalletProvider) {\n const keyPair = this.walletProvider.getKeyPairInstance()\n await this.nearConfig.keyStore.setKey(this.nearConfig.networkId, accountId, keyPair)\n const near = await connect(this.nearConfig)\n const account = await near.account(accountId)\n\n if (tx.signature) {\n return tx\n }\n\n const signedTx = await account.signAndSendTransaction({\n receiverId: tx.receiverId,\n actions: tx.actions,\n })\n\n return {\n ...tx,\n signature: signedTx.transaction.hash,\n transactionHash: signedTx.transaction.hash,\n }\n }\n\n throw new Error('Wallet provider does not support signing transactions')\n }\n\n async signTransactions(txs: WarpAdapterGenericTransaction[]): Promise<WarpAdapterGenericTransaction[]> {\n if (txs.length === 0) return []\n\n return Promise.all(txs.map(async (tx) => this.signTransaction(tx)))\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.walletProvider) throw new Error('No wallet provider available')\n return await this.walletProvider.signMessage(message)\n }\n\n async sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string> {\n if (!tx || typeof tx !== 'object') throw new Error('Invalid transaction object')\n if (!this.walletProvider) throw new Error('No wallet provider available')\n\n const accountId = this.getAddress()\n if (!accountId) throw new Error('No account ID available')\n\n if (tx.transactionHash) {\n return tx.transactionHash\n }\n\n if (this.walletProvider instanceof PrivateKeyWalletProvider || this.walletProvider instanceof MnemonicWalletProvider) {\n const keyPair = this.walletProvider.getKeyPairInstance()\n await this.nearConfig.keyStore.setKey(this.nearConfig.networkId, accountId, keyPair)\n const near = await connect(this.nearConfig)\n const account = await near.account(accountId)\n\n const result = await account.signAndSendTransaction({\n receiverId: tx.receiverId,\n actions: tx.actions,\n })\n\n return result.transaction.hash\n }\n\n throw new Error('Wallet provider does not support sending transactions')\n }\n\n async sendTransactions(txs: WarpAdapterGenericTransaction[]): Promise<string[]> {\n return Promise.all(txs.map(async (tx) => this.sendTransaction(tx)))\n }\n\n create(mnemonic: string): WarpWalletDetails {\n if (!this.walletProvider) throw new Error('No wallet provider available')\n return this.walletProvider.create(mnemonic)\n }\n\n generate(): WarpWalletDetails {\n if (!this.walletProvider) throw new Error('No wallet provider available')\n return this.walletProvider.generate()\n }\n\n getAddress(): string | null {\n return this.cachedAddress\n }\n\n getPublicKey(): string | null {\n return this.cachedPublicKey\n }\n}\n","import { WalletProvider, WarpWalletDetails } from '@vleap/warps'\nimport { keyToImplicitAddress } from '@near-js/crypto'\nimport * as bip39 from '@scure/bip39'\nimport { wordlist } from '@scure/bip39/wordlists/english.js'\nimport { getWarpWalletAddressFromConfig, getWarpWalletMnemonicFromConfig, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport bs58 from 'bs58'\nimport { KeyPair } from 'near-api-js'\n\nexport class MnemonicWalletProvider implements WalletProvider {\n private keypair: KeyPair | null = null\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {}\n\n async getAddress(): Promise<string | null> {\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (address) return address\n\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return keyToImplicitAddress(publicKey.toString())\n } catch {\n return null\n }\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return publicKey.toString()\n } catch {\n return null\n }\n }\n\n async signTransaction(tx: any): Promise<any> {\n const keypair = this.getKeyPair()\n // Near transactions are signed via the account, not the keypair directly\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const keypair = this.getKeyPair()\n const messageBytes = new TextEncoder().encode(message)\n const signature = keypair.sign(messageBytes)\n return bs58.encode(signature.signature)\n }\n\n getKeyPairInstance(): KeyPair {\n return this.getKeyPair()\n }\n\n create(mnemonic: string): WarpWalletDetails {\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const keyPair = KeyPair.fromRandom('ed25519')\n const publicKey = keyPair.getPublicKey()\n const accountId = keyToImplicitAddress(publicKey.toString())\n return {\n provider: 'mnemonic',\n address: accountId,\n privateKey: keyPair.toString(),\n mnemonic,\n }\n }\n\n generate(): WarpWalletDetails {\n const mnemonic = bip39.generateMnemonic(wordlist)\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const keyPair = KeyPair.fromRandom('ed25519')\n const publicKey = keyPair.getPublicKey()\n const accountId = keyToImplicitAddress(publicKey.toString())\n return {\n provider: 'mnemonic',\n address: accountId,\n privateKey: keyPair.toString(),\n mnemonic,\n }\n }\n\n private getKeyPair(): KeyPair {\n if (this.keypair) return this.keypair\n\n const mnemonic = getWarpWalletMnemonicFromConfig(this.config, this.chain.name)\n if (!mnemonic) throw new Error('No mnemonic provided')\n\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n this.keypair = KeyPair.fromRandom('ed25519')\n return this.keypair\n }\n}\n","import { WalletProvider, WarpWalletDetails } from '@vleap/warps'\nimport { keyToImplicitAddress } from '@near-js/crypto'\nimport * as bip39 from '@scure/bip39'\nimport { wordlist } from '@scure/bip39/wordlists/english.js'\nimport { getWarpWalletAddressFromConfig, getWarpWalletPrivateKeyFromConfig, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport bs58 from 'bs58'\nimport { KeyPair } from 'near-api-js'\n\nexport class PrivateKeyWalletProvider implements WalletProvider {\n private keypair: KeyPair | null = null\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {}\n\n async getAddress(): Promise<string | null> {\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (address) return address\n\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return keyToImplicitAddress(publicKey.toString())\n } catch {\n return null\n }\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return publicKey.toString()\n } catch {\n return null\n }\n }\n\n async signTransaction(tx: any): Promise<any> {\n const keypair = this.getKeyPair()\n // Near transactions are signed via the account, not the keypair directly\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const keypair = this.getKeyPair()\n const messageBytes = new TextEncoder().encode(message)\n const signature = keypair.sign(messageBytes)\n return bs58.encode(signature.signature)\n }\n\n getKeyPairInstance(): KeyPair {\n return this.getKeyPair()\n }\n\n create(mnemonic: string): WarpWalletDetails {\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const keyPair = KeyPair.fromRandom('ed25519')\n const publicKey = keyPair.getPublicKey()\n const accountId = keyToImplicitAddress(publicKey.toString())\n return {\n provider: 'privateKey',\n address: accountId,\n privateKey: keyPair.toString(),\n mnemonic,\n }\n }\n\n generate(): WarpWalletDetails {\n const mnemonic = bip39.generateMnemonic(wordlist)\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const keyPair = KeyPair.fromRandom('ed25519')\n const publicKey = keyPair.getPublicKey()\n const accountId = keyToImplicitAddress(publicKey.toString())\n return {\n provider: 'privateKey',\n address: accountId,\n privateKey: keyPair.toString(),\n mnemonic,\n }\n }\n\n private getKeyPair(): KeyPair {\n if (this.keypair) return this.keypair\n\n const privateKey = getWarpWalletPrivateKeyFromConfig(this.config, this.chain.name)\n if (!privateKey) throw new Error('No private key provided')\n\n try {\n return KeyPair.fromString(privateKey as any)\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Invalid private key format: ${error.message}`)\n }\n throw new Error('Invalid private key format')\n }\n }\n}\n","import { ChainAdapter, ChainAdapterFactory, WarpChain, WarpChainEnv, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { WarpNearDataLoader } from '../WarpNearDataLoader'\nimport { WarpNearExecutor } from '../WarpNearExecutor'\nimport { WarpNearExplorer } from '../WarpNearExplorer'\nimport { WarpNearOutput } from '../WarpNearOutput'\nimport { WarpNearSerializer } from '../WarpNearSerializer'\nimport { WarpNearWallet } from '../WarpNearWallet'\n\nexport const createNearAdapter = (chainName: WarpChain, chainInfos: Record<WarpChainEnv, WarpChainInfo>): ChainAdapterFactory => {\n return (config: WarpClientConfig, fallback?: ChainAdapter) => {\n if (!fallback) throw new Error(`${chainName} adapter requires a fallback adapter`)\n\n return {\n chainInfo: chainInfos[config.env],\n builder: () => fallback.builder(),\n executor: new WarpNearExecutor(config, chainInfos[config.env]),\n output: new WarpNearOutput(config, chainInfos[config.env]),\n serializer: new WarpNearSerializer(),\n registry: fallback.registry,\n explorer: new WarpNearExplorer(chainInfos[config.env], config),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpNearDataLoader(config, chainInfos[config.env]),\n wallet: new WarpNearWallet(config, chainInfos[config.env]),\n }\n }\n}\n","import { ChainAdapterFactory, WarpChain, WarpChainAsset, WarpChainName } from '@vleap/warps'\nimport { createNearAdapter } from './common'\n\nexport const NativeTokenNear: WarpChainAsset = {\n chain: 'near' as WarpChainName,\n identifier: 'NEAR',\n symbol: 'NEAR',\n name: 'NEAR',\n decimals: 24,\n logoUrl: 'https://joai.ai/images/tokens/near-black.svg',\n}\n\nexport const NearAdapter: ChainAdapterFactory = createNearAdapter('near' as WarpChain, {\n mainnet: {\n name: 'near' as WarpChainName,\n displayName: 'NEAR Mainnet',\n chainId: 'mainnet',\n blockTime: 1200,\n addressHrp: '',\n defaultApiUrl: 'https://rpc.mainnet.near.org',\n logoUrl: 'https://joai.ai/images/chains/near-black.svg',\n nativeToken: NativeTokenNear,\n },\n testnet: {\n name: 'near' as WarpChainName,\n displayName: 'NEAR Testnet',\n chainId: 'testnet',\n blockTime: 1200,\n addressHrp: '',\n defaultApiUrl: 'https://rpc.testnet.near.org',\n logoUrl: 'https://joai.ai/images/chains/near-black.svg',\n nativeToken: NativeTokenNear,\n },\n devnet: {\n name: 'near' as WarpChainName,\n displayName: 'NEAR Devnet',\n chainId: 'testnet',\n blockTime: 1200,\n addressHrp: '',\n defaultApiUrl: 'https://rpc.testnet.near.org',\n logoUrl: 'https://joai.ai/images/chains/near-black.svg',\n nativeToken: NativeTokenNear,\n },\n})\n"],"mappings":"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","names":["NearExplorers","import_warps","import_near_api_js","import_warps","import_near_api_js","import_warps","url","import_warps","import_near_api_js","import_warps","import_near_api_js","bs58","import_crypto","bip39","import_english","import_warps","import_bs58","import_near_api_js","bs58"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/WarpNearDataLoader.ts","../src/constants.ts","../src/tokens.ts","../src/WarpNearExecutor.ts","../src/WarpNearOutput.ts","../src/WarpNearSerializer.ts","../src/WarpNearExplorer.ts","../src/WarpNearWallet.ts","../src/providers/MnemonicWalletProvider.ts","../src/providers/PrivateKeyWalletProvider.ts","../src/providers/ReadOnlyWalletProvider.ts","../src/chains/common.ts","../src/chains/near.ts"],"sourcesContent":["export * from './chains'\nexport * from './constants'\nexport * from './main'\nexport * from './tokens'\nexport * from './WarpNearDataLoader'\nexport * from './WarpNearExecutor'\nexport * from './WarpNearExplorer'\nexport * from './WarpNearOutput'\nexport * from './WarpNearSerializer'\nexport * from './WarpNearWallet'\n","import {\n AdapterWarpDataLoader,\n CacheTtl,\n getProviderConfig,\n WarpCache,\n WarpCacheKey,\n WarpChainAccount,\n WarpChainAction,\n WarpChainAsset,\n WarpChainInfo,\n WarpClientConfig,\n WarpDataLoaderOptions,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { WarpNearConstants } from './constants'\nimport { findKnownTokenById, getKnownTokensForChain } from './tokens'\n\nexport class WarpNearDataLoader implements AdapterWarpDataLoader {\n private cache: WarpCache\n private nearConfig: any\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.cache = new WarpCache(config.cache?.type)\n const providerConfig = getProviderConfig(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n }\n\n async getAccount(address: string): Promise<WarpChainAccount> {\n try {\n const near = await connect(this.nearConfig)\n const account = await near.account(address)\n const balance = await account.getAccountBalance()\n const balanceBigInt = BigInt(balance.total)\n\n return {\n chain: this.chain.name,\n address,\n balance: balanceBigInt,\n }\n } catch (error) {\n throw new Error(`Failed to get account: ${error}`)\n }\n }\n\n async getAccountAssets(address: string): Promise<WarpChainAsset[]> {\n try {\n const account = await this.getAccount(address)\n const assets: WarpChainAsset[] = account.balance > 0n ? [{ ...this.chain.nativeToken, amount: account.balance }] : []\n\n const env = this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'devnet' ? 'devnet' : 'testnet'\n const knownTokens = getKnownTokensForChain(this.chain.name, env)\n\n for (const token of knownTokens) {\n try {\n const near = await connect(this.nearConfig)\n const accountObj = await near.account(address)\n const balance = await accountObj.viewFunction({\n contractId: token.identifier,\n methodName: 'ft_balance_of',\n args: { account_id: address },\n })\n if (balance && BigInt(balance) > 0n) {\n assets.push({\n ...token,\n amount: BigInt(balance),\n })\n }\n } catch {\n // Token contract might not exist or method might not be available\n }\n }\n\n return assets\n } catch (error) {\n return []\n }\n }\n\n async getAsset(identifier: string): Promise<WarpChainAsset | null> {\n try {\n if (identifier === this.chain.nativeToken.identifier || identifier === WarpNearConstants.NativeToken.Identifier) {\n return this.chain.nativeToken\n }\n\n const cacheKey = WarpCacheKey.Asset(this.config.env, this.chain.name, identifier)\n const cachedAsset = this.cache.get<WarpChainAsset>(cacheKey)\n if (cachedAsset) {\n return cachedAsset\n }\n\n const env = this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'devnet' ? 'devnet' : 'testnet'\n const knownToken = findKnownTokenById(this.chain.name, env, identifier)\n\n if (knownToken) {\n return {\n chain: this.chain.name,\n identifier,\n name: knownToken.name,\n symbol: knownToken.symbol,\n amount: 0n,\n decimals: knownToken.decimals,\n logoUrl: knownToken.logoUrl,\n }\n }\n\n try {\n const near = await connect(this.nearConfig)\n const account = await near.account(identifier)\n const metadata = await account.viewFunction({\n contractId: identifier,\n methodName: 'ft_metadata',\n args: {},\n })\n\n const asset: WarpChainAsset = {\n chain: this.chain.name,\n identifier,\n name: metadata.name || 'Unknown Token',\n symbol: metadata.symbol || 'UNKNOWN',\n amount: 0n,\n decimals: metadata.decimals || WarpNearConstants.NativeToken.Decimals,\n logoUrl: metadata.icon || '',\n }\n\n this.cache.set(cacheKey, asset, CacheTtl.OneHour)\n\n return asset\n } catch {\n const asset: WarpChainAsset = {\n chain: this.chain.name,\n identifier,\n name: 'Unknown Token',\n symbol: 'UNKNOWN',\n amount: 0n,\n decimals: WarpNearConstants.NativeToken.Decimals,\n logoUrl: '',\n }\n\n return asset\n }\n } catch (error) {\n return null\n }\n }\n\n async getAction(identifier: string, awaitCompleted = false): Promise<WarpChainAction | null> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(identifier, this.nearConfig.networkId)\n\n if (!txStatus) return null\n\n const statusObj = txStatus.status as any\n const isSuccess = statusObj && ('SuccessValue' in statusObj || 'SuccessReceiptId' in statusObj)\n const status = isSuccess ? 'success' : 'failed'\n const transaction = txStatus.transaction\n const receipt = txStatus.receipts?.[0]\n\n const sender = transaction.signer_id\n const receiver = transaction.receiver_id\n const value = transaction.actions?.[0]?.Transfer?.deposit ? BigInt(transaction.actions[0].Transfer.deposit) : 0n\n\n return {\n chain: this.chain.name,\n id: identifier,\n receiver,\n sender,\n value,\n function: transaction.actions?.[0]?.FunctionCall?.method_name || 'transfer',\n status,\n createdAt: new Date().toISOString(),\n error: status === 'failed' ? JSON.stringify(txStatus.status) : null,\n tx: txStatus as any,\n }\n } catch (error) {\n return null\n }\n }\n\n async getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]> {\n return []\n }\n}\n","export const WarpNearConstants = {\n NativeToken: {\n Identifier: 'NEAR',\n Decimals: 24,\n },\n Gas: {\n Default: '300000000000000',\n Transfer: '100000000000000',\n FunctionCall: '300000000000000',\n },\n}\n\nexport enum NearExplorers {\n NearExplorer = 'near_explorer',\n NearBlocks = 'near_blocks',\n NearScan = 'nearscan',\n}\n\nexport type ExplorerName = NearExplorers\n\nexport const NearExplorerMap = {\n near: {\n mainnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n testnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n devnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n },\n} as const\n\nexport const ExplorerUrls: Record<ExplorerName, string> = {\n [NearExplorers.NearExplorer]: 'https://explorer.near.org',\n [NearExplorers.NearBlocks]: 'https://nearblocks.io',\n [NearExplorers.NearScan]: 'https://nearscan.io',\n}\n\nexport const NearExplorerNames = {\n mainnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n testnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n devnet: [NearExplorers.NearExplorer, NearExplorers.NearBlocks, NearExplorers.NearScan] as const,\n} as const\n\nexport const NearExplorerUrls: Record<ExplorerName, string> = ExplorerUrls\n","import { WarpChain, WarpChainAsset, WarpChainEnv } from '@vleap/warps'\n\nexport const NearTokens: WarpChainAsset[] = []\n\nexport const KnownTokens: Record<WarpChain, Record<string, WarpChainAsset[]>> = {\n near: {\n mainnet: NearTokens,\n testnet: NearTokens,\n devnet: NearTokens,\n },\n}\n\nexport const findKnownTokenById = (chain: WarpChain, env: WarpChainEnv, id: string): WarpChainAsset | null => {\n const chainTokens = KnownTokens[chain]?.[env] || []\n return chainTokens.find((token) => token.identifier === id) || null\n}\n\nexport const getKnownTokensForChain = (chainName: string, env: string = 'mainnet'): WarpChainAsset[] => {\n return KnownTokens[chainName]?.[env] || []\n}\n","import {\n AdapterWarpExecutor,\n applyOutputToMessages,\n extractResolvedInputValues,\n getNextInfo,\n getProviderConfig,\n getWarpActionByIndex,\n getWarpWalletAddressFromConfig,\n WarpActionExecutionResult,\n WarpChainAssetValue,\n WarpChainInfo,\n WarpClientConfig,\n WarpExecutable,\n WarpQueryAction,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { WarpNearConstants } from './constants'\nimport { WarpNearOutput } from './WarpNearOutput'\nimport { WarpNearSerializer } from './WarpNearSerializer'\n\nexport class WarpNearExecutor implements AdapterWarpExecutor {\n private readonly serializer: WarpNearSerializer\n private readonly nearConfig: any\n private readonly output: WarpNearOutput\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpNearSerializer()\n const providerConfig = getProviderConfig(this.config, chain.name, this.config.env, this.chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n this.output = new WarpNearOutput(config, this.chain)\n }\n\n async createTransaction(executable: WarpExecutable): Promise<any> {\n const action = getWarpActionByIndex(executable.warp, executable.action)\n\n let tx: any | null = 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('WarpNearExecutor: Invalid action type for createTransaction; Use executeQuery instead')\n } else if (action.type === 'collect') {\n throw new Error('WarpNearExecutor: Invalid action type for createTransaction; Use executeCollect instead')\n }\n\n if (!tx) throw new Error(`WarpNearExecutor: Invalid action type (${action.type})`)\n\n return tx\n }\n\n async createTransferTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpNearExecutor: createTransfer - user address not set')\n if (!executable.destination) throw new Error('WarpNearExecutor: Destination address is required')\n\n if (executable.transfers && executable.transfers.length > 0) {\n return this.createTokenTransferTransaction(executable, userWallet)\n }\n\n const amount = executable.value > 0n ? executable.value : 0n\n const amountInYoctoNear = amount.toString()\n\n return {\n receiverId: executable.destination,\n actions: [\n {\n type: 'Transfer',\n params: {\n deposit: amountInYoctoNear,\n },\n },\n ],\n }\n }\n\n async createContractCallTransaction(executable: WarpExecutable): Promise<any> {\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpNearExecutor: createContractCall - user address not set')\n\n const action = getWarpActionByIndex(executable.warp, executable.action)\n if (!action || !('func' in action) || !action.func) throw new Error('WarpNearExecutor: Contract action must have a function name')\n if (!executable.destination) throw new Error('WarpNearExecutor: Contract address is required')\n\n try {\n const nativeArgs = executable.args.map((arg) => this.serializer.coreSerializer.stringToNative(arg)[1])\n const args = nativeArgs.length > 0 ? nativeArgs : {}\n\n const gas = WarpNearConstants.Gas.FunctionCall\n const deposit = executable.value > 0n ? executable.value.toString() : '0'\n\n return {\n receiverId: executable.destination,\n actions: [\n {\n type: 'FunctionCall',\n params: {\n methodName: action.func,\n args,\n gas,\n deposit,\n },\n },\n ],\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`WarpNearExecutor: Failed to create contract call: ${errorMessage}`)\n }\n }\n\n private async createTokenTransferTransaction(executable: WarpExecutable, userWallet: string): Promise<any> {\n if (executable.transfers.length === 0) throw new Error('WarpNearExecutor: No transfers provided')\n if (!this.chain.nativeToken?.identifier) throw new Error('WarpNearExecutor: No native token defined for this chain')\n\n const nativeTokenTransfers = executable.transfers.filter(\n (transfer) =>\n transfer.identifier === this.chain.nativeToken!.identifier || transfer.identifier === WarpNearConstants.NativeToken.Identifier\n )\n const ftTokenTransfers = executable.transfers.filter(\n (transfer) =>\n transfer.identifier !== this.chain.nativeToken!.identifier && transfer.identifier !== WarpNearConstants.NativeToken.Identifier\n )\n\n if (nativeTokenTransfers.length === 1 && ftTokenTransfers.length === 0) {\n const transfer = nativeTokenTransfers[0]\n if (transfer.amount <= 0n) throw new Error('WarpNearExecutor: Native token transfer amount must be positive')\n\n return {\n receiverId: executable.destination,\n actions: [\n {\n type: 'Transfer',\n params: {\n deposit: transfer.amount.toString(),\n },\n },\n ],\n }\n }\n\n if (nativeTokenTransfers.length === 0 && ftTokenTransfers.length === 1) {\n return this.createSingleTokenTransfer(executable, ftTokenTransfers[0])\n }\n\n if (executable.transfers.length > 1) throw new Error('WarpNearExecutor: Multiple token transfers not yet supported')\n\n throw new Error('WarpNearExecutor: Invalid transfer configuration')\n }\n\n private async createSingleTokenTransfer(executable: WarpExecutable, transfer: WarpChainAssetValue): Promise<any> {\n if (!executable.destination) throw new Error('WarpNearExecutor: Destination address is required')\n\n const userWallet = getWarpWalletAddressFromConfig(this.config, executable.chain.name)\n if (!userWallet) throw new Error('WarpNearExecutor: User wallet not set')\n\n const args = {\n receiver_id: executable.destination,\n amount: transfer.amount.toString(),\n }\n\n return {\n receiverId: transfer.identifier,\n actions: [\n {\n type: 'FunctionCall',\n params: {\n methodName: 'ft_transfer',\n args,\n gas: WarpNearConstants.Gas.FunctionCall,\n deposit: '1',\n },\n },\n ],\n }\n }\n\n async executeQuery(executable: WarpExecutable): Promise<WarpActionExecutionResult> {\n const action = getWarpActionByIndex(executable.warp, executable.action) as WarpQueryAction\n if (action.type !== 'query') throw new Error(`WarpNearExecutor: Invalid action type for executeQuery: ${action.type}`)\n if (!action.func) throw new Error('WarpNearExecutor: Query action must have a function name')\n\n let queryAddress: string\n try {\n if (!executable.destination) throw new Error('WarpNearExecutor: Query address is required')\n queryAddress = executable.destination\n } catch {\n throw new Error(`WarpNearExecutor: Invalid address for query: ${executable.destination}`)\n }\n\n try {\n const nativeArgs = executable.args.map((arg) => this.serializer.coreSerializer.stringToNative(arg)[1])\n const args = nativeArgs.length > 0 ? nativeArgs : {}\n\n const near = await connect(this.nearConfig)\n const account = await near.account(queryAddress)\n const result = await account.viewFunction({\n contractId: queryAddress,\n methodName: action.func,\n args,\n })\n\n const { values, output } = await this.output.extractQueryOutput(\n executable.warp,\n Array.isArray(result) ? result : [result],\n executable.action,\n executable.resolvedInputs\n )\n\n const next = getNextInfo(this.config, [], executable.warp, executable.action, output)\n\n const destinationInput = executable.resolvedInputs.find((i) => i.input.position === 'receiver' || i.input.position === 'destination')\n const destination = destinationInput?.value || executable.destination\n\n const resolvedInputs = extractResolvedInputValues(executable.resolvedInputs)\n return {\n status: 'success',\n warp: executable.warp,\n action: executable.action,\n user: getWarpWalletAddressFromConfig(this.config, executable.chain.name),\n txHash: null,\n tx: null,\n next,\n values,\n output: { ...output, _DATA: result },\n messages: applyOutputToMessages(executable.warp, output, this.config),\n destination,\n resolvedInputs,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n const destinationInput = executable.resolvedInputs.find((i) => i.input.position === 'receiver' || i.input.position === 'destination')\n const destination = destinationInput?.value || executable.destination\n\n const resolvedInputs = extractResolvedInputValues(executable.resolvedInputs)\n return {\n status: 'error',\n warp: executable.warp,\n action: executable.action,\n user: getWarpWalletAddressFromConfig(this.config, executable.chain.name),\n txHash: null,\n tx: null,\n next: null,\n values: { string: [], native: [], mapped: {} },\n output: { _DATA: errorMessage, _ERROR: errorMessage },\n messages: {},\n destination,\n resolvedInputs,\n }\n }\n }\n}\n","import {\n AdapterWarpOutput,\n evaluateOutputCommon,\n extractResolvedInputValues,\n getProviderConfig,\n getWarpWalletAddressFromConfig,\n parseOutputOutIndex,\n ResolvedInput,\n Warp,\n WarpActionExecutionResult,\n WarpActionIndex,\n WarpAdapterGenericRemoteTransaction,\n WarpCache,\n WarpCacheKey,\n WarpChainAction,\n WarpChainInfo,\n WarpClientConfig,\n WarpConstants,\n WarpExecutionOutput,\n WarpNativeValue,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { WarpNearSerializer } from './WarpNearSerializer'\n\nexport class WarpNearOutput implements AdapterWarpOutput {\n private readonly serializer: WarpNearSerializer\n private readonly nearConfig: any\n private readonly cache: WarpCache\n\n constructor(\n private readonly config: WarpClientConfig,\n private readonly chain: WarpChainInfo\n ) {\n this.serializer = new WarpNearSerializer()\n const providerConfig = getProviderConfig(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n this.cache = new WarpCache(config.cache?.type)\n }\n\n async getActionExecution(\n warp: Warp,\n actionIndex: WarpActionIndex,\n tx: WarpAdapterGenericRemoteTransaction\n ): Promise<WarpActionExecutionResult> {\n const inputs: ResolvedInput[] = this.cache.get(WarpCacheKey.WarpExecutable(this.config.env, warp.meta?.hash || '', actionIndex)) ?? []\n const resolvedInputs = extractResolvedInputValues(inputs)\n\n if (!tx) {\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n\n if ('status' in tx && typeof tx.status === 'string') {\n return this.handleWarpChainAction(warp, actionIndex, tx as WarpChainAction, resolvedInputs)\n }\n\n if (typeof tx === 'string') {\n return this.handleTransactionHash(warp, actionIndex, tx, resolvedInputs)\n }\n\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n\n private createFailedExecution(warp: Warp, actionIndex: WarpActionIndex, resolvedInputs: string[] = []): WarpActionExecutionResult {\n return {\n status: 'error',\n warp,\n action: actionIndex,\n user: getWarpWalletAddressFromConfig(this.config, this.chain.name),\n txHash: '',\n tx: null,\n next: null,\n values: { string: [], native: [], mapped: {} },\n output: {},\n messages: {},\n destination: null,\n resolvedInputs,\n }\n }\n\n private handleWarpChainAction(\n warp: Warp,\n actionIndex: WarpActionIndex,\n tx: WarpChainAction,\n resolvedInputs: string[] = []\n ): WarpActionExecutionResult {\n const success = tx.status === 'success'\n const transactionHash = tx.id || tx.tx?.hash || ''\n\n const rawValues = [transactionHash]\n const stringValues = rawValues.map(String)\n\n return {\n status: success ? 'success' : 'error',\n warp,\n action: actionIndex,\n user: getWarpWalletAddressFromConfig(this.config, this.chain.name),\n txHash: transactionHash,\n tx,\n next: null,\n values: { string: stringValues, native: rawValues, mapped: {} },\n output: {},\n messages: {},\n destination: null,\n resolvedInputs,\n }\n }\n\n private async handleTransactionHash(\n warp: Warp,\n actionIndex: WarpActionIndex,\n hash: string,\n resolvedInputs: string[] = []\n ): Promise<WarpActionExecutionResult> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(hash, this.nearConfig.networkId)\n\n if (!txStatus) {\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n\n const statusObj = txStatus.status as any\n const success = statusObj && ('SuccessValue' in statusObj || 'SuccessReceiptId' in statusObj)\n const transaction = txStatus.transaction\n\n const rawValues = [hash]\n const stringValues = rawValues.map(String)\n\n return {\n status: success ? 'success' : 'error',\n warp,\n action: actionIndex,\n user: getWarpWalletAddressFromConfig(this.config, this.chain.name),\n txHash: hash,\n tx: {\n hash,\n transaction,\n status: txStatus.status,\n } as any,\n next: null,\n values: { string: stringValues, native: rawValues, mapped: {} },\n output: {},\n messages: {},\n destination: null,\n resolvedInputs,\n }\n } catch (error) {\n return this.createFailedExecution(warp, actionIndex, resolvedInputs)\n }\n }\n\n async extractQueryOutput(\n warp: Warp,\n typedValues: unknown[],\n actionIndex: number,\n inputs: ResolvedInput[]\n ): Promise<{ values: { string: string[]; native: WarpNativeValue[]; mapped: Record<string, any> }; output: WarpExecutionOutput }> {\n const stringValues = typedValues.map((t) => this.serializer.typedToString(t))\n const nativeValues = typedValues.map((t) => this.serializer.typedToNative(t)[1])\n const values = { string: stringValues, native: nativeValues, mapped: {} }\n let output: WarpExecutionOutput = {}\n\n if (!warp.output) return { values, output }\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: unknown = nativeValues[indices[0]]\n for (let i = 1; i < indices.length; i++) {\n if (value === undefined || value === null) return undefined\n value = (value as Record<string, unknown>)[indices[i]]\n }\n return value\n }\n\n for (const [key, path] of Object.entries(warp.output)) {\n if (path.startsWith(WarpConstants.Transform.Prefix)) continue\n const currentActionIndex = parseOutputOutIndex(path)\n if (currentActionIndex !== null && currentActionIndex !== actionIndex) {\n output[key] = null\n continue\n }\n if (path.startsWith('out.') || path === 'out' || path.startsWith('out[')) {\n output[key] = getNestedValue(path) || null\n } else {\n output[key] = path\n }\n }\n\n return { values, output: await evaluateOutputCommon(warp, output, actionIndex, inputs, this.serializer.coreSerializer, this.config) }\n }\n\n async getTransactionStatus(\n txHash: string\n ): Promise<{ status: 'pending' | 'confirmed' | 'failed'; blockNumber?: number; gasUsed?: bigint }> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(txHash, this.nearConfig.networkId)\n\n if (!txStatus) {\n return { status: 'pending' }\n }\n\n const statusObj = txStatus.status as any\n const isSuccess = statusObj && ('SuccessValue' in statusObj || 'SuccessReceiptId' in statusObj)\n return {\n status: isSuccess ? 'confirmed' : 'failed',\n blockNumber: (txStatus.transaction_outcome as any)?.block_hash ? 0 : undefined,\n gasUsed: BigInt(0),\n }\n } catch (error) {\n throw new Error(`Failed to get transaction status: ${error}`)\n }\n }\n\n async getTransactionReceipt(txHash: string): Promise<any> {\n try {\n const near = await connect(this.nearConfig)\n const txStatus = await (near.connection.provider as any).txStatus(txHash, this.nearConfig.networkId)\n\n if (!txStatus) {\n return null\n }\n\n return {\n hash: txHash,\n transaction: txStatus.transaction,\n status: txStatus.status as any,\n }\n } catch (error) {\n return null\n }\n }\n}\n","import {\n AdapterWarpSerializer,\n BaseWarpActionInputType,\n WarpActionInputType,\n WarpAdapterGenericType,\n WarpConstants,\n WarpNativeValue,\n WarpSerializer,\n} from '@vleap/warps'\n\nexport class WarpNearSerializer 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 if (value.endsWith('.near') || (value.length > 2 && value.length < 65 && /^[a-z0-9._-]+$/.test(value) && !value.includes(' '))) {\n return `address:${value}`\n }\n if (value.startsWith('0x') || /^[0-9a-fA-F]+$/.test(value)) {\n return `hex:${value}`\n }\n return `string:${value}`\n }\n if (typeof value === 'number') {\n if (Number.isInteger(value)) {\n if (value >= 0 && value <= 255) return `uint8:${value}`\n if (value >= 0 && value <= 65535) return `uint16:${value}`\n if (value >= 0 && value <= 4294967295) return `uint32:${value}`\n return `uint64:${value}`\n }\n return `string:${value}`\n }\n if (typeof value === 'bigint') {\n return `biguint:${value.toString()}`\n }\n if (typeof value === 'boolean') {\n return `boolean:${value}`\n }\n if (value instanceof Uint8Array) {\n return `hex:${Buffer.from(value).toString('hex')}`\n }\n if (typeof value === 'object' && value !== null && 'identifier' in value && 'amount' in value) {\n const asset = value as { identifier: string; amount: bigint; decimals?: number }\n if (asset.decimals !== undefined) {\n return `asset:${asset.identifier}${WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}${WarpConstants.ArgCompositeSeparator}${asset.decimals}`\n }\n return `asset:${asset.identifier}${WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}`\n }\n if (Array.isArray(value)) {\n if (value.length === 0) return `list:string:`\n const types = value.map((item) => this.typedToString(item).split(WarpConstants.ArgParamsSeparator)[0]) as BaseWarpActionInputType[]\n const type = types[0] as BaseWarpActionInputType\n const values = value.map((item) => this.typedToString(item).split(WarpConstants.ArgParamsSeparator)[1]) as WarpNativeValue[]\n return `list:${type}:${values.join(',')}`\n }\n if (value === null || value === undefined) {\n return `string:null`\n }\n return `string:${String(value)}`\n }\n\n typedToNative(value: any): [WarpActionInputType, WarpNativeValue] {\n const stringValue = this.typedToString(value)\n const [type, ...valueParts] = stringValue.split(WarpConstants.ArgParamsSeparator)\n const nativeValue = valueParts.join(WarpConstants.ArgParamsSeparator)\n return [type, this.parseNativeValue(type, nativeValue)]\n }\n\n nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): any {\n switch (type) {\n case 'string':\n return String(value)\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n return BigInt(value as string | number)\n case 'biguint':\n return BigInt(value as string | number)\n case 'boolean':\n return Boolean(value)\n case 'address':\n return String(value)\n case 'hex':\n return String(value)\n case 'asset':\n if (typeof value === 'object' && value !== null && 'identifier' in value && 'amount' in value) {\n return value\n }\n return value\n default:\n if (type.startsWith('list:')) {\n const [, itemType, itemsStr] = type.split(':')\n if (!itemsStr) return []\n const items = itemsStr.split(',')\n return items.map((item) => this.nativeToTyped(itemType, item))\n }\n return String(value)\n }\n }\n\n nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType {\n switch (type) {\n case 'string':\n return 'string'\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n case 'biguint':\n return 'bigint'\n case 'boolean':\n return 'boolean'\n case 'address':\n return 'string'\n case 'hex':\n return 'string'\n default:\n return 'string'\n }\n }\n\n stringToTyped(value: string): any {\n const parts = value.split(WarpConstants.ArgParamsSeparator, 2)\n if (parts.length < 2) {\n return value\n }\n\n const [type, stringValue] = parts\n\n switch (type) {\n case 'string':\n return stringValue\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n return BigInt(stringValue)\n case 'biguint':\n return BigInt(stringValue)\n case 'boolean':\n return stringValue === 'true'\n case 'address':\n return stringValue\n case 'hex':\n return stringValue\n case 'asset':\n const assetParts = stringValue.split(WarpConstants.ArgCompositeSeparator)\n const identifier = assetParts[0] || ''\n const amount = assetParts[1] ? BigInt(assetParts[1]) : 0n\n const decimals = assetParts[2] ? parseInt(assetParts[2], 10) : undefined\n return { identifier, amount, decimals }\n default:\n if (type.startsWith('list:')) {\n const [, itemType, itemsStr] = type.split(':')\n if (!itemsStr) return []\n const items = itemsStr.split(',')\n return items.map((item) => this.stringToTyped(`${itemType}:${item}`))\n }\n return stringValue\n }\n }\n\n private parseNativeValue(type: string, value: string): WarpNativeValue {\n switch (type) {\n case 'string':\n return value\n case 'uint8':\n case 'uint16':\n case 'uint32':\n case 'uint64':\n case 'biguint':\n return BigInt(value)\n case 'boolean':\n return value === 'true'\n case 'address':\n return value\n case 'hex':\n return value\n default:\n return value\n }\n }\n}\n","import { AdapterWarpExplorer, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { ExplorerName, NearExplorerNames, NearExplorers, NearExplorerUrls } from './constants'\n\nexport class WarpNearExplorer implements AdapterWarpExplorer {\n constructor(\n private readonly chain: WarpChainInfo,\n private readonly config: WarpClientConfig\n ) {}\n\n private getExplorers(): readonly ExplorerName[] {\n const explorers = NearExplorerNames[this.config.env]\n if (!explorers) {\n return [NearExplorers.NearExplorer as ExplorerName]\n }\n return explorers\n }\n\n private getPrimaryExplorer(): ExplorerName {\n const explorers = this.getExplorers()\n return explorers[0]\n }\n\n private getExplorerUrlByName(explorer?: ExplorerName): string {\n const userPreference = this.config.preferences?.explorers?.[this.chain.name]\n\n if (userPreference && !explorer) {\n const url = NearExplorerUrls[userPreference as ExplorerName]\n if (url) return url\n }\n\n if (explorer) {\n const url = NearExplorerUrls[explorer]\n if (url) return url\n }\n\n const primaryExplorer = this.getPrimaryExplorer()\n const url = NearExplorerUrls[primaryExplorer]\n return url || NearExplorerUrls[primaryExplorer]\n }\n\n getAccountUrl(address: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/accounts/${address}`\n }\n\n getTransactionUrl(hash: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/transactions/${hash}`\n }\n\n getBlockUrl(blockNumber: string | number, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/blocks/${blockNumber}`\n }\n\n getAssetUrl(identifier: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/tokens/${identifier}`\n }\n\n getContractUrl(address: string, explorer?: ExplorerName): string {\n const baseUrl = this.getExplorerUrlByName(explorer)\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n return `${baseUrl}${network}/accounts/${address}`\n }\n\n getAllExplorers(): readonly ExplorerName[] {\n return this.getExplorers()\n }\n\n getExplorerByName(name: string): ExplorerName | undefined {\n const explorers = this.getExplorers()\n return explorers.find((explorer) => explorer.toLowerCase() === name.toLowerCase())\n }\n\n getAccountUrls(address: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/accounts/${address}`\n }\n })\n\n return urls\n }\n\n getTransactionUrls(hash: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/transactions/${hash}`\n }\n })\n\n return urls\n }\n\n getAssetUrls(identifier: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/tokens/${identifier}`\n }\n })\n\n return urls\n }\n\n getContractUrls(address: string): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/accounts/${address}`\n }\n })\n\n return urls\n }\n\n getBlockUrls(blockNumber: string | number): Record<ExplorerName, string> {\n const explorers = this.getAllExplorers()\n const urls: Record<ExplorerName, string> = {} as Record<ExplorerName, string>\n const network = this.config.env === 'mainnet' ? '' : `/${this.config.env}`\n\n explorers.forEach((explorer) => {\n const url = NearExplorerUrls[explorer]\n if (url) {\n urls[explorer] = `${url}${network}/blocks/${blockNumber}`\n }\n })\n\n return urls\n }\n}\n","import {\n AdapterWarpWallet,\n getProviderConfig,\n initializeWalletCache,\n WalletProvider,\n WarpAdapterGenericTransaction,\n WarpChainInfo,\n WarpClientConfig,\n WarpWalletDetails,\n WarpWalletProvider,\n} from '@vleap/warps'\nimport { connect, keyStores } from 'near-api-js'\nimport { MnemonicWalletProvider } from './providers/MnemonicWalletProvider'\nimport { PrivateKeyWalletProvider } from './providers/PrivateKeyWalletProvider'\nimport { ReadOnlyWalletProvider } from './providers/ReadOnlyWalletProvider'\n\nexport class WarpNearWallet implements AdapterWarpWallet {\n private nearConfig: any\n private walletProvider: WalletProvider | null\n private cachedAddress: string | null = null\n private cachedPublicKey: string | null = null\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {\n const providerConfig = getProviderConfig(config, chain.name, config.env, chain.defaultApiUrl)\n\n this.nearConfig = {\n networkId: this.config.env === 'mainnet' ? 'mainnet' : this.config.env === 'testnet' ? 'testnet' : 'testnet',\n nodeUrl: providerConfig.url,\n keyStore: new keyStores.InMemoryKeyStore(),\n }\n this.walletProvider = this.createProvider()\n this.initializeCache()\n }\n\n async signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction> {\n if (!tx || typeof tx !== 'object') throw new Error('Invalid transaction object')\n if (!this.walletProvider) throw new Error('No wallet provider available')\n if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`)\n\n const accountId = this.getAddress()\n if (!accountId) throw new Error('No account ID available')\n\n if (this.walletProvider instanceof PrivateKeyWalletProvider || this.walletProvider instanceof MnemonicWalletProvider) {\n const keyPair = this.walletProvider.getKeyPairInstance()\n await this.nearConfig.keyStore.setKey(this.nearConfig.networkId, accountId, keyPair)\n const near = await connect(this.nearConfig)\n const account = await near.account(accountId)\n\n if (tx.signature) {\n return tx\n }\n\n const signedTx = await account.signAndSendTransaction({\n receiverId: tx.receiverId,\n actions: tx.actions,\n })\n\n return {\n ...tx,\n signature: signedTx.transaction.hash,\n transactionHash: signedTx.transaction.hash,\n }\n }\n\n throw new Error('Wallet provider does not support signing transactions')\n }\n\n async signTransactions(txs: WarpAdapterGenericTransaction[]): Promise<WarpAdapterGenericTransaction[]> {\n if (txs.length === 0) return []\n const signedTxs = []\n for (const tx of txs) {\n signedTxs.push(await this.signTransaction(tx))\n }\n return signedTxs\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.walletProvider) throw new Error('No wallet provider available')\n if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`)\n return await this.walletProvider.signMessage(message)\n }\n\n async sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string> {\n if (!tx || typeof tx !== 'object') throw new Error('Invalid transaction object')\n if (!this.walletProvider) throw new Error('No wallet provider available')\n\n const accountId = this.getAddress()\n if (!accountId) throw new Error('No account ID available')\n\n if (tx.transactionHash) {\n return tx.transactionHash\n }\n\n if (this.walletProvider instanceof PrivateKeyWalletProvider || this.walletProvider instanceof MnemonicWalletProvider) {\n const keyPair = this.walletProvider.getKeyPairInstance()\n await this.nearConfig.keyStore.setKey(this.nearConfig.networkId, accountId, keyPair)\n const near = await connect(this.nearConfig)\n const account = await near.account(accountId)\n\n const result = await account.signAndSendTransaction({\n receiverId: tx.receiverId,\n actions: tx.actions,\n })\n\n return result.transaction.hash\n }\n\n throw new Error('Wallet provider does not support sending transactions')\n }\n\n async sendTransactions(txs: WarpAdapterGenericTransaction[]): Promise<string[]> {\n return Promise.all(txs.map(async (tx) => this.sendTransaction(tx)))\n }\n\n create(mnemonic: string, provider: WarpWalletProvider): WarpWalletDetails {\n const walletProvider = this.createProviderForOperation(provider)\n return walletProvider.create(mnemonic)\n }\n\n generate(provider: WarpWalletProvider): WarpWalletDetails {\n const walletProvider = this.createProviderForOperation(provider)\n return walletProvider.generate()\n }\n\n getAddress(): string | null {\n return this.cachedAddress\n }\n\n getPublicKey(): string | null {\n return this.cachedPublicKey\n }\n\n private createProvider(): WalletProvider | null {\n const wallet = this.config.user?.wallets?.[this.chain.name]\n if (!wallet) return null\n if (typeof wallet === 'string') return new ReadOnlyWalletProvider(this.config, this.chain)\n return this.createProviderForOperation(wallet.provider)\n }\n\n private initializeCache() {\n initializeWalletCache(this.walletProvider).then((cache: { address: string | null; publicKey: string | null }) => {\n this.cachedAddress = cache.address\n this.cachedPublicKey = cache.publicKey\n })\n }\n\n private createProviderForOperation(provider: WarpWalletProvider): WalletProvider {\n const customWalletProviders = this.config.walletProviders?.[this.chain.name]\n const providerFactory = customWalletProviders?.[provider]\n if (providerFactory) {\n const walletProvider = providerFactory(this.config, this.chain)\n if (!walletProvider) throw new Error(`Custom wallet provider factory returned null for ${provider}`)\n return walletProvider\n }\n\n if (provider === 'privateKey') return new PrivateKeyWalletProvider(this.config, this.chain)\n if (provider === 'mnemonic') return new MnemonicWalletProvider(this.config, this.chain)\n throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${provider}`)\n }\n}\n","import { WalletProvider, WarpWalletDetails, WarpWalletProvider } from '@vleap/warps'\nimport { keyToImplicitAddress } from '@near-js/crypto'\nimport * as bip39 from '@scure/bip39'\nimport { wordlist } from '@scure/bip39/wordlists/english.js'\nimport { getWarpWalletAddressFromConfig, getWarpWalletMnemonicFromConfig, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport bs58 from 'bs58'\nimport { KeyPair } from 'near-api-js'\n\nexport class MnemonicWalletProvider implements WalletProvider {\n static readonly PROVIDER_NAME: WarpWalletProvider = 'mnemonic'\n private keypair: KeyPair | null = null\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {}\n\n async getAddress(): Promise<string | null> {\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (address) return address\n\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return keyToImplicitAddress(publicKey.toString())\n } catch {\n return null\n }\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return publicKey.toString()\n } catch {\n return null\n }\n }\n\n async signTransaction(tx: any): Promise<any> {\n const keypair = this.getKeyPair()\n // Near transactions are signed via the account, not the keypair directly\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const keypair = this.getKeyPair()\n const messageBytes = new TextEncoder().encode(message)\n const signature = keypair.sign(messageBytes)\n return bs58.encode(signature.signature)\n }\n\n getKeyPairInstance(): KeyPair {\n return this.getKeyPair()\n }\n\n create(mnemonic: string): WarpWalletDetails {\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const keyPair = KeyPair.fromRandom('ed25519')\n const publicKey = keyPair.getPublicKey()\n const accountId = keyToImplicitAddress(publicKey.toString())\n return {\n provider: MnemonicWalletProvider.PROVIDER_NAME,\n address: accountId,\n privateKey: null,\n mnemonic,\n }\n }\n\n generate(): WarpWalletDetails {\n const mnemonic = bip39.generateMnemonic(wordlist)\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n const keyPair = KeyPair.fromRandom('ed25519')\n const publicKey = keyPair.getPublicKey()\n const accountId = keyToImplicitAddress(publicKey.toString())\n return {\n provider: MnemonicWalletProvider.PROVIDER_NAME,\n address: accountId,\n privateKey: null,\n mnemonic,\n }\n }\n\n private getKeyPair(): KeyPair {\n if (this.keypair) return this.keypair\n\n const mnemonic = getWarpWalletMnemonicFromConfig(this.config, this.chain.name)\n if (!mnemonic) throw new Error('No mnemonic provided')\n\n const seed = bip39.mnemonicToSeedSync(mnemonic)\n this.keypair = KeyPair.fromRandom('ed25519')\n return this.keypair\n }\n}\n","import { WalletProvider, WarpWalletDetails, WarpWalletProvider } from '@vleap/warps'\nimport { keyToImplicitAddress } from '@near-js/crypto'\nimport { getWarpWalletAddressFromConfig, getWarpWalletPrivateKeyFromConfig, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport bs58 from 'bs58'\nimport { KeyPair } from 'near-api-js'\n\nexport class PrivateKeyWalletProvider implements WalletProvider {\n static readonly PROVIDER_NAME: WarpWalletProvider = 'privateKey'\n private keypair: KeyPair | null = null\n\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {}\n\n async getAddress(): Promise<string | null> {\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n if (address) return address\n\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return keyToImplicitAddress(publicKey.toString())\n } catch {\n return null\n }\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const keypair = this.getKeyPair()\n const publicKey = keypair.getPublicKey()\n return publicKey.toString()\n } catch {\n return null\n }\n }\n\n async signTransaction(tx: any): Promise<any> {\n const keypair = this.getKeyPair()\n // Near transactions are signed via the account, not the keypair directly\n return tx\n }\n\n async signMessage(message: string): Promise<string> {\n const keypair = this.getKeyPair()\n const messageBytes = new TextEncoder().encode(message)\n const signature = keypair.sign(messageBytes)\n return bs58.encode(signature.signature)\n }\n\n getKeyPairInstance(): KeyPair {\n return this.getKeyPair()\n }\n\n create(mnemonic: string): WarpWalletDetails {\n throw new Error('PrivateKeyWalletProvider does not support creating wallets from mnemonics. Use MnemonicWalletProvider instead.')\n }\n\n generate(): WarpWalletDetails {\n const keyPair = KeyPair.fromRandom('ed25519')\n const publicKey = keyPair.getPublicKey()\n const accountId = keyToImplicitAddress(publicKey.toString())\n return {\n provider: PrivateKeyWalletProvider.PROVIDER_NAME,\n address: accountId,\n privateKey: keyPair.toString(),\n mnemonic: null,\n }\n }\n\n private getKeyPair(): KeyPair {\n if (this.keypair) return this.keypair\n\n const privateKey = getWarpWalletPrivateKeyFromConfig(this.config, this.chain.name)\n if (!privateKey) throw new Error('No private key provided')\n\n try {\n return KeyPair.fromString(privateKey as any)\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Invalid private key format: ${error.message}`)\n }\n throw new Error('Invalid private key format')\n }\n }\n}\n","import { WalletProvider, WarpWalletDetails } from '@vleap/warps'\nimport { getWarpWalletAddressFromConfig, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\n\nexport class ReadOnlyWalletProvider implements WalletProvider {\n constructor(\n private config: WarpClientConfig,\n private chain: WarpChainInfo\n ) {}\n\n async getAddress(): Promise<string | null> {\n return getWarpWalletAddressFromConfig(this.config, this.chain.name)\n }\n\n async getPublicKey(): Promise<string | null> {\n return null\n }\n\n async signTransaction(tx: any): Promise<any> {\n const address = await this.getAddress()\n throw new Error(`Wallet can not be used for signing: ${address}`)\n }\n\n async signMessage(message: string): Promise<string> {\n const address = await this.getAddress()\n throw new Error(`Wallet can not be used for signing: ${address}`)\n }\n\n create(mnemonic: string): WarpWalletDetails {\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n throw new Error(`Wallet can not be used for signing: ${address}`)\n }\n\n generate(): WarpWalletDetails {\n const address = getWarpWalletAddressFromConfig(this.config, this.chain.name)\n throw new Error(`Wallet can not be used for signing: ${address}`)\n }\n}\n","import { ChainAdapter, ChainAdapterFactory, WarpChain, WarpChainEnv, WarpChainInfo, WarpClientConfig } from '@vleap/warps'\nimport { WarpNearDataLoader } from '../WarpNearDataLoader'\nimport { WarpNearExecutor } from '../WarpNearExecutor'\nimport { WarpNearExplorer } from '../WarpNearExplorer'\nimport { WarpNearOutput } from '../WarpNearOutput'\nimport { WarpNearSerializer } from '../WarpNearSerializer'\nimport { WarpNearWallet } from '../WarpNearWallet'\n\nexport const createNearAdapter = (chainName: WarpChain, chainInfos: Record<WarpChainEnv, WarpChainInfo>): ChainAdapterFactory => {\n return (config: WarpClientConfig, fallback?: ChainAdapter) => {\n if (!fallback) throw new Error(`${chainName} adapter requires a fallback adapter`)\n\n return {\n chainInfo: chainInfos[config.env],\n builder: () => fallback.builder(),\n executor: new WarpNearExecutor(config, chainInfos[config.env]),\n output: new WarpNearOutput(config, chainInfos[config.env]),\n serializer: new WarpNearSerializer(),\n registry: fallback.registry,\n explorer: new WarpNearExplorer(chainInfos[config.env], config),\n abiBuilder: () => fallback.abiBuilder(),\n brandBuilder: () => fallback.brandBuilder(),\n dataLoader: new WarpNearDataLoader(config, chainInfos[config.env]),\n wallet: new WarpNearWallet(config, chainInfos[config.env]),\n }\n }\n}\n","import { ChainAdapterFactory, WarpChain, WarpChainAsset, WarpChainName } from '@vleap/warps'\nimport { createNearAdapter } from './common'\n\nexport const NativeTokenNear: WarpChainAsset = {\n chain: 'near' as WarpChainName,\n identifier: 'NEAR',\n symbol: 'NEAR',\n name: 'NEAR',\n decimals: 24,\n logoUrl: 'https://joai.ai/images/tokens/near-black.svg',\n}\n\nexport const NearAdapter: ChainAdapterFactory = createNearAdapter('near' as WarpChain, {\n mainnet: {\n name: 'near' as WarpChainName,\n displayName: 'NEAR Mainnet',\n chainId: 'mainnet',\n blockTime: 1200,\n addressHrp: '',\n defaultApiUrl: 'https://rpc.mainnet.near.org',\n logoUrl: 'https://joai.ai/images/chains/near-black.svg',\n nativeToken: NativeTokenNear,\n },\n testnet: {\n name: 'near' as WarpChainName,\n displayName: 'NEAR Testnet',\n chainId: 'testnet',\n blockTime: 1200,\n addressHrp: '',\n defaultApiUrl: 'https://rpc.testnet.near.org',\n logoUrl: 'https://joai.ai/images/chains/near-black.svg',\n nativeToken: NativeTokenNear,\n },\n devnet: {\n name: 'near' as WarpChainName,\n displayName: 'NEAR Devnet',\n chainId: 'testnet',\n blockTime: 1200,\n addressHrp: '',\n defaultApiUrl: 'https://rpc.testnet.near.org',\n logoUrl: 'https://joai.ai/images/chains/near-black.svg',\n nativeToken: NativeTokenNear,\n },\n})\n"],"mappings":"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","names":["NearExplorers","import_warps","import_near_api_js","import_warps","import_near_api_js","import_warps","url","import_warps","import_near_api_js","import_warps","import_near_api_js","bs58","import_crypto","import_warps","import_bs58","import_near_api_js","bs58","import_warps"]}
|
package/dist/index.mjs
CHANGED
|
@@ -913,7 +913,7 @@ import { wordlist } from "@scure/bip39/wordlists/english.js";
|
|
|
913
913
|
import { getWarpWalletAddressFromConfig as getWarpWalletAddressFromConfig3, getWarpWalletMnemonicFromConfig } from "@vleap/warps";
|
|
914
914
|
import bs58 from "bs58";
|
|
915
915
|
import { KeyPair } from "near-api-js";
|
|
916
|
-
var
|
|
916
|
+
var _MnemonicWalletProvider = class _MnemonicWalletProvider {
|
|
917
917
|
constructor(config, chain) {
|
|
918
918
|
this.config = config;
|
|
919
919
|
this.chain = chain;
|
|
@@ -958,9 +958,9 @@ var MnemonicWalletProvider = class {
|
|
|
958
958
|
const publicKey = keyPair.getPublicKey();
|
|
959
959
|
const accountId = keyToImplicitAddress(publicKey.toString());
|
|
960
960
|
return {
|
|
961
|
-
provider:
|
|
961
|
+
provider: _MnemonicWalletProvider.PROVIDER_NAME,
|
|
962
962
|
address: accountId,
|
|
963
|
-
privateKey:
|
|
963
|
+
privateKey: null,
|
|
964
964
|
mnemonic
|
|
965
965
|
};
|
|
966
966
|
}
|
|
@@ -971,9 +971,9 @@ var MnemonicWalletProvider = class {
|
|
|
971
971
|
const publicKey = keyPair.getPublicKey();
|
|
972
972
|
const accountId = keyToImplicitAddress(publicKey.toString());
|
|
973
973
|
return {
|
|
974
|
-
provider:
|
|
974
|
+
provider: _MnemonicWalletProvider.PROVIDER_NAME,
|
|
975
975
|
address: accountId,
|
|
976
|
-
privateKey:
|
|
976
|
+
privateKey: null,
|
|
977
977
|
mnemonic
|
|
978
978
|
};
|
|
979
979
|
}
|
|
@@ -986,15 +986,15 @@ var MnemonicWalletProvider = class {
|
|
|
986
986
|
return this.keypair;
|
|
987
987
|
}
|
|
988
988
|
};
|
|
989
|
+
_MnemonicWalletProvider.PROVIDER_NAME = "mnemonic";
|
|
990
|
+
var MnemonicWalletProvider = _MnemonicWalletProvider;
|
|
989
991
|
|
|
990
992
|
// src/providers/PrivateKeyWalletProvider.ts
|
|
991
993
|
import { keyToImplicitAddress as keyToImplicitAddress2 } from "@near-js/crypto";
|
|
992
|
-
import * as bip392 from "@scure/bip39";
|
|
993
|
-
import { wordlist as wordlist2 } from "@scure/bip39/wordlists/english.js";
|
|
994
994
|
import { getWarpWalletAddressFromConfig as getWarpWalletAddressFromConfig4, getWarpWalletPrivateKeyFromConfig } from "@vleap/warps";
|
|
995
995
|
import bs582 from "bs58";
|
|
996
996
|
import { KeyPair as KeyPair2 } from "near-api-js";
|
|
997
|
-
var
|
|
997
|
+
var _PrivateKeyWalletProvider = class _PrivateKeyWalletProvider {
|
|
998
998
|
constructor(config, chain) {
|
|
999
999
|
this.config = config;
|
|
1000
1000
|
this.chain = chain;
|
|
@@ -1034,28 +1034,17 @@ var PrivateKeyWalletProvider = class {
|
|
|
1034
1034
|
return this.getKeyPair();
|
|
1035
1035
|
}
|
|
1036
1036
|
create(mnemonic) {
|
|
1037
|
-
|
|
1038
|
-
const keyPair = KeyPair2.fromRandom("ed25519");
|
|
1039
|
-
const publicKey = keyPair.getPublicKey();
|
|
1040
|
-
const accountId = keyToImplicitAddress2(publicKey.toString());
|
|
1041
|
-
return {
|
|
1042
|
-
provider: "privateKey",
|
|
1043
|
-
address: accountId,
|
|
1044
|
-
privateKey: keyPair.toString(),
|
|
1045
|
-
mnemonic
|
|
1046
|
-
};
|
|
1037
|
+
throw new Error("PrivateKeyWalletProvider does not support creating wallets from mnemonics. Use MnemonicWalletProvider instead.");
|
|
1047
1038
|
}
|
|
1048
1039
|
generate() {
|
|
1049
|
-
const mnemonic = bip392.generateMnemonic(wordlist2);
|
|
1050
|
-
const seed = bip392.mnemonicToSeedSync(mnemonic);
|
|
1051
1040
|
const keyPair = KeyPair2.fromRandom("ed25519");
|
|
1052
1041
|
const publicKey = keyPair.getPublicKey();
|
|
1053
1042
|
const accountId = keyToImplicitAddress2(publicKey.toString());
|
|
1054
1043
|
return {
|
|
1055
|
-
provider:
|
|
1044
|
+
provider: _PrivateKeyWalletProvider.PROVIDER_NAME,
|
|
1056
1045
|
address: accountId,
|
|
1057
1046
|
privateKey: keyPair.toString(),
|
|
1058
|
-
mnemonic
|
|
1047
|
+
mnemonic: null
|
|
1059
1048
|
};
|
|
1060
1049
|
}
|
|
1061
1050
|
getKeyPair() {
|
|
@@ -1072,6 +1061,39 @@ var PrivateKeyWalletProvider = class {
|
|
|
1072
1061
|
}
|
|
1073
1062
|
}
|
|
1074
1063
|
};
|
|
1064
|
+
_PrivateKeyWalletProvider.PROVIDER_NAME = "privateKey";
|
|
1065
|
+
var PrivateKeyWalletProvider = _PrivateKeyWalletProvider;
|
|
1066
|
+
|
|
1067
|
+
// src/providers/ReadOnlyWalletProvider.ts
|
|
1068
|
+
import { getWarpWalletAddressFromConfig as getWarpWalletAddressFromConfig5 } from "@vleap/warps";
|
|
1069
|
+
var ReadOnlyWalletProvider = class {
|
|
1070
|
+
constructor(config, chain) {
|
|
1071
|
+
this.config = config;
|
|
1072
|
+
this.chain = chain;
|
|
1073
|
+
}
|
|
1074
|
+
async getAddress() {
|
|
1075
|
+
return getWarpWalletAddressFromConfig5(this.config, this.chain.name);
|
|
1076
|
+
}
|
|
1077
|
+
async getPublicKey() {
|
|
1078
|
+
return null;
|
|
1079
|
+
}
|
|
1080
|
+
async signTransaction(tx) {
|
|
1081
|
+
const address = await this.getAddress();
|
|
1082
|
+
throw new Error(`Wallet can not be used for signing: ${address}`);
|
|
1083
|
+
}
|
|
1084
|
+
async signMessage(message) {
|
|
1085
|
+
const address = await this.getAddress();
|
|
1086
|
+
throw new Error(`Wallet can not be used for signing: ${address}`);
|
|
1087
|
+
}
|
|
1088
|
+
create(mnemonic) {
|
|
1089
|
+
const address = getWarpWalletAddressFromConfig5(this.config, this.chain.name);
|
|
1090
|
+
throw new Error(`Wallet can not be used for signing: ${address}`);
|
|
1091
|
+
}
|
|
1092
|
+
generate() {
|
|
1093
|
+
const address = getWarpWalletAddressFromConfig5(this.config, this.chain.name);
|
|
1094
|
+
throw new Error(`Wallet can not be used for signing: ${address}`);
|
|
1095
|
+
}
|
|
1096
|
+
};
|
|
1075
1097
|
|
|
1076
1098
|
// src/WarpNearWallet.ts
|
|
1077
1099
|
var WarpNearWallet = class {
|
|
@@ -1089,26 +1111,10 @@ var WarpNearWallet = class {
|
|
|
1089
1111
|
this.walletProvider = this.createProvider();
|
|
1090
1112
|
this.initializeCache();
|
|
1091
1113
|
}
|
|
1092
|
-
createProvider() {
|
|
1093
|
-
const wallet = this.config.user?.wallets?.[this.chain.name];
|
|
1094
|
-
if (!wallet) return null;
|
|
1095
|
-
if (typeof wallet === "string") throw new Error(`Wallet can not be used for signing: ${wallet}`);
|
|
1096
|
-
const customWalletProviders = this.config.walletProviders?.[this.chain.name];
|
|
1097
|
-
const providerFactory = customWalletProviders?.[wallet.provider];
|
|
1098
|
-
if (providerFactory) return providerFactory(this.config, this.chain);
|
|
1099
|
-
if (wallet.provider === "privateKey") return new PrivateKeyWalletProvider(this.config, this.chain);
|
|
1100
|
-
if (wallet.provider === "mnemonic") return new MnemonicWalletProvider(this.config, this.chain);
|
|
1101
|
-
throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${wallet.provider}`);
|
|
1102
|
-
}
|
|
1103
|
-
initializeCache() {
|
|
1104
|
-
initializeWalletCache(this.walletProvider).then((cache) => {
|
|
1105
|
-
this.cachedAddress = cache.address;
|
|
1106
|
-
this.cachedPublicKey = cache.publicKey;
|
|
1107
|
-
});
|
|
1108
|
-
}
|
|
1109
1114
|
async signTransaction(tx) {
|
|
1110
1115
|
if (!tx || typeof tx !== "object") throw new Error("Invalid transaction object");
|
|
1111
1116
|
if (!this.walletProvider) throw new Error("No wallet provider available");
|
|
1117
|
+
if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`);
|
|
1112
1118
|
const accountId = this.getAddress();
|
|
1113
1119
|
if (!accountId) throw new Error("No account ID available");
|
|
1114
1120
|
if (this.walletProvider instanceof PrivateKeyWalletProvider || this.walletProvider instanceof MnemonicWalletProvider) {
|
|
@@ -1133,10 +1139,15 @@ var WarpNearWallet = class {
|
|
|
1133
1139
|
}
|
|
1134
1140
|
async signTransactions(txs) {
|
|
1135
1141
|
if (txs.length === 0) return [];
|
|
1136
|
-
|
|
1142
|
+
const signedTxs = [];
|
|
1143
|
+
for (const tx of txs) {
|
|
1144
|
+
signedTxs.push(await this.signTransaction(tx));
|
|
1145
|
+
}
|
|
1146
|
+
return signedTxs;
|
|
1137
1147
|
}
|
|
1138
1148
|
async signMessage(message) {
|
|
1139
1149
|
if (!this.walletProvider) throw new Error("No wallet provider available");
|
|
1150
|
+
if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`);
|
|
1140
1151
|
return await this.walletProvider.signMessage(message);
|
|
1141
1152
|
}
|
|
1142
1153
|
async sendTransaction(tx) {
|
|
@@ -1163,13 +1174,13 @@ var WarpNearWallet = class {
|
|
|
1163
1174
|
async sendTransactions(txs) {
|
|
1164
1175
|
return Promise.all(txs.map(async (tx) => this.sendTransaction(tx)));
|
|
1165
1176
|
}
|
|
1166
|
-
create(mnemonic) {
|
|
1167
|
-
|
|
1168
|
-
return
|
|
1177
|
+
create(mnemonic, provider) {
|
|
1178
|
+
const walletProvider = this.createProviderForOperation(provider);
|
|
1179
|
+
return walletProvider.create(mnemonic);
|
|
1169
1180
|
}
|
|
1170
|
-
generate() {
|
|
1171
|
-
|
|
1172
|
-
return
|
|
1181
|
+
generate(provider) {
|
|
1182
|
+
const walletProvider = this.createProviderForOperation(provider);
|
|
1183
|
+
return walletProvider.generate();
|
|
1173
1184
|
}
|
|
1174
1185
|
getAddress() {
|
|
1175
1186
|
return this.cachedAddress;
|
|
@@ -1177,6 +1188,30 @@ var WarpNearWallet = class {
|
|
|
1177
1188
|
getPublicKey() {
|
|
1178
1189
|
return this.cachedPublicKey;
|
|
1179
1190
|
}
|
|
1191
|
+
createProvider() {
|
|
1192
|
+
const wallet = this.config.user?.wallets?.[this.chain.name];
|
|
1193
|
+
if (!wallet) return null;
|
|
1194
|
+
if (typeof wallet === "string") return new ReadOnlyWalletProvider(this.config, this.chain);
|
|
1195
|
+
return this.createProviderForOperation(wallet.provider);
|
|
1196
|
+
}
|
|
1197
|
+
initializeCache() {
|
|
1198
|
+
initializeWalletCache(this.walletProvider).then((cache) => {
|
|
1199
|
+
this.cachedAddress = cache.address;
|
|
1200
|
+
this.cachedPublicKey = cache.publicKey;
|
|
1201
|
+
});
|
|
1202
|
+
}
|
|
1203
|
+
createProviderForOperation(provider) {
|
|
1204
|
+
const customWalletProviders = this.config.walletProviders?.[this.chain.name];
|
|
1205
|
+
const providerFactory = customWalletProviders?.[provider];
|
|
1206
|
+
if (providerFactory) {
|
|
1207
|
+
const walletProvider = providerFactory(this.config, this.chain);
|
|
1208
|
+
if (!walletProvider) throw new Error(`Custom wallet provider factory returned null for ${provider}`);
|
|
1209
|
+
return walletProvider;
|
|
1210
|
+
}
|
|
1211
|
+
if (provider === "privateKey") return new PrivateKeyWalletProvider(this.config, this.chain);
|
|
1212
|
+
if (provider === "mnemonic") return new MnemonicWalletProvider(this.config, this.chain);
|
|
1213
|
+
throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${provider}`);
|
|
1214
|
+
}
|
|
1180
1215
|
};
|
|
1181
1216
|
|
|
1182
1217
|
// src/chains/common.ts
|