{"version":3,"sources":["../../src/near.ts"],"sourcesContent":["import {\n  lsSet,\n  lsGet,\n  tryParseJson,\n  fromBase64,\n  toBase64,\n  canSignWithLAK,\n  toBase58,\n  parseJsonFromBytes,\n  signHash,\n  serializeTransaction,\n  serializeSignedTransaction, bytesToBase64, PlainTransaction,\n} from \"@fastnear/utils\";\n\nimport type { NEP413Message } from \"@fastnear/utils\";\n\nimport {\n  _state,\n  DEFAULT_NETWORK_ID,\n  NETWORKS,\n  getAccountState,\n  getActiveNetwork,\n  getWalletProvider,\n  setActiveNetwork,\n  setWalletProvider,\n  getTxHistory,\n  update,\n  updateAccountState,\n  updateTxHistory,\n} from \"./state.js\";\n\nimport type { WalletProvider, FastNearNetworkId } from \"./state.js\";\nimport type { NetworkConfig } from \"./state.js\";\nimport type {\n  AccessKeyWithError,\n  BlockView,\n  ExplainedAction,\n  ExplainedError,\n  ExplainedTransaction,\n  FastNearApiV1AccountFtResponse,\n  FastNearApiV1AccountFullResponse,\n  FastNearApiV1AccountNftResponse,\n  FastNearApiV1AccountStakingResponse,\n  FastNearApiV1FtTopResponse,\n  FastNearApiV1PublicKeyAllResponse,\n  FastNearApiV1PublicKeyResponse,\n  FastNearRecipeDiscoveryEntry,\n  FastNearRecipeViewAccountResult,\n  FastNearKvAllByPredecessorResponse,\n  FastNearKvGetHistoryKeyResponse,\n  FastNearKvGetLatestKeyResponse,\n  FastNearKvHistoryByAccountResponse,\n  FastNearKvHistoryByPredecessorResponse,\n  FastNearKvLatestByAccountResponse,\n  FastNearKvLatestByPredecessorResponse,\n  FastNearKvMultiResponse,\n  FastNearNeardataBlockChunkResponse,\n  FastNearNeardataBlockHeadersResponse,\n  FastNearNeardataBlockOptimisticResponse,\n  FastNearNeardataBlockResponse,\n  FastNearNeardataBlockShardResponse,\n  FastNearNeardataFirstBlockResponse,\n  FastNearNeardataHealthResponse,\n  FastNearNeardataLastBlockFinalResponse,\n  FastNearNeardataLastBlockOptimisticResponse,\n  FastNearTransfersQueryResponse,\n  FastNearRpcQueryAccountResponse,\n  FastNearTxAccountResponse,\n  FastNearTxBlockResponse,\n  FastNearTxBlocksResponse,\n  FastNearTxReceiptResponse,\n  FastNearTxTransactionRow,\n  FastNearTxTransactionsResponse,\n  LastKnownBlock,\n  RecipeConnectParams,\n  RecipeFunctionCallParams,\n  RecipeInspectTransactionInput,\n  RecipeInspectTransactionParams,\n  RecipeViewAccountInput,\n  RecipeTransferParams,\n  RecipeViewAccountParams,\n  RecipeViewContractParams,\n} from \"./types.js\";\n\nimport {\n  getConfig,\n  setConfig,\n  resetTxHistory,\n  resolveConfig,\n} from \"./state.js\";\n\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport * as reExportAllUtils from \"@fastnear/utils\";\nimport * as stateExports from \"./state.js\";\n\nexport const MaxBlockDelayMs = 1000 * 60 * 60 * 6; // 6 hours\n\nfunction normalizeActionParams(action: any): Record<string, any> {\n  if (!action || typeof action !== \"object\") {\n    return {};\n  }\n  if (action.params && typeof action.params === \"object\") {\n    return { ...action.params };\n  }\n  const { type, ...rest } = action;\n  return { ...rest };\n}\n\nfunction looksRetryable(message: string, code: string | number | null, kind: ExplainedError[\"kind\"]): boolean {\n  if (kind === \"transport_error\") {\n    return true;\n  }\n  if (typeof code === \"number\" && [408, 429, 500, 502, 503, 504, -32000].includes(code)) {\n    return true;\n  }\n  return /timeout|temporar|temporarily|rate limit|unavailable|network|gateway/i.test(message);\n}\n\nfunction parseErrorPayload(error: unknown): {\n  code: string | number | null;\n  name: string | null;\n  message: string;\n  data: any;\n  kind: ExplainedError[\"kind\"];\n} {\n  const fallbackMessage = error instanceof Error\n    ? error.message\n    : typeof error === \"string\"\n      ? error\n      : \"Unknown error\";\n\n  const parsedMessage = tryParseJson(fallbackMessage);\n  const parsedObject = parsedMessage && typeof parsedMessage === \"object\"\n    ? parsedMessage\n    : error && typeof error === \"object\"\n      ? error\n      : null;\n\n  const code = parsedObject && \"code\" in parsedObject ? (parsedObject as any).code : null;\n  const data = parsedObject && \"data\" in parsedObject\n    ? (parsedObject as any).data\n    : parsedMessage && parsedMessage !== parsedObject\n      ? parsedMessage\n      : null;\n  const name = error instanceof Error\n    ? error.name\n    : parsedObject && \"name\" in parsedObject\n      ? String((parsedObject as any).name)\n      : \"Error\";\n  const message = parsedObject && \"message\" in parsedObject\n    ? String((parsedObject as any).message)\n    : fallbackMessage;\n\n  let kind: ExplainedError[\"kind\"] = \"error\";\n  if (parsedObject && (\"code\" in parsedObject || \"data\" in parsedObject)) {\n    kind = \"rpc_error\";\n  } else if (/wallet/i.test(message)) {\n    kind = \"wallet_error\";\n  } else if (/network|timeout|fetch|gateway|unavailable/i.test(message)) {\n    kind = \"transport_error\";\n  }\n\n  return {\n    code,\n    name,\n    message,\n    data,\n    kind,\n  };\n}\n\nexport function withBlockId(params: Record<string, any>, blockId?: string) {\n  if (blockId === \"final\" || blockId === \"optimistic\") {\n    return { ...params, finality: blockId };\n  }\n  return blockId ? { ...params, block_id: blockId } : { ...params, finality: \"optimistic\" };\n}\n\ntype ServiceFamily = \"rpc\" | \"api\" | \"tx\" | \"transfers\" | \"neardata\" | \"fastdata.kv\";\ntype ServiceAuthStyle = \"none\" | \"bearer\" | \"query\";\n\ninterface ServiceRequestOptions {\n  family: Exclude<ServiceFamily, \"rpc\">;\n  path: string;\n  method?: \"GET\" | \"POST\";\n  query?: Record<string, any>;\n  body?: any;\n  headers?: Record<string, string>;\n  // When set, routes the request through the override network's defaults\n  // (URLs from `NETWORKS[network].services.*`) instead of the active\n  // config. The active config's `apiKey` still flows through. Without\n  // it, the active config is used end-to-end.\n  network?: FastNearNetworkId;\n}\n\nconst SERVICE_AUTH_STYLES: Record<ServiceFamily, ServiceAuthStyle> = {\n  rpc: \"query\",\n  api: \"bearer\",\n  tx: \"bearer\",\n  transfers: \"bearer\",\n  neardata: \"query\",\n  \"fastdata.kv\": \"bearer\",\n};\n\nfunction omitUndefinedEntries<T extends Record<string, any>>(value?: T): T | undefined {\n  if (!value) {\n    return undefined;\n  }\n\n  return Object.fromEntries(\n    Object.entries(value).filter(([, entry]) => entry !== undefined)\n  ) as T;\n}\n\nfunction trimTrailingSlash(value: string): string {\n  return value.replace(/\\/+$/, \"\");\n}\n\nfunction trimLeadingSlash(value: string): string {\n  return value.replace(/^\\/+/, \"\");\n}\n\nfunction appendQueryParams(url: URL, query?: Record<string, any>): URL {\n  if (!query) {\n    return url;\n  }\n\n  for (const [key, value] of Object.entries(query)) {\n    if (value === undefined || value === null) {\n      continue;\n    }\n    if (Array.isArray(value)) {\n      value.forEach((item) => {\n        if (item !== undefined && item !== null) {\n          url.searchParams.append(key, String(item));\n        }\n      });\n      continue;\n    }\n    url.searchParams.set(key, String(value));\n  }\n\n  return url;\n}\n\nfunction buildUrl(baseUrl: string, path: string, query?: Record<string, any>): string {\n  const url = new URL(trimLeadingSlash(path), `${trimTrailingSlash(baseUrl)}/`);\n  return appendQueryParams(url, query).toString();\n}\n\nasync function parseResponsePayload(response: Response) {\n  const text = await response.text();\n  if (!text) {\n    return null;\n  }\n\n  try {\n    return JSON.parse(text);\n  } catch {\n    return text;\n  }\n}\n\nfunction buildHttpError(service: ServiceFamily, response: Response, payload: any): Error {\n  return new Error(\n    JSON.stringify({\n      code: response.status,\n      name: `${service}.http_error`,\n      message: `${service} request failed with ${response.status} ${response.statusText}`,\n      data: payload,\n    })\n  );\n}\n\n// Resolve the config to use for a per-call override. Without an\n// override, returns the active config. With one, returns a config built\n// from `NETWORKS[network].services` (so URLs hit the right hosts) but\n// inheriting the active `apiKey` (which is account-bound, not\n// network-bound). User-applied per-network URL overrides via\n// `near.config({ services: …, networkId: \"testnet\" })` are not currently\n// preserved across cross-network calls — callers who need that should\n// switch via `near.config({ networkId })` and back.\nfunction resolveConfigForCall(network?: FastNearNetworkId): NetworkConfig {\n  const active = getConfig();\n  if (!network || network === active.networkId) {\n    return active;\n  }\n  return resolveConfig({ apiKey: active.apiKey ?? null }, NETWORKS[network]);\n}\n\nfunction resolveServiceBaseUrl(family: Exclude<ServiceFamily, \"rpc\">, config: NetworkConfig): string {\n  let baseUrl: string | null | undefined;\n\n  switch (family) {\n    case \"api\":\n      baseUrl = config.services?.api?.baseUrl;\n      break;\n    case \"tx\":\n      baseUrl = config.services?.tx?.baseUrl;\n      break;\n    case \"transfers\":\n      baseUrl = config.services?.transfers?.baseUrl;\n      break;\n    case \"neardata\":\n      baseUrl = config.services?.neardata?.baseUrl;\n      break;\n    case \"fastdata.kv\":\n      baseUrl = config.services?.fastdata?.kvBaseUrl;\n      break;\n  }\n\n  if (!baseUrl) {\n    if (family === \"transfers\" && config.networkId === \"testnet\") {\n      throw new Error(\n        \"fastnear: transfers service is not configured for testnet. Provide near.config({ services: { transfers: { baseUrl: \\\"https://...\\\" } } }) to override.\"\n      );\n    }\n    throw new Error(`fastnear: ${family} service is not configured for ${config.networkId}.`);\n  }\n\n  return baseUrl;\n}\n\nfunction resolveRpcUrl(config: NetworkConfig): string {\n  const rpcUrl = config.nodeUrl || config.services?.rpc?.baseUrl;\n  if (!rpcUrl) {\n    throw new Error(\"fastnear: getConfig() returned invalid config: missing nodeUrl.\");\n  }\n  return rpcUrl;\n}\n\n// Pick the archival RPC if configured; fall back to the regular RPC so\n// callers that opt into `useArchival` against a network without archival\n// configured still get an answer (just from the non-archival node).\nfunction resolveArchivalUrl(config: NetworkConfig): string {\n  return config.services?.archival?.baseUrl || resolveRpcUrl(config);\n}\n\nfunction buildAuthedUrl(\n  service: ServiceFamily,\n  baseUrl: string,\n  path = \"\",\n  query?: Record<string, any>,\n  config: NetworkConfig = getConfig(),\n): string {\n  const authStyle = SERVICE_AUTH_STYLES[service];\n  const authQuery =\n    authStyle === \"query\" && config.apiKey\n      ? { ...(query || {}), apiKey: config.apiKey }\n      : query;\n\n  return buildUrl(baseUrl, path, authQuery);\n}\n\nasync function sendServiceRequest<T = any>({\n  family,\n  path,\n  method = \"GET\",\n  query,\n  body,\n  headers = {},\n  network,\n}: ServiceRequestOptions): Promise<T> {\n  const config = resolveConfigForCall(network);\n  const authStyle = SERVICE_AUTH_STYLES[family];\n  const url = buildAuthedUrl(family, resolveServiceBaseUrl(family, config), path, query, config);\n  const requestHeaders: Record<string, string> = { ...headers };\n\n  if (authStyle === \"bearer\" && config.apiKey) {\n    requestHeaders.Authorization = `Bearer ${config.apiKey}`;\n  }\n\n  let requestBody: string | undefined;\n  if (body !== undefined) {\n    requestHeaders[\"Content-Type\"] = requestHeaders[\"Content-Type\"] || \"application/json\";\n    requestBody = JSON.stringify(body);\n  }\n\n  const response = await fetch(url, {\n    method,\n    headers: requestHeaders,\n    body: requestBody,\n  });\n  const payload = await parseResponsePayload(response);\n\n  if (!response.ok) {\n    throw buildHttpError(family, response, payload);\n  }\n\n  return payload as T;\n}\n\nexport interface RpcRouteOptions {\n  /**\n   * Route this call to the archival RPC (`services.archival.baseUrl`)\n   * instead of the default. Useful for queries with a historical\n   * `blockId`. Falls back to the regular RPC if archival isn't configured.\n   */\n  useArchival?: boolean;\n  /**\n   * Route this call to the override network's RPC instead of the active\n   * `near.config().networkId`. Useful when a page holds parallel\n   * mainnet+testnet sessions and a single read or write needs to target\n   * the non-active network without flipping config back and forth.\n   */\n  network?: FastNearNetworkId;\n}\n\nexport async function sendRpc<T = any>(\n  method: string,\n  params: Record<string, any> | any[],\n  options?: RpcRouteOptions,\n): Promise<T> {\n  const config = resolveConfigForCall(options?.network);\n  const baseUrl = options?.useArchival ? resolveArchivalUrl(config) : resolveRpcUrl(config);\n  const response = await fetch(buildAuthedUrl(\"rpc\", baseUrl, \"\", undefined, config), {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\" },\n    body: JSON.stringify({\n      jsonrpc: \"2.0\",\n      id: `fastnear-${Date.now()}`,\n      method,\n      params,\n    }),\n  });\n  const result = await parseResponsePayload(response);\n  if (!response.ok) {\n    throw buildHttpError(\"rpc\", response, result);\n  }\n  if (result && typeof result === \"object\" && \"error\" in result && (result as any).error) {\n    throw new Error(JSON.stringify(result.error));\n  }\n  return result as T;\n}\n\nexport function afterTxSent(txId: string, network?: FastNearNetworkId) {\n  const txHistory = getTxHistory();\n  sendRpc(\"tx\", {\n    tx_hash: txHistory[txId]?.txHash,\n    sender_account_id: txHistory[txId]?.tx?.signerId,\n    wait_until: \"EXECUTED_OPTIMISTIC\",\n  }, { network })\n    .then( result => {\n      const successValue = result?.result?.status?.SuccessValue;\n      updateTxHistory({\n        txId,\n        status: \"Executed\",\n        result,\n        successValue: successValue ? tryParseJson(fromBase64(successValue)) : undefined,\n        finalState: true,\n      });\n    })\n    .catch((error) => {\n      updateTxHistory({\n        txId,\n        status: \"ErrorAfterIncluded\",\n        error: tryParseJson(error.message) ?? error.message,\n        finalState: true,\n      });\n    });\n}\n\nexport async function sendTxToRpc(\n  signedTxBase64: string,\n  waitUntil: string | undefined,\n  txId: string,\n  network?: FastNearNetworkId,\n) {\n  // default to \"INCLUDED\"\n  // see options: https://docs.near.org/api/rpc/transactions#tx-status-result\n  waitUntil = waitUntil || \"INCLUDED\";\n\n  try {\n    const sendTxRes = await sendRpc(\"send_tx\", {\n      signed_tx_base64: signedTxBase64,\n      wait_until: waitUntil,\n    }, { network });\n\n    updateTxHistory({ txId, status: \"Included\", finalState: false });\n    afterTxSent(txId, network);\n\n    return sendTxRes;\n  } catch (error) {\n    const errorMessage = error instanceof Error ? error.message : \"Unknown error\";\n    updateTxHistory({\n      txId,\n      status: \"Error\",\n      error: tryParseJson(errorMessage) ?? errorMessage,\n      finalState: false,\n    });\n    throw new Error(errorMessage);\n  }\n}\n\n/**\n * Generates a mock transaction ID.\n */\nexport function generateTxId(): string {\n  const randomPart = crypto.getRandomValues(new Uint32Array(2)).join(\"\");\n  return `tx-${Date.now()}-${parseInt(randomPart, 10).toString(36)}`;\n}\n\nexport const accountId = (options: { network?: FastNearNetworkId } = {}) =>\n  getAccountState(options.network).accountId;\n\nexport const publicKey = (options: { network?: FastNearNetworkId } = {}) =>\n  getAccountState(options.network).publicKey;\n\nexport const config = (newConfig?: Partial<NetworkConfig>) => {\n  const current = getConfig();\n  if (newConfig) {\n    const networkChanging =\n      !!newConfig.networkId && current.networkId !== newConfig.networkId;\n    setConfig(newConfig);\n    if (networkChanging) {\n      // Per-network state and per-network block cache are preserved\n      // across config switches — each network's slot survives. tx\n      // history is still cleared because it's keyed by local txId, not\n      // network, and a switch is the natural boundary for \"I'm done\n      // with the previous network's recent activity.\"\n      resetTxHistory();\n    }\n    // Whenever a `networkId` is explicitly specified, pin the active\n    // cursor to it — even when config.networkId was already that value.\n    // Callers use `config({ networkId })` as the canonical \"switch\n    // default network\" idiom, so it should also flip active.\n    if (newConfig.networkId) {\n      setActiveNetwork(getConfig().networkId);\n    }\n  }\n  return getConfig();\n};\n\nexport const authStatus = (\n  options: { network?: FastNearNetworkId } = {},\n): string | Record<string, any> => {\n  return getAccountState(options.network).accountId ? \"SignedIn\" : \"SignedOut\";\n};\n\nexport const getPublicKeyForContract = (options: { network?: FastNearNetworkId } = {}) => {\n  return publicKey(options);\n}\n\nexport const selected = (options: { network?: FastNearNetworkId } = {}) => {\n  const network = options.network ?? getConfig().networkId;\n  const slot = getAccountState(network);\n\n  return {\n    network,\n    nodeUrl: getConfig().nodeUrl,\n    walletUrl: getConfig().walletUrl,\n    helperUrl: getConfig().helperUrl,\n    explorerUrl: getConfig().explorerUrl,\n    account: slot.accountId,\n    contract: slot.accessKeyContractId,\n    publicKey: slot.publicKey,\n  }\n}\n\nexport const requestSignIn = async ({\n  contractId,\n  excludedWallets,\n  features,\n  network,\n}: {\n  contractId?: string;\n  excludedWallets?: string[];\n  features?: Record<string, boolean>;\n  network?: FastNearNetworkId;\n} = {}) => {\n  const provider = getWalletProvider();\n  if (!provider) {\n    throw new Error(\"No wallet provider set. Call useWallet() first or load the @fastnear/wallet IIFE bundle.\");\n  }\n\n  const targetNetwork = network ?? getConfig().networkId;\n\n  // Drop any prior session on the *target* network only — leaving sessions\n  // on other networks intact. With @fastnear/wallet 1.1.0+ the optional\n  // `{ network }` argument scopes both checks; older providers that ignore\n  // the option fall back to \"active network\", which matches pre-1.1.2\n  // behavior since `targetNetwork` defaulted to the active config.\n  if (provider.isConnected({ network: targetNetwork })) {\n    await provider.disconnect({ network: targetNetwork });\n  }\n\n  const result = await provider.connect({\n    contractId,\n    network: targetNetwork,\n    excludedWallets,\n    features,\n  });\n\n  if (!result) {\n    // User rejected\n    return undefined;\n  }\n\n  // Write the connected account into the *target network*'s slot rather\n  // than the legacy global, and promote that network to active so that\n  // back-compat callers (`near.accountId()` without args, etc.) resolve\n  // to the just-connected session.\n  updateAccountState({ accountId: result.accountId }, targetNetwork);\n  setActiveNetwork(targetNetwork);\n  return result;\n};\n\nexport const view = async ({\n                             contractId,\n                             methodName,\n                             args,\n                             argsBase64,\n                             blockId,\n                             useArchival,\n                             network,\n                           }: {\n  contractId: string;\n  methodName: string;\n  args?: any;\n  argsBase64?: string;\n  blockId?: string;\n  useArchival?: boolean;\n  network?: FastNearNetworkId;\n}) => {\n  const encodedArgs = argsBase64 || (args ? toBase64(JSON.stringify(args)) : \"\");\n  const queryResult = await sendRpc(\n    \"query\",\n    withBlockId(\n      {\n        request_type: \"call_function\",\n        account_id: contractId,\n        method_name: methodName,\n        args_base64: encodedArgs,\n      },\n      blockId\n    ),\n    { useArchival, network },\n  );\n\n  return parseJsonFromBytes(queryResult.result.result);\n};\n\nexport const queryAccount = async ({\n                                accountId,\n                                blockId,\n                                useArchival,\n                                network,\n                              }: {\n  accountId: string;\n  blockId?: string;\n  useArchival?: boolean;\n  network?: FastNearNetworkId;\n}): Promise<FastNearRpcQueryAccountResponse> => {\n  return sendRpc(\n    \"query\",\n    withBlockId({ request_type: \"view_account\", account_id: accountId }, blockId),\n    { useArchival, network },\n  );\n};\n\nexport const queryBlock = async ({ blockId, useArchival, network }: { blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }): Promise<BlockView> => {\n  return sendRpc(\"block\", withBlockId({}, blockId), { useArchival, network });\n};\n\nexport const queryAccessKey = async ({\n                                  accountId,\n                                  publicKey,\n                                  blockId,\n                                  useArchival,\n                                  network,\n                                }: {\n  accountId: string;\n  publicKey: string;\n  blockId?: string;\n  useArchival?: boolean;\n  network?: FastNearNetworkId;\n}): Promise<AccessKeyWithError> => {\n  return sendRpc(\n    \"query\",\n    withBlockId(\n      { request_type: \"view_access_key\", account_id: accountId, public_key: publicKey },\n      blockId\n    ),\n    { useArchival, network },\n  );\n};\n\nexport const queryTx = async ({ txHash, accountId, useArchival, network }: { txHash: string; accountId: string; useArchival?: boolean; network?: FastNearNetworkId }) => {\n  return sendRpc(\"tx\", [txHash, accountId], { useArchival, network });\n};\n\nfunction shouldPrintInteractiveSeparator(): boolean {\n  if (typeof process === \"undefined\") {\n    return false;\n  }\n\n  return Boolean(process.stdout?.isTTY);\n}\n\nexport function print(value: unknown): void {\n  if (shouldPrintInteractiveSeparator()) {\n    console.log(\"\");\n  }\n\n  if (\n    value === null ||\n    value === undefined ||\n    typeof value === \"string\" ||\n    typeof value === \"number\" ||\n    typeof value === \"boolean\" ||\n    typeof value === \"bigint\"\n  ) {\n    console.log(value);\n    return;\n  }\n\n  try {\n    console.log(JSON.stringify(value, null, 2));\n  } catch {\n    console.log(value);\n  }\n}\n\nfunction requiredParam<T>(value: T | undefined | null, name: string): T {\n  if (value === undefined || value === null || value === \"\") {\n    throw new Error(`fastnear: missing required parameter \"${name}\"`);\n  }\n  return value;\n}\n\nfunction encodePathParam(value: string | number, name: string): string {\n  return encodeURIComponent(String(requiredParam(value, name)));\n}\n\nfunction withAliases(\n  params: Record<string, any>,\n  aliases: Record<string, string>\n): Record<string, any> {\n  const next = { ...params };\n  for (const [from, to] of Object.entries(aliases)) {\n    if (next[from] !== undefined && next[to] === undefined) {\n      next[to] = next[from];\n    }\n    delete next[from];\n  }\n  return next;\n}\n\nexport const tx = {\n  transactions: ({ txHashes, network, ...filters }: { txHashes: string[]; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearTxTransactionsResponse>({\n      family: \"tx\",\n      path: \"/v0/transactions\",\n      method: \"POST\",\n      network,\n      body: omitUndefinedEntries({\n        ...filters,\n        tx_hashes: requiredParam(txHashes, \"txHashes\"),\n      }),\n    }),\n\n  receipt: ({ receiptId, network, ...filters }: { receiptId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearTxReceiptResponse>({\n      family: \"tx\",\n      path: \"/v0/receipt\",\n      method: \"POST\",\n      network,\n      body: omitUndefinedEntries({\n        ...filters,\n        receipt_id: requiredParam(receiptId, \"receiptId\"),\n      }),\n    }),\n\n  account: ({ accountId, network, ...filters }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearTxAccountResponse>({\n      family: \"tx\",\n      path: \"/v0/account\",\n      method: \"POST\",\n      network,\n      body: omitUndefinedEntries({\n        ...filters,\n        account_id: requiredParam(accountId, \"accountId\"),\n      }),\n    }),\n\n  block: ({ network, ...params }: { network?: FastNearNetworkId; [key: string]: any } = {}) =>\n    sendServiceRequest<FastNearTxBlockResponse>({\n      family: \"tx\",\n      path: \"/v0/block\",\n      method: \"POST\",\n      network,\n      body: omitUndefinedEntries(params),\n    }),\n\n  blocks: ({ network, ...params }: { network?: FastNearNetworkId; [key: string]: any } = {}) =>\n    sendServiceRequest<FastNearTxBlocksResponse>({\n      family: \"tx\",\n      path: \"/v0/blocks\",\n      method: \"POST\",\n      network,\n      body: omitUndefinedEntries(params),\n    }),\n};\n\nexport const api = {\n  v1: {\n    accountFull: ({ accountId, network, ...query }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearApiV1AccountFullResponse>({\n        family: \"api\",\n        path: `/v1/account/${encodePathParam(accountId, \"accountId\")}/full`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    accountFt: ({ accountId, network, ...query }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearApiV1AccountFtResponse>({\n        family: \"api\",\n        path: `/v1/account/${encodePathParam(accountId, \"accountId\")}/ft`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    accountNft: ({ accountId, network, ...query }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearApiV1AccountNftResponse>({\n        family: \"api\",\n        path: `/v1/account/${encodePathParam(accountId, \"accountId\")}/nft`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    accountStaking: ({ accountId, network, ...query }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearApiV1AccountStakingResponse>({\n        family: \"api\",\n        path: `/v1/account/${encodePathParam(accountId, \"accountId\")}/staking`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    publicKey: ({ publicKey, network, ...query }: { publicKey: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearApiV1PublicKeyResponse>({\n        family: \"api\",\n        path: `/v1/public_key/${encodePathParam(publicKey, \"publicKey\")}`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    publicKeyAll: ({ publicKey, network, ...query }: { publicKey: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearApiV1PublicKeyAllResponse>({\n        family: \"api\",\n        path: `/v1/public_key/${encodePathParam(publicKey, \"publicKey\")}/all`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    ftTop: ({ tokenId, network, ...query }: { tokenId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearApiV1FtTopResponse>({\n        family: \"api\",\n        path: `/v1/ft/${encodePathParam(tokenId, \"tokenId\")}/top`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n  },\n};\n\nexport const transfers = {\n  query: ({ network, ...params }: { network?: FastNearNetworkId; [key: string]: any } = {}) =>\n    sendServiceRequest<FastNearTransfersQueryResponse>({\n      family: \"transfers\",\n      path: \"/v0/transfers\",\n      method: \"POST\",\n      network,\n      body: omitUndefinedEntries(withAliases(params, { accountId: \"account_id\", resumeToken: \"resume_token\" })),\n    }),\n};\n\n// NEP-141 (fungible token) view-call shorthand.\n// Each helper is a one-line wrapper around `view` with the standard\n// method name pre-filled — agents prompt with the spec's verb instead\n// of pasting the underlying methodName recipe each time.\nexport const ft = {\n  balance: ({ contractId, accountId, blockId, useArchival, network }: { contractId: string; accountId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"ft_balance_of\", args: { account_id: accountId }, blockId, useArchival, network }),\n\n  metadata: ({ contractId, blockId, useArchival, network }: { contractId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"ft_metadata\", args: {}, blockId, useArchival, network }),\n\n  totalSupply: ({ contractId, blockId, useArchival, network }: { contractId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"ft_total_supply\", args: {}, blockId, useArchival, network }),\n\n  // NEP-145 storage-management read; many wallet/dApp flows need to know\n  // whether an account is registered with the FT contract before transferring.\n  storageBalance: ({ contractId, accountId, blockId, useArchival, network }: { contractId: string; accountId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"storage_balance_of\", args: { account_id: accountId }, blockId, useArchival, network }),\n\n  // Cross-contract: list every FT contract this account holds, served by\n  // the FastNear indexer. Layer-mixed but the natural name from the\n  // agent's perspective.\n  inventory: ({ accountId, network, ...query }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearApiV1AccountFtResponse>({\n      family: \"api\",\n      path: `/v1/account/${encodePathParam(accountId, \"accountId\")}/ft`,\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n};\n\n// NEP-171 (non-fungible token) view-call shorthand. Same pattern as `ft`.\nexport const nft = {\n  metadata: ({ contractId, blockId, useArchival, network }: { contractId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"nft_metadata\", args: {}, blockId, useArchival, network }),\n\n  token: ({ contractId, tokenId, blockId, useArchival, network }: { contractId: string; tokenId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"nft_token\", args: { token_id: tokenId }, blockId, useArchival, network }),\n\n  forOwner: ({ contractId, accountId, fromIndex, limit, blockId, useArchival, network }: { contractId: string; accountId: string; fromIndex?: string; limit?: number; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({\n      contractId,\n      methodName: \"nft_tokens_for_owner\",\n      args: omitUndefinedEntries({ account_id: accountId, from_index: fromIndex, limit }),\n      blockId,\n      useArchival,\n      network,\n    }),\n\n  supplyForOwner: ({ contractId, accountId, blockId, useArchival, network }: { contractId: string; accountId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"nft_supply_for_owner\", args: { account_id: accountId }, blockId, useArchival, network }),\n\n  totalSupply: ({ contractId, blockId, useArchival, network }: { contractId: string; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({ contractId, methodName: \"nft_total_supply\", args: {}, blockId, useArchival, network }),\n\n  tokens: ({ contractId, fromIndex, limit, blockId, useArchival, network }: { contractId: string; fromIndex?: string; limit?: number; blockId?: string; useArchival?: boolean; network?: FastNearNetworkId }) =>\n    view({\n      contractId,\n      methodName: \"nft_tokens\",\n      args: omitUndefinedEntries({ from_index: fromIndex, limit }),\n      blockId,\n      useArchival,\n      network,\n    }),\n\n  // List every NFT contract this account holds, served by the FastNear indexer.\n  inventory: ({ accountId, network, ...query }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearApiV1AccountNftResponse>({\n      family: \"api\",\n      path: `/v1/account/${encodePathParam(accountId, \"accountId\")}/nft`,\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n};\n\nexport const neardata = {\n  lastBlockFinal: ({ network, ...query }: { network?: FastNearNetworkId; [key: string]: any } = {}) =>\n    sendServiceRequest<FastNearNeardataLastBlockFinalResponse>({\n      family: \"neardata\",\n      path: \"/v0/last_block/final\",\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  lastBlockOptimistic: ({ network, ...query }: { network?: FastNearNetworkId; [key: string]: any } = {}) =>\n    sendServiceRequest<FastNearNeardataLastBlockOptimisticResponse>({\n      family: \"neardata\",\n      path: \"/v0/last_block/optimistic\",\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  block: ({ blockHeight, network, ...query }: { blockHeight: string | number; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearNeardataBlockResponse>({\n      family: \"neardata\",\n      path: `/v0/block/${encodePathParam(blockHeight, \"blockHeight\")}`,\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  blockHeaders: ({ blockHeight, network, ...query }: { blockHeight: string | number; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearNeardataBlockHeadersResponse>({\n      family: \"neardata\",\n      path: `/v0/block/${encodePathParam(blockHeight, \"blockHeight\")}/headers`,\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  blockShard: ({ blockHeight, shardId, network, ...query }: { blockHeight: string | number; shardId: string | number; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearNeardataBlockShardResponse>({\n      family: \"neardata\",\n      path: `/v0/block/${encodePathParam(blockHeight, \"blockHeight\")}/shard/${encodePathParam(shardId, \"shardId\")}`,\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  blockChunk: ({ blockHeight, shardId, network, ...query }: { blockHeight: string | number; shardId: string | number; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearNeardataBlockChunkResponse>({\n      family: \"neardata\",\n      path: `/v0/block/${encodePathParam(blockHeight, \"blockHeight\")}/chunk/${encodePathParam(shardId, \"shardId\")}`,\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  blockOptimistic: ({ blockHeight, network, ...query }: { blockHeight: string | number; network?: FastNearNetworkId; [key: string]: any }) =>\n    sendServiceRequest<FastNearNeardataBlockOptimisticResponse>({\n      family: \"neardata\",\n      path: `/v0/block_opt/${encodePathParam(blockHeight, \"blockHeight\")}`,\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  firstBlock: ({ network, ...query }: { network?: FastNearNetworkId; [key: string]: any } = {}) =>\n    sendServiceRequest<FastNearNeardataFirstBlockResponse>({\n      family: \"neardata\",\n      path: \"/v0/first_block\",\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n\n  health: ({ network, ...query }: { network?: FastNearNetworkId; [key: string]: any } = {}) =>\n    sendServiceRequest<FastNearNeardataHealthResponse>({\n      family: \"neardata\",\n      path: \"/health\",\n      network,\n      query: omitUndefinedEntries(query),\n    }),\n};\n\nexport const fastdata = {\n  kv: {\n    getLatestKey: ({ currentAccountId, predecessorId, key, network, ...query }: { currentAccountId: string; predecessorId: string; key: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvGetLatestKeyResponse>({\n        family: \"fastdata.kv\",\n        path: `/v0/latest/${encodePathParam(currentAccountId, \"currentAccountId\")}/${encodePathParam(predecessorId, \"predecessorId\")}/${encodePathParam(key, \"key\")}`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    getHistoryKey: ({ currentAccountId, predecessorId, key, network, ...query }: { currentAccountId: string; predecessorId: string; key: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvGetHistoryKeyResponse>({\n        family: \"fastdata.kv\",\n        path: `/v0/history/${encodePathParam(currentAccountId, \"currentAccountId\")}/${encodePathParam(predecessorId, \"predecessorId\")}/${encodePathParam(key, \"key\")}`,\n        network,\n        query: omitUndefinedEntries(query),\n      }),\n\n    latestByAccount: ({ accountId, network, ...body }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvLatestByAccountResponse>({\n        family: \"fastdata.kv\",\n        path: `/v0/latest/${encodePathParam(accountId, \"accountId\")}`,\n        method: \"POST\",\n        network,\n        body: omitUndefinedEntries(body),\n      }),\n\n    historyByAccount: ({ accountId, network, ...body }: { accountId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvHistoryByAccountResponse>({\n        family: \"fastdata.kv\",\n        path: `/v0/history/${encodePathParam(accountId, \"accountId\")}`,\n        method: \"POST\",\n        network,\n        body: omitUndefinedEntries(body),\n      }),\n\n    latestByPredecessor: ({ currentAccountId, predecessorId, network, ...body }: { currentAccountId: string; predecessorId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvLatestByPredecessorResponse>({\n        family: \"fastdata.kv\",\n        path: `/v0/latest/${encodePathParam(currentAccountId, \"currentAccountId\")}/${encodePathParam(predecessorId, \"predecessorId\")}`,\n        method: \"POST\",\n        network,\n        body: omitUndefinedEntries(body),\n      }),\n\n    historyByPredecessor: ({ currentAccountId, predecessorId, network, ...body }: { currentAccountId: string; predecessorId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvHistoryByPredecessorResponse>({\n        family: \"fastdata.kv\",\n        path: `/v0/history/${encodePathParam(currentAccountId, \"currentAccountId\")}/${encodePathParam(predecessorId, \"predecessorId\")}`,\n        method: \"POST\",\n        network,\n        body: omitUndefinedEntries(body),\n      }),\n\n    allByPredecessor: ({ predecessorId, network, ...body }: { predecessorId: string; network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvAllByPredecessorResponse>({\n        family: \"fastdata.kv\",\n        path: `/v0/all/${encodePathParam(predecessorId, \"predecessorId\")}`,\n        method: \"POST\",\n        network,\n        body: omitUndefinedEntries(body),\n      }),\n\n    multi: ({ network, ...body }: { network?: FastNearNetworkId; [key: string]: any }) =>\n      sendServiceRequest<FastNearKvMultiResponse>({\n        family: \"fastdata.kv\",\n        path: \"/v0/multi\",\n        method: \"POST\",\n        network,\n        body: omitUndefinedEntries(body),\n      }),\n  },\n};\n\nexport const localTxHistory = () => {\n  return getTxHistory();\n};\n\nexport const signOut = async ({\n  network,\n}: { network?: FastNearNetworkId } = {}) => {\n  const provider = getWalletProvider();\n  const targetNetwork = network ?? getConfig().networkId;\n\n  if (provider?.isConnected({ network: targetNetwork })) {\n    await provider.disconnect({ network: targetNetwork });\n  }\n\n  // Per-network state means we always clear the target network's slot\n  // — parallel sessions on other networks survive untouched. (Pre-1.1.1\n  // state was global; this used to be guarded so a non-active sign-out\n  // wouldn't clobber the active session. The per-network split moots\n  // that guard.)\n  updateAccountState(\n    {\n      accountId: null,\n      privateKey: null,\n      accessKeyContractId: null,\n      lastWalletId: null,\n    },\n    targetNetwork,\n  );\n\n  // Implicit `signOut()` (no arg) preserves the legacy reset-to-default\n  // shape: callers using single-session signOut expect the active config\n  // to flip back to mainnet defaults afterwards.\n  if (network === undefined) {\n    setConfig(NETWORKS[DEFAULT_NETWORK_ID]);\n    setActiveNetwork(DEFAULT_NETWORK_ID);\n  }\n};\n\nexport const sendTx = async ({\n                               receiverId,\n                               actions,\n                               waitUntil,\n                               network,\n                             }: {\n  receiverId: string;\n  actions: any[];\n  waitUntil?: string;\n  network?: FastNearNetworkId;\n}) => {\n  const targetNetwork = network ?? getConfig().networkId;\n  const slot = getAccountState(targetNetwork);\n  const signerId = slot.accountId;\n  if (!signerId) throw new Error(\"Must sign in\");\n\n  const pubKey = slot.publicKey ?? \"\";\n  const privKey = slot.privateKey;\n  const txId = generateTxId();\n\n  // If no local private key, or the receiver doesn't match the access key contract,\n  // or the actions aren't signable with a limited access key, delegate to the wallet\n  if (!privKey || receiverId !== slot.accessKeyContractId || !canSignWithLAK(actions)) {\n    const jsonTx = { signerId, receiverId, actions };\n    updateTxHistory({ status: \"Pending\", txId, tx: jsonTx, finalState: false });\n\n    try {\n      const provider = getWalletProvider();\n      if (!provider?.isConnected({ network: targetNetwork })) {\n        throw new Error(\"Must sign in\");\n      }\n\n      const result = await provider.sendTransaction({ ...jsonTx, network: targetNetwork });\n\n      if (!result) {\n        // User rejected\n        updateTxHistory({ txId, status: \"RejectedByUser\", finalState: true });\n        return { rejected: true };\n      }\n\n      if (result.outcomes?.length) {\n        result.outcomes.forEach((r: any) =>\n          updateTxHistory({\n            txId,\n            status: \"Executed\",\n            result: r,\n            txHash: r.transaction?.hash,\n            finalState: true,\n          })\n        );\n      }\n\n      return result;\n    } catch (err) {\n      console.error('fastnear: error sending tx using wallet provider:', err)\n      updateTxHistory({\n        txId,\n        status: \"Error\",\n        error: tryParseJson((err as Error).message),\n        finalState: true,\n      });\n\n      return Promise.reject(err);\n    }\n  }\n\n  // Local signing path (limited access key). The RPC helpers and the\n  // `nonce`/`block` caches are now per-network too, so a sendTx on a\n  // non-active network signs against that network's RPC and caches the\n  // nonce/block under the right key.\n  const nonceKey = `nonce.${targetNetwork}`;\n  const blockKey = `block.${targetNetwork}`;\n\n  let nonce = lsGet(nonceKey) as number | null;\n  if (nonce == null) {\n    const accessKey = await queryAccessKey({ accountId: signerId, publicKey: pubKey, network: targetNetwork });\n    if (accessKey.result.error) {\n      throw new Error(`Access key error: ${accessKey.result.error} when attempting to get nonce for ${signerId} for public key ${pubKey}`);\n    }\n    nonce = accessKey.result.nonce;\n    lsSet(nonceKey, nonce);\n  }\n\n  let lastKnownBlock = lsGet(blockKey) as LastKnownBlock | null;\n  if (\n    !lastKnownBlock ||\n    parseFloat(lastKnownBlock.header.timestamp_nanosec) / 1e6 + MaxBlockDelayMs < Date.now()\n  ) {\n    const latestBlock = await queryBlock({ blockId: \"final\", network: targetNetwork });\n    lastKnownBlock = {\n      header: {\n        hash: latestBlock.result.header.hash,\n        timestamp_nanosec: latestBlock.result.header.timestamp_nanosec,\n      },\n    };\n    lsSet(blockKey, lastKnownBlock);\n  }\n\n  nonce += 1;\n  lsSet(nonceKey, nonce);\n\n  const blockHash = lastKnownBlock.header.hash;\n\n  const plainTransactionObj: PlainTransaction = {\n    signerId,\n    publicKey: pubKey,\n    nonce,\n    receiverId,\n    blockHash,\n    actions,\n  };\n\n  const txBytes = serializeTransaction(plainTransactionObj);\n  const txHashBytes = sha256(txBytes);\n  const txHash58 = toBase58(txHashBytes);\n\n  const signatureBase58 = signHash(txHashBytes, privKey, { returnBase58: true }) as string;\n  const signedTransactionBytes = serializeSignedTransaction(plainTransactionObj, signatureBase58);\n  const signedTxBase64 = bytesToBase64(signedTransactionBytes);\n\n  updateTxHistory({\n    status: \"Pending\",\n    txId,\n    tx: plainTransactionObj,\n    signature: signatureBase58,\n    signedTxBase64,\n    txHash: txHash58,\n    finalState: false,\n  });\n\n  return await sendTxToRpc(signedTxBase64, waitUntil, txId, targetNetwork);\n};\n\n/**\n * Signs a NEP-413 message using the connected wallet. Pass an explicit\n * `{ network }` to route the signature through that network's wallet\n * session — useful when a page holds parallel mainnet+testnet sessions.\n * Without it, the active network's session is used.\n */\nexport const signMessage = async (\n  message: NEP413Message,\n  options: { network?: FastNearNetworkId } = {},\n) => {\n  const provider = getWalletProvider();\n  const targetNetwork = options.network ?? getConfig().networkId;\n  if (!provider?.isConnected({ network: targetNetwork })) {\n    throw new Error(\"Must sign in\");\n  }\n  if (!provider.signMessage) {\n    throw new Error(\"Connected wallet does not support signMessage\");\n  }\n  return provider.signMessage({ ...message, network: targetNetwork });\n};\n\n/**\n * Set the wallet provider used by the API for signing and sending transactions.\n * Automatically called in IIFE builds when globalThis.nearWallet is present.\n */\nexport const useWallet = (provider: WalletProvider): void => {\n  setWalletProvider(provider);\n};\n\n// exports\nexport const utils = reExportAllUtils;\n\nexport const event = stateExports.events;\n\n// `_state` is a live binding in state.ts (reassigned on\n// setActiveNetwork / updateAccountState). The literal-object form of\n// this namespace would freeze a value-copy at module load and go stale\n// as soon as the active network changed, so we expose `_state` as a\n// getter that always resolves to the current active slot.\nexport const state = (() => {\n  const ns: Record<string, any> = {\n    DEFAULT_NETWORK_ID: stateExports.DEFAULT_NETWORK_ID,\n    NETWORKS: stateExports.NETWORKS,\n    _config: stateExports._config,\n    _txHistory: stateExports._txHistory,\n    _unbroadcastedEvents: stateExports._unbroadcastedEvents,\n    setWalletProvider: stateExports.setWalletProvider,\n    getWalletProvider: stateExports.getWalletProvider,\n    update: stateExports.update,\n    updateAccountState: stateExports.updateAccountState,\n    getAccountState: stateExports.getAccountState,\n    getActiveNetwork: stateExports.getActiveNetwork,\n    setActiveNetwork: stateExports.setActiveNetwork,\n    updateTxHistory: stateExports.updateTxHistory,\n    getConfig: stateExports.getConfig,\n    getTxHistory: stateExports.getTxHistory,\n    setConfig: stateExports.setConfig,\n    resetTxHistory: stateExports.resetTxHistory,\n  };\n  Object.defineProperty(ns, \"_state\", {\n    get: () => stateExports._state,\n    enumerable: true,\n  });\n  return ns;\n})();\n\nexport const exp = {\n  utils,\n  borsh: reExportAllUtils.exp.borsh,\n  borshSchema: reExportAllUtils.exp.borshSchema.getBorshSchema(),\n};\n\n// action helpers\nexport const actions = {\n  functionCall: ({\n                   methodName,\n                   gas,\n                   deposit,\n                   args,\n                   argsBase64,\n                 }: {\n    methodName: string;\n    gas?: string;\n    deposit?: string;\n    args?: Record<string, any>;\n    argsBase64?: string;\n  }) => ({\n    type: \"FunctionCall\",\n    methodName,\n    args,\n    argsBase64,\n    gas,\n    deposit,\n  }),\n\n  transfer: (yoctoAmount: string) => ({\n    type: \"Transfer\",\n    deposit: yoctoAmount,\n  }),\n\n  stakeNEAR: ({amount, publicKey}: { amount: string; publicKey: string }) => ({\n    type: \"Stake\",\n    stake: amount,\n    publicKey,\n  }),\n\n  addFullAccessKey: ({publicKey}: { publicKey: string }) => ({\n    type: \"AddKey\",\n    publicKey: publicKey,\n    accessKey: {permission: \"FullAccess\"},\n  }),\n\n  addLimitedAccessKey: ({\n                          publicKey,\n                          allowance,\n                          accountId,\n                          methodNames,\n                        }: {\n    publicKey: string;\n    allowance: string;\n    accountId: string;\n    methodNames: string[];\n  }) => ({\n    type: \"AddKey\",\n    publicKey: publicKey,\n    accessKey: {\n      permission: \"FunctionCall\",\n      allowance,\n      receiverId: accountId,\n      methodNames,\n    },\n  }),\n\n  deleteKey: ({publicKey}: { publicKey: string }) => ({\n    type: \"DeleteKey\",\n    publicKey,\n  }),\n\n  deleteAccount: ({beneficiaryId}: { beneficiaryId: string }) => ({\n    type: \"DeleteAccount\",\n    beneficiaryId,\n  }),\n\n  createAccount: () => ({\n    type: \"CreateAccount\",\n  }),\n\n  deployContract: ({codeBase64}: { codeBase64: string }) => ({\n    type: \"DeployContract\",\n    codeBase64,\n  }),\n};\n\nexport const explain = {\n  action: (action: any): ExplainedAction => {\n    const type = action?.type ?? \"Unknown\";\n    const params = normalizeActionParams(action);\n\n    switch (type) {\n      case \"FunctionCall\":\n        return {\n          kind: \"action\",\n          type,\n          methodName: params.methodName ?? null,\n          gas: params.gas ?? null,\n          deposit: params.deposit ?? \"0\",\n          args: params.args ?? null,\n          argsBase64: params.argsBase64 ?? null,\n          params,\n        };\n      case \"Transfer\":\n        return {\n          kind: \"action\",\n          type,\n          deposit: params.deposit ?? null,\n          params,\n        };\n      case \"Stake\":\n        return {\n          kind: \"action\",\n          type,\n          stake: params.stake ?? null,\n          publicKey: params.publicKey ?? null,\n          params,\n        };\n      case \"AddKey\":\n        return {\n          kind: \"action\",\n          type,\n          publicKey: params.publicKey ?? null,\n          accessKey: params.accessKey ?? null,\n          params,\n        };\n      case \"DeleteKey\":\n        return {\n          kind: \"action\",\n          type,\n          publicKey: params.publicKey ?? null,\n          params,\n        };\n      case \"DeleteAccount\":\n        return {\n          kind: \"action\",\n          type,\n          beneficiaryId: params.beneficiaryId ?? null,\n          params,\n        };\n      case \"DeployContract\":\n        return {\n          kind: \"action\",\n          type,\n          codeBase64: params.codeBase64 ?? params.code ?? null,\n          codeLength: typeof (params.codeBase64 ?? params.code) === \"string\"\n            ? (params.codeBase64 ?? params.code).length\n            : null,\n          params,\n        };\n      case \"CreateAccount\":\n      default:\n        return {\n          kind: \"action\",\n          type,\n          params,\n        };\n    }\n  },\n\n  tx: ({\n    signerId,\n    receiverId,\n    actions,\n  }: {\n    signerId?: string;\n    receiverId: string;\n    actions: any[];\n  }): ExplainedTransaction => ({\n    kind: \"transaction\",\n    signerId: signerId ?? null,\n    receiverId,\n    actionCount: actions.length,\n    actions: actions.map((action) => explain.action(action)),\n  }),\n\n  error: (error: unknown): ExplainedError => {\n    const parsed = parseErrorPayload(error);\n    return {\n      ...parsed,\n      retryable: looksRetryable(parsed.message, parsed.code, parsed.kind),\n    };\n  },\n};\n\nfunction normalizeRecipeViewAccountParams(input: RecipeViewAccountInput): RecipeViewAccountParams {\n  return typeof input === \"string\" ? { accountId: input } : input;\n}\n\nfunction normalizeRecipeInspectTransactionParams(\n  input: RecipeInspectTransactionInput\n): RecipeInspectTransactionParams {\n  return typeof input === \"string\" ? { txHash: input } : input;\n}\n\nconst recipeDiscoveryEntries: FastNearRecipeDiscoveryEntry[] = [\n  {\n    id: \"view-contract\",\n    api: \"near.recipes.viewContract\",\n    title: \"What does this contract method return?\",\n  },\n  {\n    id: \"view-account\",\n    api: \"near.recipes.viewAccount\",\n    title: \"What does this account look like on chain?\",\n  },\n  {\n    id: \"inspect-transaction\",\n    api: \"near.tx.transactions\",\n    title: \"What happened in this transaction?\",\n  },\n  {\n    id: \"account-full\",\n    api: \"near.api.v1.accountFull\",\n    title: \"What does this account own?\",\n  },\n  {\n    id: \"transfers-query\",\n    api: \"near.transfers.query\",\n    title: \"What is this account's recent transfer activity?\",\n  },\n  {\n    id: \"last-block-final\",\n    api: \"near.neardata.lastBlockFinal\",\n    title: \"What block is NEAR on right now?\",\n  },\n  {\n    id: \"kv-latest-key\",\n    api: \"near.fastdata.kv.getLatestKey\",\n    title: \"What is the latest indexed value for this exact key?\",\n  },\n  {\n    id: \"connect-wallet\",\n    api: \"near.recipes.connect\",\n    title: \"How do I connect a wallet?\",\n  },\n  {\n    id: \"function-call\",\n    api: \"near.recipes.functionCall\",\n    title: \"How do I send one function call?\",\n  },\n  {\n    id: \"transfer\",\n    api: \"near.recipes.transfer\",\n    title: \"How do I transfer NEAR?\",\n  },\n  {\n    id: \"sign-message\",\n    api: \"near.recipes.signMessage\",\n    title: \"How do I sign a message?\",\n  },\n  {\n    id: \"sign-delegate-actions\",\n    api: \"nearWallet.signDelegateActions\",\n    title: \"How do I sign delegate actions for gasless transactions?\",\n  },\n  {\n    id: \"ft-balance\",\n    api: \"near.ft.balance\",\n    title: \"What is this account's FT balance?\",\n  },\n  {\n    id: \"ft-metadata\",\n    api: \"near.ft.metadata\",\n    title: \"What does this NEP-141 token call itself?\",\n  },\n  {\n    id: \"ft-inventory\",\n    api: \"near.ft.inventory\",\n    title: \"Which fungible tokens does this account hold?\",\n  },\n  {\n    id: \"nft-for-owner\",\n    api: \"near.nft.forOwner\",\n    title: \"Which NFTs does this account own on this contract?\",\n  },\n  {\n    id: \"nft-inventory\",\n    api: \"near.nft.inventory\",\n    title: \"Which NFT contracts does this account hold tokens on?\",\n  },\n  {\n    id: \"archival-snapshot\",\n    api: \"near.queryAccount\",\n    title: \"What did this account look like at a specific block?\",\n  },\n  {\n    id: \"connect-testnet\",\n    api: \"near.recipes.connect\",\n    title: \"How do I open a testnet wallet session alongside mainnet?\",\n  },\n  {\n    id: \"function-call-testnet\",\n    api: \"near.recipes.functionCall\",\n    title: \"How do I send a function call on testnet without losing my mainnet session?\",\n  },\n];\n\nfunction listRecipes(): FastNearRecipeDiscoveryEntry[] {\n  return recipeDiscoveryEntries.map((entry) => ({ ...entry }));\n}\n\nfunction viewAccountRecipe(\n  input: string\n): Promise<FastNearRecipeViewAccountResult>;\nfunction viewAccountRecipe(\n  input: RecipeViewAccountParams\n): Promise<FastNearRecipeViewAccountResult>;\nasync function viewAccountRecipe(\n  input: RecipeViewAccountInput\n): Promise<FastNearRecipeViewAccountResult> {\n  const result = await queryAccount(normalizeRecipeViewAccountParams(input));\n  return result.result;\n}\n\nfunction inspectTransactionRecipe(\n  input: string\n): Promise<FastNearTxTransactionRow | null>;\nfunction inspectTransactionRecipe(\n  input: RecipeInspectTransactionParams\n): Promise<FastNearTxTransactionRow | null>;\nasync function inspectTransactionRecipe(\n  input: RecipeInspectTransactionInput\n): Promise<FastNearTxTransactionRow | null> {\n  const { txHash } = normalizeRecipeInspectTransactionParams(input);\n  const result = await tx.transactions({ txHashes: [txHash] });\n  return result?.transactions?.[0] ?? null;\n}\n\nexport const recipes = {\n  viewContract: (params: RecipeViewContractParams) => view(params),\n\n  viewAccount: viewAccountRecipe,\n\n  inspectTransaction: inspectTransactionRecipe,\n\n  functionCall: ({\n    receiverId,\n    methodName,\n    args,\n    argsBase64,\n    gas,\n    deposit,\n    waitUntil,\n    network,\n  }: RecipeFunctionCallParams) =>\n    sendTx({\n      receiverId,\n      waitUntil,\n      network,\n      actions: [\n        actions.functionCall({\n          methodName,\n          args,\n          argsBase64,\n          gas,\n          deposit,\n        }),\n      ],\n    }),\n\n  transfer: ({\n    receiverId,\n    amount,\n    waitUntil,\n    network,\n  }: RecipeTransferParams) =>\n    sendTx({\n      receiverId,\n      waitUntil,\n      network,\n      actions: [actions.transfer(amount)],\n    }),\n\n  connect: (params: RecipeConnectParams = {}) => requestSignIn(params),\n\n  signMessage: (\n    message: NEP413Message,\n    options?: { network?: FastNearNetworkId },\n  ) => signMessage(message, options),\n\n  list: listRecipes,\n\n  toJSON: listRecipes,\n};\n"],"mappings":"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","names":["import_state","config","accountId","publicKey","actions"]}