@anywalletkit/wallet-near 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/errors.ts","../src/address.ts","../src/borsh.ts","../src/rpc.ts","../src/describe.ts","../src/nep413.ts","../src/read-only-account.ts","../src/account.ts","../src/manager.ts","../src/history.ts"],"sourcesContent":["export * from './types.js'\nexport * from './errors.js'\nexport {\n isValidAccountId, isImplicitAccountId, implicitAccountId, publicKeyToString, parsePublicKey, ed25519Key, publicKeyOfImplicit, base58ToBytes, bytesToBase58,\n} from './address.js'\nexport {\n BorshWriter, BorshReader, ACTION_TAG, actionKey, argsBytes, encodeTransaction, decodeTransaction, encodeSignedTransaction, decodeSignedTransaction, decodeAnyTransaction,\n writeAction, readAction, writePublicKey, readPublicKey, writeSignature, readSignature,\n} from './borsh.js'\nexport { createClient, NearRpc, toBase64, fromBase64, failureOf, outcomeFailed } from './rpc.js'\nexport { describeTransaction, isDangerous, DANGEROUS_ACTIONS, type DescribeContext } from './describe.js'\nexport { nep413Bytes, nep413Hash, NEP413_PREFIX, type Nep413Payload, type Nep413Signed } from './nep413.js'\nexport { WalletAccountReadOnlyNear, receiptOf, parseSignature } from './read-only-account.js'\nexport { WalletAccountNear, type NearTransferResult } from './account.js'\nexport { WalletManagerNear, NEAR_BASE_PATH } from './manager.js'\nexport {\n createNearHistory, mapNearblocksGroup, mapNearblocksTxn, mapRpcTxStatus, parseJsonPreservingBigInts, decodeFunctionCallArgs, nearExplorerTxUrl, HistoryUnavailableError,\n encodeCursor as encodeHistoryCursor, decodeCursor as decodeHistoryCursor,\n type NearHistoryOptions, type NearHistorySource, type NearHistoryPage, type NearChainTx, type NearHistoryRaw, type NearHistoryCursor, type NearblocksReceiptRow, type NearblocksFtRow, type NearblocksTxn, type RpcTxStatus, type HistoryFetch,\n} from './history.js'\nexport { WalletManagerNear as default } from './manager.js'\n","/** JSON-RPC transport: `method` + `params`, returns the `result` (throws on `error`). */\nexport type NearFetch = (method: string, params: unknown) => Promise<unknown>\n\n/** One RPC base url (e.g. \"https://free.rpc.fastnear.com\") or a ready transport. */\nexport type NearProvider = string | NearFetch\n\n/**\n * Options for a NEAR wallet manager or account: RPC endpoints, network, fee caps and the\n * pre-sign checks.\n */\nexport interface NearConfig {\n /** RPC url(s) / transport(s). A list fails over in order. Omit for an offline (sign-only) wallet. */\n provider?: NearProvider | NearProvider[]\n /** Extra attempts across the provider list after the first failure (default 3). */\n retries?: number\n /** Optional headers for every request (e.g. an API key). */\n headers?: Record<string, string>\n /** Per-request timeout for url providers, in ms (default 15 000): a node that never answers fails over (reads) or ends as \"maybe sent\" (`send_tx`). */\n timeoutMs?: number\n /** \"mainnet\" (default) | \"testnet\" | any CAIP-2 suffix. */\n network?: 'mainnet' | 'testnet' | string\n /** Max fee (yoctoNEAR) for `transfer`. */\n transferMaxFee?: bigint | number\n /** Max fee (yoctoNEAR) for `sendTransaction` / `signTransaction`. */\n transactionMaxFee?: bigint | number\n /** Run the balance / account / access-key preflight before signing (default true). */\n simulate?: boolean\n /**\n * Allow actions that change the account itself or deploy code (AddKey, DeleteKey,\n * DeleteAccount, DeployContract, Stake, CreateAccount, global-contract actions,\n * SignedDelegate). Default false: they are refused with `dangerous-action`.\n */\n allowDangerousActions?: boolean\n /**\n * Most yoctoNEAR a token `transfer` may attach as `storage_deposit` to register the\n * recipient (the amount comes from the token contract itself). Default 0.0125 NEAR,\n * ten times the usual NEP-145 minimum.\n */\n maxStorageDeposit?: bigint | number\n}\n\n// ── Actions ──────────────────────────────────────────────────────────────────\n\nexport interface NearTransferAction { transfer: { deposit: bigint } }\nexport interface NearFunctionCallAction {\n functionCall: {\n methodName: string\n /** Raw bytes, or a JSON-serialisable object / string (encoded as UTF-8 JSON). */\n args: Uint8Array | Record<string, unknown> | string\n /** Prepaid gas (default 30 Tgas). Max 300 Tgas. */\n gas?: bigint\n /** Attached deposit in yoctoNEAR (default 0). */\n deposit?: bigint\n }\n}\nexport interface NearCreateAccountAction { createAccount: Record<string, never> }\nexport interface NearDeployContractAction { deployContract: { code: Uint8Array } }\nexport interface NearStakeAction { stake: { stake: bigint; publicKey: NearPublicKey } }\n/** An access key's nonce and permission (full access or a function-call key). */\nexport interface NearAccessKey {\n nonce: bigint\n permission: { fullAccess: Record<string, never> } | { functionCall: { allowance?: bigint; receiverId: string; methodNames: string[] } }\n}\nexport interface NearAddKeyAction { addKey: { publicKey: NearPublicKey; accessKey: NearAccessKey } }\nexport interface NearDeleteKeyAction { deleteKey: { publicKey: NearPublicKey } }\nexport interface NearDeleteAccountAction { deleteAccount: { beneficiaryId: string } }\nexport interface NearDelegateAction {\n senderId: string\n receiverId: string\n actions: NearAction[]\n nonce: bigint\n maxBlockHeight: bigint\n publicKey: NearPublicKey\n}\nexport interface NearSignedDelegateAction { signedDelegate: { delegateAction: NearDelegateAction; signature: NearSignature } }\nexport interface NearDeployGlobalContractAction { deployGlobalContract: { code: Uint8Array; deployMode: 'codeHash' | 'accountId' } }\nexport interface NearUseGlobalContractAction { useGlobalContract: { codeHash: Uint8Array } | { accountId: string } }\n\n/** One action of a NEAR transaction. */\nexport type NearAction =\n | NearCreateAccountAction\n | NearDeployContractAction\n | NearFunctionCallAction\n | NearTransferAction\n | NearStakeAction\n | NearAddKeyAction\n | NearDeleteKeyAction\n | NearDeleteAccountAction\n | NearSignedDelegateAction\n | NearDeployGlobalContractAction\n | NearUseGlobalContractAction\n\n/** A public key as NEAR encodes it: curve tag + raw bytes. */\nexport interface NearPublicKey { keyType: 'ed25519' | 'secp256k1'; data: Uint8Array }\nexport interface NearSignature { keyType: 'ed25519' | 'secp256k1'; data: Uint8Array }\n\n/**\n * A transaction to sign. `signerId` / `publicKey` default to the account's; `nonce` /\n * `blockHash` are fetched from the network when omitted (the account `needsNetwork`).\n */\nexport interface NearTransaction {\n receiverId: string\n actions: NearAction[]\n signerId?: string\n publicKey?: NearPublicKey\n nonce?: bigint\n /** 32 bytes, or base58. */\n blockHash?: Uint8Array | string\n}\n\n/** Fully specified transaction as it is hashed and signed. */\nexport interface NearBuiltTransaction {\n signerId: string\n publicKey: NearPublicKey\n nonce: bigint\n receiverId: string\n blockHash: Uint8Array\n actions: NearAction[]\n}\n\nexport interface NearSignedTransaction { transaction: NearBuiltTransaction; signature: NearSignature }\n\n/** Shorthand for `transfer`: native NEAR (no `token`) or a NEP-141 token (`token` = contract account id). */\nexport interface NearTransferOptions {\n token?: string\n recipient: string\n amount: bigint | number | string\n /** NEP-141 `memo` (ignored for native transfers — NEAR transfers carry no memo). */\n memo?: string\n}\n\n// ── Fees / preflight ────────────────────────────────────────────────────────\n\n/** Gas a transaction may burn and its cost in yoctoNEAR. */\nexport interface NearFeeEstimate {\n /** Gas the transaction can burn at most (prepaid function-call gas counts in full). */\n gas: bigint\n /** yoctoNEAR per gas unit at quote time. */\n gasPrice: bigint\n /** Upper bound of the fee in yoctoNEAR (`gas * gasPrice`, plus the account-creation charge when `createsAccount`). */\n fee: bigint\n /** yoctoNEAR the actions attach (transfer deposits + function-call deposits). */\n deposit: bigint\n /** True when a native transfer will create an implicit account (extra gas included). */\n createsAccount: boolean\n}\n\n/** Fee of a transaction in yoctoNEAR, with the estimate behind it. */\nexport interface NearQuote {\n /** = `estimate.fee`. */\n fee: bigint\n estimate: NearFeeEstimate\n}\n\n/** Whether a transaction is expected to succeed, and why not. */\nexport interface NearSimulation {\n ok: boolean\n reason?: string\n}\n\n/** An account's balance, locked stake and storage. */\nexport interface NearAccountView {\n amount: bigint\n locked: bigint\n storageUsage: bigint\n /** `amount - locked - storageUsage * STORAGE_PRICE_PER_BYTE` (never below 0). */\n available: bigint\n}\n\n/** Outcome of a NEAR transaction. */\nexport interface NearReceipt {\n hash: string\n /** 1 success, 0 failed. */\n status: 0 | 1\n blockNumber?: bigint\n /** Decoded failure, when any receipt failed. */\n failure?: string\n /** Raw `tx` RPC payload. */\n raw: Record<string, unknown>\n}\n\n// ── Describe ─────────────────────────────────────────────────────────────────\n\n/** What a NEAR transaction does. */\nexport type NearTxKind =\n | 'near-transfer'\n | 'ft-transfer'\n | 'ft-storage-deposit'\n | 'function-call'\n | 'batch'\n | 'create-account'\n | 'deploy-contract'\n | 'stake'\n | 'add-key'\n | 'delete-key'\n | 'delete-account'\n | 'delegate'\n | 'global-contract'\n/** Problems a NEAR description is flagged with. */\nexport type NearTxWarningCode = 'dangerous-action' | 'full-access-key' | 'zero-amount' | 'implicit-new-account' | 'self-transfer' | 'high-gas' | 'unknown-method' | 'invalid-account'\n/** One flagged problem, with a sentence a wallet can show. */\nexport interface NearTxWarning { code: NearTxWarningCode; message: string }\n\n/** A NEAR transaction decoded for a confirmation screen. */\nexport interface NearTxDescription {\n kind: NearTxKind\n warnings: NearTxWarning[]\n /** Signer account id when known. */\n from?: string\n /** Receiver account id (native transfer) or NEP-141 `receiver_id` (ft-transfer). */\n to?: string\n /** yoctoNEAR (native) or token base units (ft-transfer). */\n amount?: bigint\n /** NEP-141 contract account id. */\n token?: string\n /** NEP-141 memo. */\n memo?: string\n /** Called contract (function-call / batch). */\n contract?: string\n /** Methods called, in order. */\n methods?: string[]\n /** Total yoctoNEAR attached across actions. */\n deposit: bigint\n /** Total prepaid gas across function calls. */\n gas: bigint\n actionCount: number\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\n/** CAIP-2 ids of NEAR mainnet and testnet. */\nexport const CAIP2: Record<string, string> = { mainnet: 'near:mainnet', testnet: 'near:testnet' }\n\n/** 1 NEAR = 10^24 yoctoNEAR. */\nexport const YOCTO = 10n ** 24n\n/** 1 Tgas. */\nexport const TGAS = 10n ** 12n\n/** Hard per-transaction prepaid gas limit. */\nexport const MAX_GAS = 300n * TGAS\n/** Protocol storage price: 10^19 yoctoNEAR per byte. */\nexport const STORAGE_PRICE_PER_BYTE = 10n ** 19n\n/** NEP-141 `ft_transfer` requires exactly 1 yoctoNEAR attached. */\nexport const ONE_YOCTO = 1n\n/** Default gas for `ft_transfer` / `storage_deposit`. */\nexport const FT_TRANSFER_GAS = 30n * TGAS\n/** Gas attached to a NEP-145 `storage_deposit` call. */\nexport const STORAGE_DEPOSIT_GAS = 10n * TGAS\n/** Minimum native transfer that can create an implicit account (covers its storage). */\nexport const IMPLICIT_ACCOUNT_MIN_DEPOSIT = 2n * 10n ** 21n // 0.002 NEAR\n","import { SignerError } from '@anywalletkit/core'\n\n/** Why a transaction was refused before signing. */\nexport type UnsafeTransactionCode =\n | 'signer-mismatch'\n | 'public-key-mismatch'\n | 'dangerous-action'\n | 'invalid-account'\n | 'no-actions'\n | 'gas-limit'\n | 'fee-limit'\n | 'missing-block-hash'\n | 'missing-nonce'\n | 'unknown-action'\n | 'insufficient-balance'\n | 'implicit-account-min-deposit'\n | 'no-access-key'\n | 'storage-deposit'\n\n/** A transaction failed a hard check and was not signed. */\nexport class UnsafeTransactionError extends Error {\n readonly code: UnsafeTransactionCode\n constructor(code: UnsafeTransactionCode, message: string) {\n super(message)\n this.name = 'UnsafeTransactionError'\n this.code = code\n }\n}\n\n/**\n * `sign()` refused a 32-byte message: NEAR signs a transaction (and a delegate action, and a NEP-413\n * message) as ed25519 over a 32-byte sha256, so a signature over 32 raw bytes may be a valid\n * transaction signature — an AddKey that hands the account over. Off-chain messages go through\n * `signNep413`; transactions through `signTransaction` / `sendTransaction`, where they are reviewed.\n */\nexport class MessageIsTransactionError extends SignerError {\n readonly code = 'message-is-transaction'\n constructor() {\n super('This message has the shape of a transaction (a 32-byte NEAR hash, or bytes naming this key as a Solana signer) and is not signed; use signNep413 for off-chain messages, or signTransaction so it can be reviewed.')\n this.name = 'MessageIsTransactionError'\n }\n}\n\n/** The preflight (balances, account, access key, token registration) predicted failure; nothing was signed. */\nexport class SimulationError extends Error {\n readonly reason: string\n constructor(reason: string) {\n super(`Transaction preflight failed: ${reason}`)\n this.name = 'SimulationError'\n this.reason = reason\n }\n}\n\n/** The RPC answered with an `error` object. */\nexport class NearRpcError extends Error {\n readonly method: string\n readonly errorName: string | undefined\n override readonly cause: unknown\n constructor(method: string, error: { name?: string; message?: string; cause?: { name?: string; info?: unknown }; data?: unknown; code?: number }) {\n const causeName = error.cause?.name\n super(`${method}: ${error.name ?? 'error'}${causeName ? ` / ${causeName}` : ''}${error.message ? ` — ${error.message}` : ''}`)\n this.name = 'NearRpcError'\n this.method = method\n this.errorName = causeName ?? error.name\n this.cause = error\n }\n}\n\n/**\n * The signed transaction was handed to the RPC but no definitive answer came back (no response, or\n * a node timeout): it MAY be on chain. Do not sign it again (a new nonce would pay twice) — watch\n * `hash`, computed locally.\n */\nexport class BroadcastUnknownError extends Error {\n /** Always true: the transaction may be on its way. */\n readonly maybeSent = true\n /** Base58 hash of the signed transaction. */\n readonly hash: string\n constructor(hash: string, cause: unknown) {\n super(`Broadcast outcome unknown for ${hash}: ${cause instanceof Error ? cause.message.slice(0, 200) : String(cause).slice(0, 200)}`, { cause })\n this.name = 'BroadcastUnknownError'\n this.hash = hash\n }\n}\n","import { base58 } from '@scure/base'\nimport { bytesToHex, hexToBytes } from '@noble/hashes/utils.js'\nimport type { NearPublicKey } from './types.js'\n\n/** NEAR account id grammar (nearcore `AccountId`): 2–64 chars, lowercase alnum, `_`/`-` inside parts, `.` between parts. */\nconst ACCOUNT_ID_RE = /^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$/\n/** True for a valid NEAR account id: 2–64 characters of the allowed alphabet, implicit or named. */\nexport function isValidAccountId(id: string): boolean {\n return id.length >= 2 && id.length <= 64 && ACCOUNT_ID_RE.test(id)\n}\n\n/** 64 lowercase hex chars = an implicit account (the account id IS the ed25519 public key). */\nexport function isImplicitAccountId(id: string): boolean {\n return id.length === 64 && /^[0-9a-f]{64}$/.test(id)\n}\n\n/** The implicit account id of an ed25519 public key. */\nexport function implicitAccountId(publicKey: Uint8Array): string {\n if (publicKey.length !== 32) throw new RangeError('ed25519 public key must be 32 bytes')\n return bytesToHex(publicKey)\n}\n\n/** \"ed25519:<base58>\" as NEAR tooling prints keys. */\nexport function publicKeyToString(k: NearPublicKey): string {\n return `${k.keyType}:${base58.encode(k.data)}`\n}\n\n/** Parse `ed25519:<base58>` (or bare base58) into a public key. */\nexport function parsePublicKey(s: string): NearPublicKey {\n const [type, data] = s.includes(':') ? s.split(':', 2) : ['ed25519', s]\n if (type !== 'ed25519' && type !== 'secp256k1') throw new RangeError(`unknown key type ${type}`)\n const bytes = base58.decode(data!)\n const want = type === 'ed25519' ? 32 : 64\n if (bytes.length !== want) throw new RangeError(`${type} public key must be ${want} bytes`)\n return { keyType: type, data: bytes }\n}\n\n/** A NEAR public key from 32 ed25519 bytes. */\nexport function ed25519Key(publicKey: Uint8Array): NearPublicKey {\n if (publicKey.length !== 32) throw new RangeError('ed25519 public key must be 32 bytes')\n return { keyType: 'ed25519', data: publicKey }\n}\n\n/** The ed25519 public key behind an implicit account id. */\nexport function publicKeyOfImplicit(accountId: string): Uint8Array {\n if (!isImplicitAccountId(accountId)) throw new RangeError(`${accountId} is not an implicit account id`)\n return hexToBytes(accountId)\n}\n\n/** Decode base58, optionally checking the length. */\nexport function base58ToBytes(s: string, length?: number): Uint8Array {\n const b = base58.decode(s)\n if (length !== undefined && b.length !== length) throw new RangeError(`expected ${length} bytes, got ${b.length}`)\n return b\n}\n/** Encode bytes as base58. */\nexport const bytesToBase58 = (b: Uint8Array): string => base58.encode(b)\n","/**\n * Borsh (https://borsh.io) for NEAR transactions — the exact layout nearcore and\n * @near-js/transactions use, written by hand so the package has no borsh dependency:\n * little-endian integers, u32-length-prefixed strings / vectors, u8 enum tags.\n */\nimport type {\n NearAccessKey, NearAction, NearBuiltTransaction, NearDelegateAction, NearPublicKey, NearSignature, NearSignedTransaction,\n} from './types.js'\n\nconst utf8 = new TextEncoder()\nconst utf8d = new TextDecoder()\n\n/** @internal Minimal borsh encoder for NEAR transactions. */\nexport class BorshWriter {\n private _buf = new Uint8Array(256)\n private _len = 0\n\n private ensure(n: number) {\n if (this._len + n <= this._buf.length) return\n const next = new Uint8Array(Math.max(this._buf.length * 2, this._len + n))\n next.set(this._buf.subarray(0, this._len))\n this._buf = next\n }\n u8(v: number) { this.ensure(1); this._buf[this._len++] = v & 0xff; return this }\n u32(v: number) {\n this.ensure(4)\n for (let i = 0; i < 4; i++) this._buf[this._len++] = (v >>> (8 * i)) & 0xff\n return this\n }\n uint(v: bigint, bytes: number) {\n if (v < 0n || v >= 1n << BigInt(8 * bytes)) throw new RangeError(`u${8 * bytes} out of range: ${v}`)\n this.ensure(bytes)\n for (let i = 0; i < bytes; i++) this._buf[this._len++] = Number((v >> BigInt(8 * i)) & 0xffn)\n return this\n }\n u64(v: bigint) { return this.uint(v, 8) }\n u128(v: bigint) { return this.uint(v, 16) }\n bytes(b: Uint8Array) { this.ensure(b.length); this._buf.set(b, this._len); this._len += b.length; return this }\n /** Vec<u8> / String: u32 length + bytes. */\n vecU8(b: Uint8Array) { return this.u32(b.length).bytes(b) }\n string(s: string) { return this.vecU8(utf8.encode(s)) }\n option<T>(v: T | undefined, write: (v: T) => void) {\n if (v === undefined) return this.u8(0)\n this.u8(1)\n write(v)\n return this\n }\n toBytes(): Uint8Array { return this._buf.slice(0, this._len) }\n}\n\n/** @internal Minimal borsh decoder for NEAR transactions. */\nexport class BorshReader {\n private _pos = 0\n constructor(private readonly _buf: Uint8Array) {}\n get remaining(): number { return this._buf.length - this._pos }\n private need(n: number) { if (this._pos + n > this._buf.length) throw new RangeError('borsh: unexpected end of input') }\n u8(): number { this.need(1); return this._buf[this._pos++]! }\n u32(): number {\n this.need(4)\n let v = 0\n for (let i = 0; i < 4; i++) v |= this._buf[this._pos++]! << (8 * i)\n return v >>> 0\n }\n uint(bytes: number): bigint {\n this.need(bytes)\n let v = 0n\n for (let i = 0; i < bytes; i++) v |= BigInt(this._buf[this._pos++]!) << BigInt(8 * i)\n return v\n }\n u64(): bigint { return this.uint(8) }\n u128(): bigint { return this.uint(16) }\n bytes(n: number): Uint8Array { this.need(n); const out = this._buf.slice(this._pos, this._pos + n); this._pos += n; return out }\n vecU8(): Uint8Array { return this.bytes(this.u32()) }\n string(): string { return utf8d.decode(this.vecU8()) }\n option<T>(read: () => T): T | undefined { return this.u8() === 0 ? undefined : read() }\n done(): void { if (this.remaining !== 0) throw new RangeError(`borsh: ${this.remaining} trailing bytes`) }\n}\n\n// ── Keys / signatures ────────────────────────────────────────────────────────\n\nconst KEY_TYPE = { ed25519: 0, secp256k1: 1 } as const\nconst KEY_LEN = { ed25519: 32, secp256k1: 64 } as const\nconst SIG_LEN = { ed25519: 64, secp256k1: 65 } as const\n\nexport function writePublicKey(w: BorshWriter, k: NearPublicKey): void {\n if (k.data.length !== KEY_LEN[k.keyType]) throw new RangeError(`${k.keyType} public key must be ${KEY_LEN[k.keyType]} bytes`)\n w.u8(KEY_TYPE[k.keyType]).bytes(k.data)\n}\nexport function readPublicKey(r: BorshReader): NearPublicKey {\n const t = r.u8()\n const keyType = t === 0 ? 'ed25519' : t === 1 ? 'secp256k1' : undefined\n if (!keyType) throw new RangeError(`borsh: unknown key type ${t}`)\n return { keyType, data: r.bytes(KEY_LEN[keyType]) }\n}\nexport function writeSignature(w: BorshWriter, s: NearSignature): void {\n if (s.data.length !== SIG_LEN[s.keyType]) throw new RangeError(`${s.keyType} signature must be ${SIG_LEN[s.keyType]} bytes`)\n w.u8(KEY_TYPE[s.keyType]).bytes(s.data)\n}\nexport function readSignature(r: BorshReader): NearSignature {\n const t = r.u8()\n const keyType = t === 0 ? 'ed25519' : t === 1 ? 'secp256k1' : undefined\n if (!keyType) throw new RangeError(`borsh: unknown signature type ${t}`)\n return { keyType, data: r.bytes(SIG_LEN[keyType]) }\n}\n\n// ── Actions ──────────────────────────────────────────────────────────────────\n\n/** Enum order from nearcore `Action` (and @near-js/transactions SCHEMA.Action). */\nexport const ACTION_TAG = {\n createAccount: 0, deployContract: 1, functionCall: 2, transfer: 3, stake: 4, addKey: 5, deleteKey: 6, deleteAccount: 7,\n signedDelegate: 8, deployGlobalContract: 9, useGlobalContract: 10,\n} as const\nexport type NearActionKey = keyof typeof ACTION_TAG\n\nexport function actionKey(a: NearAction): NearActionKey {\n const k = Object.keys(a)[0] as NearActionKey | undefined\n if (!k || !(k in ACTION_TAG)) throw new RangeError(`unknown action ${k}`)\n return k\n}\n\n/** Function-call args as bytes: raw bytes pass through; objects / strings become UTF-8 JSON / UTF-8. */\nexport function argsBytes(args: Uint8Array | Record<string, unknown> | string): Uint8Array {\n if (args instanceof Uint8Array) return args\n if (typeof args === 'string') return utf8.encode(args)\n return utf8.encode(JSON.stringify(args))\n}\n\nfunction writeAccessKey(w: BorshWriter, k: NearAccessKey): void {\n w.u64(k.nonce)\n if ('functionCall' in k.permission) {\n const p = k.permission.functionCall\n w.u8(0)\n w.option(p.allowance, (a) => w.u128(a))\n w.string(p.receiverId)\n w.u32(p.methodNames.length)\n for (const m of p.methodNames) w.string(m)\n } else {\n w.u8(1)\n }\n}\nfunction readAccessKey(r: BorshReader): NearAccessKey {\n const nonce = r.u64()\n const t = r.u8()\n if (t === 0) {\n const allowance = r.option(() => r.u128())\n const receiverId = r.string()\n const n = r.u32()\n const methodNames: string[] = []\n for (let i = 0; i < n; i++) methodNames.push(r.string())\n return { nonce, permission: { functionCall: { ...(allowance !== undefined ? { allowance } : {}), receiverId, methodNames } } }\n }\n if (t === 1) return { nonce, permission: { fullAccess: {} } }\n throw new RangeError(`borsh: unknown access-key permission ${t}`)\n}\n\nfunction writeDelegateAction(w: BorshWriter, d: NearDelegateAction): void {\n w.string(d.senderId).string(d.receiverId)\n w.u32(d.actions.length)\n for (const a of d.actions) writeAction(w, a)\n w.u64(d.nonce).u64(d.maxBlockHeight)\n writePublicKey(w, d.publicKey)\n}\nfunction readDelegateAction(r: BorshReader): NearDelegateAction {\n const senderId = r.string()\n const receiverId = r.string()\n const n = r.u32()\n const actions: NearAction[] = []\n for (let i = 0; i < n; i++) actions.push(readAction(r))\n const nonce = r.u64()\n const maxBlockHeight = r.u64()\n return { senderId, receiverId, actions, nonce, maxBlockHeight, publicKey: readPublicKey(r) }\n}\n\nexport function writeAction(w: BorshWriter, a: NearAction): void {\n const key = actionKey(a)\n w.u8(ACTION_TAG[key])\n switch (key) {\n case 'createAccount': return\n case 'deployContract': w.vecU8((a as { deployContract: { code: Uint8Array } }).deployContract.code); return\n case 'functionCall': {\n const f = (a as { functionCall: { methodName: string; args: Uint8Array | Record<string, unknown> | string; gas?: bigint; deposit?: bigint } }).functionCall\n w.string(f.methodName).vecU8(argsBytes(f.args)).u64(f.gas ?? 30n * 10n ** 12n).u128(f.deposit ?? 0n)\n return\n }\n case 'transfer': w.u128((a as { transfer: { deposit: bigint } }).transfer.deposit); return\n case 'stake': {\n const s = (a as { stake: { stake: bigint; publicKey: NearPublicKey } }).stake\n w.u128(s.stake)\n writePublicKey(w, s.publicKey)\n return\n }\n case 'addKey': {\n const k = (a as { addKey: { publicKey: NearPublicKey; accessKey: NearAccessKey } }).addKey\n writePublicKey(w, k.publicKey)\n writeAccessKey(w, k.accessKey)\n return\n }\n case 'deleteKey': writePublicKey(w, (a as { deleteKey: { publicKey: NearPublicKey } }).deleteKey.publicKey); return\n case 'deleteAccount': w.string((a as { deleteAccount: { beneficiaryId: string } }).deleteAccount.beneficiaryId); return\n case 'signedDelegate': {\n const d = (a as { signedDelegate: { delegateAction: NearDelegateAction; signature: NearSignature } }).signedDelegate\n writeDelegateAction(w, d.delegateAction)\n writeSignature(w, d.signature)\n return\n }\n case 'deployGlobalContract': {\n const g = (a as { deployGlobalContract: { code: Uint8Array; deployMode: 'codeHash' | 'accountId' } }).deployGlobalContract\n w.vecU8(g.code).u8(g.deployMode === 'codeHash' ? 0 : 1)\n return\n }\n case 'useGlobalContract': {\n const u = (a as { useGlobalContract: { codeHash: Uint8Array } | { accountId: string } }).useGlobalContract\n if ('codeHash' in u) { w.u8(0).bytes(u.codeHash) } else { w.u8(1).string(u.accountId) }\n return\n }\n }\n}\n\nexport function readAction(r: BorshReader): NearAction {\n const tag = r.u8()\n switch (tag) {\n case 0: return { createAccount: {} }\n case 1: return { deployContract: { code: r.vecU8() } }\n case 2: {\n const methodName = r.string()\n const args = r.vecU8()\n const gas = r.u64()\n const deposit = r.u128()\n return { functionCall: { methodName, args, gas, deposit } }\n }\n case 3: return { transfer: { deposit: r.u128() } }\n case 4: { const stake = r.u128(); return { stake: { stake, publicKey: readPublicKey(r) } } }\n case 5: { const publicKey = readPublicKey(r); return { addKey: { publicKey, accessKey: readAccessKey(r) } } }\n case 6: return { deleteKey: { publicKey: readPublicKey(r) } }\n case 7: return { deleteAccount: { beneficiaryId: r.string() } }\n case 8: { const delegateAction = readDelegateAction(r); return { signedDelegate: { delegateAction, signature: readSignature(r) } } }\n case 9: { const code = r.vecU8(); const m = r.u8(); return { deployGlobalContract: { code, deployMode: m === 0 ? 'codeHash' : 'accountId' } } }\n case 10: { const m = r.u8(); return { useGlobalContract: m === 0 ? { codeHash: r.bytes(32) } : { accountId: r.string() } } }\n default: throw new RangeError(`borsh: unknown action tag ${tag}`)\n }\n}\n\n// ── Transactions ─────────────────────────────────────────────────────────────\n\n/** Borsh bytes of an unsigned transaction. */\nexport function encodeTransaction(tx: NearBuiltTransaction): Uint8Array {\n if (tx.blockHash.length !== 32) throw new RangeError('blockHash must be 32 bytes')\n const w = new BorshWriter()\n w.string(tx.signerId)\n writePublicKey(w, tx.publicKey)\n w.u64(tx.nonce).string(tx.receiverId).bytes(tx.blockHash)\n w.u32(tx.actions.length)\n for (const a of tx.actions) writeAction(w, a)\n return w.toBytes()\n}\n\nexport function readTransaction(r: BorshReader): NearBuiltTransaction {\n const signerId = r.string()\n const publicKey = readPublicKey(r)\n const nonce = r.u64()\n const receiverId = r.string()\n const blockHash = r.bytes(32)\n const n = r.u32()\n const actions: NearAction[] = []\n for (let i = 0; i < n; i++) actions.push(readAction(r))\n return { signerId, publicKey, nonce, receiverId, blockHash, actions }\n}\n\n/** Decode an unsigned transaction from borsh bytes. */\nexport function decodeTransaction(bytes: Uint8Array): NearBuiltTransaction {\n const r = new BorshReader(bytes)\n const tx = readTransaction(r)\n r.done()\n return tx\n}\n\n/** Borsh bytes of a signed transaction, ready to broadcast as base64. */\nexport function encodeSignedTransaction(s: NearSignedTransaction): Uint8Array {\n const w = new BorshWriter()\n w.bytes(encodeTransaction(s.transaction))\n writeSignature(w, s.signature)\n return w.toBytes()\n}\n\n/** Decode a signed transaction from borsh bytes. */\nexport function decodeSignedTransaction(bytes: Uint8Array): NearSignedTransaction {\n const r = new BorshReader(bytes)\n const transaction = readTransaction(r)\n const signature = readSignature(r)\n r.done()\n return { transaction, signature }\n}\n\n/** Unsigned or signed borsh bytes → the transaction (and signature when present). */\nexport function decodeAnyTransaction(bytes: Uint8Array): { transaction: NearBuiltTransaction; signature?: NearSignature } {\n const r = new BorshReader(bytes)\n const transaction = readTransaction(r)\n if (r.remaining === 0) return { transaction }\n const signature = readSignature(r)\n r.done()\n return { transaction, signature }\n}\n","import { NetworkError } from '@anywalletkit/core'\nimport { NearRpcError } from './errors.js'\nimport type { NearConfig, NearFetch } from './types.js'\n\n/** Base64 helpers that work in Node, browsers and Hermes (no Buffer). */\nexport function toBase64(bytes: Uint8Array): string {\n if (typeof btoa === 'function') {\n let s = ''\n for (let i = 0; i < bytes.length; i += 0x8000) s += String.fromCharCode.apply(null, Array.from(bytes.subarray(i, i + 0x8000)))\n return btoa(s)\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (globalThis as any).Buffer.from(bytes).toString('base64')\n}\nexport function fromBase64(s: string): Uint8Array {\n if (typeof atob === 'function') {\n const bin = atob(s)\n const out = new Uint8Array(bin.length)\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i)\n return out\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Uint8Array((globalThis as any).Buffer.from(s, 'base64'))\n}\n\n/** Default per-request timeout for url providers. */\nexport const DEFAULT_TIMEOUT_MS = 15_000\n\n/** A signal that aborts after `ms`: `AbortSignal.timeout` where the runtime has it, else a timer (Hermes without runtime-hermes). */\nfunction timeoutSignal(ms: number): AbortSignal | undefined {\n if (typeof AbortSignal !== 'undefined' && typeof AbortSignal.timeout === 'function') return AbortSignal.timeout(ms)\n if (typeof AbortController === 'undefined') return undefined\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(new Error(`timed out after ${ms} ms`)), ms) as unknown as { unref?: () => void }\n timer.unref?.()\n return controller.signal\n}\n\nfunction httpTransport(url: string, headers: Record<string, string> | undefined, timeoutMs: number): NearFetch {\n let id = 0\n return async (method, params) => {\n const signal = timeoutSignal(timeoutMs)\n let res: Response\n try {\n res = await fetch(url, {\n method: 'POST',\n headers: { 'content-type': 'application/json', accept: 'application/json', ...headers },\n body: JSON.stringify({ jsonrpc: '2.0', id: String(++id), method, params }),\n ...(signal ? { signal } : {}),\n })\n } catch (e) {\n throw new NetworkError(`${method}: ${signal?.aborted ? `no answer within ${timeoutMs} ms` : 'request failed'}`, { provider: url, cause: e })\n }\n if (!res.ok) throw new NetworkError(`${method}: HTTP ${res.status}`, { provider: url })\n const json = (await res.json()) as { result?: unknown; error?: { name?: string; message?: string; cause?: { name?: string }; data?: unknown; code?: number } }\n if (json.error) throw new NearRpcError(method, json.error)\n return json.result\n }\n}\n\n/** An `error` from the node is a definitive answer (unknown account, invalid tx…) — never failed over. */\nexport const isDefinitive = (e: unknown) => e instanceof NearRpcError && !/TIMEOUT|INTERNAL|UNAVAILABLE|NO_SYNCED/i.test(e.errorName ?? '')\n\n/** Methods that hand a signed transaction to the network: a lost answer is ambiguous, so they are never re-sent elsewhere. */\nconst BROADCAST_METHODS: ReadonlySet<string> = new Set(['send_tx', 'broadcast_tx_commit', 'broadcast_tx_async'])\n\n/**\n * One transport, or a failover transport over the list. Reads fail over on anything but a\n * definitive node answer; a broadcast is sent once — the account turns an unanswered one into\n * `BroadcastUnknownError`.\n */\nexport function createClient(config: NearConfig): NearFetch | undefined {\n if (config.provider === undefined) return undefined\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS\n const list = (Array.isArray(config.provider) ? config.provider : [config.provider]).map((p) =>\n typeof p === 'string' ? httpTransport(p, config.headers, timeoutMs) : p,\n )\n if (list.length === 0) throw new Error(\"The 'provider' option cannot be set to an empty list.\")\n if (list.length === 1) return list[0]!\n const attempts = list.length + (config.retries ?? 3)\n return async (method, params) => {\n if (BROADCAST_METHODS.has(method)) return list[0]!(method, params)\n let lastError: unknown\n for (let i = 0; i < attempts; i++) {\n try { return await list[i % list.length]!(method, params) } catch (e) {\n if (isDefinitive(e)) throw e\n lastError = e\n }\n }\n throw new NetworkError(`All NEAR providers failed for ${method}`, { cause: lastError })\n }\n}\n\n// ── Typed helpers over `query` ───────────────────────────────────────────────\n\nexport interface RawAccountView { amount: string; locked: string; storage_usage: number; code_hash?: string; block_height?: number; block_hash?: string }\nexport interface RawAccessKeyView { nonce: number; permission: 'FullAccess' | { FunctionCall: { allowance: string | null; receiver_id: string; method_names: string[] } }; block_hash?: string; block_height?: number }\nexport interface RawCallResult { result: number[]; logs?: string[]; block_hash?: string; block_height?: number; error?: string }\nexport interface RawFinalOutcome {\n status?: Record<string, unknown>\n final_execution_status?: string\n transaction?: { hash?: string; signer_id?: string }\n transaction_outcome?: { id?: string; block_hash?: string; outcome?: { status?: Record<string, unknown>; gas_burnt?: number; tokens_burnt?: string } }\n receipts_outcome?: Array<{ id?: string; block_hash?: string; outcome?: { status?: Record<string, unknown>; gas_burnt?: number; tokens_burnt?: string } }>\n}\n\nconst UNKNOWN = /UNKNOWN_ACCOUNT|UNKNOWN_ACCESS_KEY|UNKNOWN_TRANSACTION|does not exist/i\n\n/** The NEAR JSON-RPC calls a wallet uses, with parsed results. */\nexport class NearRpc {\n constructor(readonly fetch: NearFetch) {}\n\n /** `undefined` when the account does not exist. */\n async viewAccount(accountId: string): Promise<RawAccountView | undefined> {\n try {\n return (await this.fetch('query', { request_type: 'view_account', finality: 'final', account_id: accountId })) as RawAccountView\n } catch (e) {\n if (e instanceof NearRpcError && UNKNOWN.test(e.errorName ?? e.message)) return undefined\n throw e\n }\n }\n\n /** `undefined` when the key is not on the account. */\n async viewAccessKey(accountId: string, publicKey: string): Promise<RawAccessKeyView | undefined> {\n try {\n return (await this.fetch('query', { request_type: 'view_access_key', finality: 'final', account_id: accountId, public_key: publicKey })) as RawAccessKeyView\n } catch (e) {\n if (e instanceof NearRpcError && UNKNOWN.test(e.errorName ?? e.message)) return undefined\n throw e\n }\n }\n\n /** View call; the JSON-decoded return value (`null` for an empty result). */\n async callFunction<T = unknown>(contract: string, method: string, args: Record<string, unknown> = {}): Promise<T> {\n const r = (await this.fetch('query', {\n request_type: 'call_function', finality: 'final', account_id: contract, method_name: method, args_base64: toBase64(new TextEncoder().encode(JSON.stringify(args))),\n })) as RawCallResult\n if (r.error) throw new NearRpcError('query', { name: 'HANDLER_ERROR', message: r.error, cause: { name: 'CONTRACT_EXECUTION_ERROR' } })\n const text = new TextDecoder().decode(Uint8Array.from(r.result ?? []))\n if (!text.length) return null as T\n return JSON.parse(text) as T\n }\n\n async latestBlockHash(): Promise<string> {\n const b = (await this.fetch('block', { finality: 'final' })) as { header?: { hash?: string } }\n if (!b.header?.hash) throw new NetworkError('block: no header hash in the response')\n return b.header.hash\n }\n\n async gasPrice(): Promise<bigint> {\n const r = (await this.fetch('gas_price', [null])) as { gas_price?: string }\n if (!r.gas_price) throw new NetworkError('gas_price: no price in the response')\n return BigInt(r.gas_price)\n }\n\n async sendTx(signedTxBase64: string, waitUntil: 'NONE' | 'INCLUDED' | 'EXECUTED_OPTIMISTIC' | 'INCLUDED_FINAL' | 'EXECUTED' | 'FINAL' = 'EXECUTED_OPTIMISTIC'): Promise<RawFinalOutcome> {\n return (await this.fetch('send_tx', { signed_tx_base64: signedTxBase64, wait_until: waitUntil })) as RawFinalOutcome\n }\n\n /** `undefined` when the node does not know the transaction. */\n async txStatus(hash: string, senderId: string): Promise<RawFinalOutcome | undefined> {\n try {\n return (await this.fetch('tx', { tx_hash: hash, sender_account_id: senderId, wait_until: 'NONE' })) as RawFinalOutcome\n } catch (e) {\n if (e instanceof NearRpcError && UNKNOWN.test(e.errorName ?? e.message)) return undefined\n throw e\n }\n }\n}\n\n/** Human-readable failure from an execution `status` (`{Failure: {...}}`), or undefined on success. */\nexport function failureOf(status: Record<string, unknown> | undefined): string | undefined {\n if (!status || !('Failure' in status)) return undefined\n const f = status.Failure\n try {\n const json = JSON.stringify(f)\n const m = /\"ExecutionError\":\"([^\"]+)\"/.exec(json) ?? /\"error_message\":\"([^\"]+)\"/.exec(json) ?? /\"kind\":(\\{[^}]*\\})/.exec(json)\n return m?.[1] ?? json.slice(0, 300)\n } catch { return String(f) }\n}\n\n/** Did the whole transaction (every receipt) succeed? */\nexport function outcomeFailed(o: RawFinalOutcome): string | undefined {\n const top = failureOf(o.status)\n if (top) return top\n for (const r of o.receipts_outcome ?? []) {\n const f = failureOf(r.outcome?.status)\n if (f) return f\n }\n return undefined\n}\n","import { argsBytes, actionKey } from './borsh.js'\nimport { isImplicitAccountId, isValidAccountId } from './address.js'\nimport { IMPLICIT_ACCOUNT_MIN_DEPOSIT, MAX_GAS, TGAS, type NearAction, type NearFunctionCallAction, type NearTransaction, type NearTxDescription, type NearTxKind, type NearTxWarning } from './types.js'\n\n/** What an offline description can be told to sharpen its warnings. */\nexport interface DescribeContext {\n /** The signing account; adds `self-transfer` and fills `from`. */\n signerId?: string\n /** Whether the receiver account exists; `describeTransactionOnline` fills it from the node. */\n recipientExists?: boolean\n}\n\n/** Actions that change the account itself, its keys, or deploy code. Refused unless `allowDangerousActions`. */\nexport const DANGEROUS_ACTIONS = new Set(['createAccount', 'deployContract', 'stake', 'addKey', 'deleteKey', 'deleteAccount', 'signedDelegate', 'deployGlobalContract', 'useGlobalContract'])\n\nconst KIND_OF_DANGEROUS: Record<string, NearTxKind> = {\n createAccount: 'create-account', deployContract: 'deploy-contract', stake: 'stake', addKey: 'add-key', deleteKey: 'delete-key',\n deleteAccount: 'delete-account', signedDelegate: 'delegate', deployGlobalContract: 'global-contract', useGlobalContract: 'global-contract',\n}\n\n/** Methods a NEP-141 / NEP-145 token contract exposes that we recognise. */\nconst FT_METHODS = new Set(['ft_transfer', 'ft_transfer_call', 'storage_deposit', 'storage_withdraw', 'storage_unregister'])\n\nfunction parseArgs(a: NearFunctionCallAction['functionCall']): Record<string, unknown> | undefined {\n try {\n const parsed = JSON.parse(new TextDecoder().decode(argsBytes(a.args))) as unknown\n return parsed && typeof parsed === 'object' ? (parsed as Record<string, unknown>) : undefined\n } catch { return undefined }\n}\n\n/** What a transaction does, decoded offline. Never throws on odd input — it warns. */\nexport function describeTransaction(tx: NearTransaction, ctx: DescribeContext = {}): NearTxDescription {\n const warnings: NearTxWarning[] = []\n const actions = tx.actions ?? []\n const from = tx.signerId ?? ctx.signerId\n let deposit = 0n\n let gas = 0n\n const methods: string[] = []\n let kind: NearTxKind = 'batch'\n let to: string | undefined = tx.receiverId\n let amount: bigint | undefined\n let token: string | undefined\n let memo: string | undefined\n let contract: string | undefined\n let dangerous: NearTxKind | undefined\n\n if (!isValidAccountId(tx.receiverId)) warnings.push({ code: 'invalid-account', message: `\"${tx.receiverId}\" is not a valid NEAR account id.` })\n\n for (const a of actions) {\n let key: string\n try { key = actionKey(a) } catch { warnings.push({ code: 'dangerous-action', message: 'Unknown action.' }); continue }\n if (DANGEROUS_ACTIONS.has(key)) {\n dangerous ??= KIND_OF_DANGEROUS[key]\n warnings.push({ code: 'dangerous-action', message: `${key} changes the account, its keys or its code.` })\n if (key === 'addKey' && 'fullAccess' in (a as { addKey: { accessKey: { permission: object } } }).addKey.accessKey.permission) {\n warnings.push({ code: 'full-access-key', message: 'Adds a FULL ACCESS key: whoever holds it owns the account.' })\n }\n continue\n }\n if (key === 'transfer') {\n const d = (a as { transfer: { deposit: bigint } }).transfer.deposit\n deposit += d\n amount = (amount ?? 0n) + d\n continue\n }\n if (key === 'functionCall') {\n const f = (a as NearFunctionCallAction).functionCall\n const g = f.gas ?? 30n * TGAS\n gas += g\n deposit += f.deposit ?? 0n\n methods.push(f.methodName)\n contract = tx.receiverId\n if (f.methodName === 'ft_transfer' || f.methodName === 'ft_transfer_call') {\n const args = parseArgs(f)\n token = tx.receiverId\n to = typeof args?.receiver_id === 'string' ? args.receiver_id : undefined\n if (typeof args?.amount === 'string' && /^\\d+$/.test(args.amount)) amount = BigInt(args.amount)\n if (typeof args?.memo === 'string') memo = args.memo\n if (to !== undefined && !isValidAccountId(to)) warnings.push({ code: 'invalid-account', message: `\"${to}\" is not a valid NEAR account id.` })\n }\n }\n }\n\n const callMethods = methods.filter((m) => m !== 'storage_deposit')\n if (dangerous) kind = dangerous\n else if (actions.length === 1 && methods.length === 0 && amount !== undefined) kind = 'near-transfer'\n else if (methods.length > 0 && callMethods.every((m) => m === 'ft_transfer' || m === 'ft_transfer_call') && callMethods.length === 1 && actions.length === methods.length) kind = 'ft-transfer'\n else if (methods.length === 1 && methods[0] === 'storage_deposit' && actions.length === 1) kind = 'ft-storage-deposit'\n else if (methods.length === 1 && actions.length === 1) kind = 'function-call'\n else kind = 'batch'\n\n if (kind === 'function-call' && !FT_METHODS.has(methods[0]!)) warnings.push({ code: 'unknown-method', message: `Calls ${tx.receiverId}.${methods[0]} — not a token method we recognise.` })\n if ((kind === 'near-transfer' || kind === 'ft-transfer') && amount === 0n) warnings.push({ code: 'zero-amount', message: 'Transfers nothing.' })\n if (gas > MAX_GAS) warnings.push({ code: 'high-gas', message: `Prepaid gas ${gas} exceeds the 300 Tgas transaction limit.` })\n if (from !== undefined && to !== undefined && from === to && (kind === 'near-transfer' || kind === 'ft-transfer')) warnings.push({ code: 'self-transfer', message: 'Sends to the signing account itself.' })\n if (kind === 'near-transfer' && ctx.recipientExists === false) {\n if (isImplicitAccountId(tx.receiverId)) {\n warnings.push({ code: 'implicit-new-account', message: `Creates the implicit account ${tx.receiverId}${(amount ?? 0n) < IMPLICIT_ACCOUNT_MIN_DEPOSIT ? ' — below the 0.002 NEAR it needs to exist' : ''}.` })\n } else {\n warnings.push({ code: 'invalid-account', message: `Account ${tx.receiverId} does not exist; a transfer to it would fail.` })\n }\n }\n\n return {\n kind, warnings, deposit, gas, actionCount: actions.length,\n ...(from !== undefined ? { from } : {}),\n ...(to !== undefined ? { to } : {}),\n ...(amount !== undefined ? { amount } : {}),\n ...(token !== undefined ? { token } : {}),\n ...(memo !== undefined ? { memo } : {}),\n ...(contract !== undefined ? { contract } : {}),\n ...(methods.length ? { methods } : {}),\n }\n}\n\n/**\n * True for actions that change who controls the account or its code: keys, account creation\n * or deletion, contract deployment, staking, delegated actions. Refused unless\n * `allowDangerousActions` is set.\n */\nexport const isDangerous = (a: NearAction): boolean => { try { return DANGEROUS_ACTIONS.has(actionKey(a)) } catch { return true } }\n","/**\n * NEP-413 \"Sign Message\" (https://github.com/near/NEPs/blob/master/neps/nep-0413.md):\n * the off-chain message standard NEAR wallets and NEAR Intents use. The signed\n * bytes are sha256( u32le(2^31 + 413) ‖ borsh(Payload) ), and the prefix keeps a\n * message from ever being a valid transaction.\n */\nimport { sha256 } from '@noble/hashes/sha2.js'\nimport { BorshWriter } from './borsh.js'\n\n/** NEP-413 tag (2^31 + 413) that keeps a signed message from being a valid transaction. */\nexport const NEP413_PREFIX = 2 ** 31 + 413\n\n/** A NEP-413 sign-in message, as a site asks for it. */\nexport interface Nep413Payload {\n message: string\n /** 32 random bytes chosen by the verifier (replay protection). */\n nonce: Uint8Array\n /** Who the message is for (e.g. \"intents.near\"). */\n recipient: string\n callbackUrl?: string\n}\n\n/** A NEP-413 signature and the key that made it. */\nexport interface Nep413Signed {\n /** Base64 of the 64-byte ed25519 signature — the encoding wallets return. */\n signature: string\n /** \"ed25519:<base58>\" */\n publicKey: string\n accountId: string\n}\n\n/** Borsh bytes of a NEP-413 payload, ready to hash and sign. */\nexport function nep413Bytes(p: Nep413Payload): Uint8Array {\n if (p.nonce.length !== 32) throw new RangeError('NEP-413 nonce must be 32 bytes')\n const w = new BorshWriter()\n w.u32(NEP413_PREFIX)\n w.string(p.message).bytes(p.nonce).string(p.recipient)\n w.option(p.callbackUrl, (u) => w.string(u))\n return w.toBytes()\n}\n\n/** The 32-byte digest an ed25519 signer signs for a NEP-413 message. */\nexport function nep413Hash(p: Nep413Payload): Uint8Array {\n return sha256(nep413Bytes(p))\n}\n","import { NetworkError, type IWalletAccountReadOnly } from '@anywalletkit/core'\nimport { ed25519 } from '@noble/curves/ed25519.js'\nimport { sha256 } from '@noble/hashes/sha2.js'\nimport { base58ToBytes, bytesToBase58, ed25519Key, isImplicitAccountId, isValidAccountId, publicKeyOfImplicit, publicKeyToString } from './address.js'\nimport { decodeAnyTransaction, encodeTransaction } from './borsh.js'\nimport { describeTransaction, isDangerous, type DescribeContext } from './describe.js'\nimport { SimulationError, UnsafeTransactionError } from './errors.js'\nimport { NearRpc, createClient, failureOf, fromBase64, outcomeFailed, type RawFinalOutcome } from './rpc.js'\nimport {\n CAIP2, FT_TRANSFER_GAS, IMPLICIT_ACCOUNT_MIN_DEPOSIT, MAX_GAS, ONE_YOCTO, STORAGE_DEPOSIT_GAS, STORAGE_PRICE_PER_BYTE, TGAS,\n type NearAccountView, type NearAction, type NearBuiltTransaction, type NearConfig, type NearFeeEstimate, type NearFetch, type NearFunctionCallAction,\n type NearPublicKey, type NearQuote, type NearReceipt, type NearSimulation, type NearTransaction, type NearTransferOptions, type NearTxDescription,\n} from './types.js'\n\n// ── Gas model (nearcore RuntimeFeesConfig, mainnet; send + exec, non-sir) ────\n// Upper bounds: unused prepaid gas is refunded, so a quote is what the signer can\n// lose at most, not what it will pay.\nconst ACTION_RECEIPT_GAS = 2n * 108_059_500_000n\nconst TRANSFER_GAS = 2n * 115_123_062_500n\nconst CREATE_ACCOUNT_GAS = 16n * 10n ** 12n // implicit account: create + full-access key + transfer; 15.9 Tgas measured on mainnet\nconst FUNCTION_CALL_BASE_GAS = 2n * 2_319_861_500_000n\nconst FUNCTION_CALL_PER_BYTE_GAS = 2n * 2_473_250n\n/**\n * Creating an implicit account by transferring to it costs more than its gas:\n * the recipient-side receipt burnt 0.00703 NEAR for 7.5 Tgas on mainnet\n * (tx 3W8EDnjC…, 2026-10-10) — the protocol's account-creation charge. Added\n * on top of the gas estimate whenever a native transfer creates the account.\n */\nconst IMPLICIT_ACCOUNT_CREATION_COST = 8n * 10n ** 21n // 0.008 NEAR\n/** Gas-price can rise 1% per block between quote and execution; keep a margin. */\nconst GAS_PRICE_MARGIN_NUM = 11n\nconst GAS_PRICE_MARGIN_DEN = 10n\n\ntype FtStorageBalance = { total: string; available: string } | null\n\n/** Default ceiling for a recipient's `storage_deposit` on a token transfer: 0.0125 NEAR. */\nexport const MAX_STORAGE_DEPOSIT = 12_500_000_000_000_000_000_000n\n\n/**\n * A NEAR account without a key: balances, NEP-141 tokens and storage, fee estimates, simulation,\n * receipts and signature checks.\n */\nexport class WalletAccountReadOnlyNear implements IWalletAccountReadOnly {\n /** Account id: the implicit hex id of the key, or a named account bound to it. */\n readonly address: string\n readonly chain: string\n readonly publicKey: NearPublicKey\n protected readonly _config: NearConfig\n protected readonly _client: NearFetch | undefined\n protected readonly _rpc: NearRpc | undefined\n\n /**\n * @param address account id; an implicit (64-hex) id also fixes the public key.\n * @param publicKey required for a named account (the key the account signs with).\n */\n constructor(address: string, config: NearConfig = {}, publicKey?: Uint8Array | NearPublicKey) {\n if (!isValidAccountId(address)) throw new RangeError(`\"${address}\" is not a valid NEAR account id`)\n this.address = address\n const key = publicKey instanceof Uint8Array ? ed25519Key(publicKey) : publicKey\n if (key) this.publicKey = key\n else if (isImplicitAccountId(address)) this.publicKey = ed25519Key(publicKeyOfImplicit(address))\n else throw new RangeError('A named NEAR account needs its public key.')\n this._config = config\n this._client = createClient(config)\n this._rpc = this._client ? new NearRpc(this._client) : undefined\n const net = config.network ?? 'mainnet'\n this.chain = CAIP2[net] ?? (net.startsWith('near:') ? net : `near:${net}`)\n }\n\n /** \"ed25519:<base58>\" */\n get publicKeyString(): string { return publicKeyToString(this.publicKey) }\n\n protected requireRpc(what: string): NearRpc {\n if (!this._rpc) throw new NetworkError(`The wallet must be connected to a provider to ${what}.`)\n return this._rpc\n }\n\n /** The account id. */\n async getAddress(): Promise<string> { return this.address }\n\n /** The account as the node sees it; `undefined` when it does not exist yet. */\n async getAccountView(accountId = this.address): Promise<NearAccountView | undefined> {\n const v = await this.requireRpc('retrieve balances').viewAccount(accountId)\n if (!v) return undefined\n const amount = BigInt(v.amount)\n const locked = BigInt(v.locked)\n const storageUsage = BigInt(v.storage_usage)\n const available = amount - locked - storageUsage * STORAGE_PRICE_PER_BYTE\n return { amount, locked, storageUsage, available: available > 0n ? available : 0n }\n }\n\n /** Total NEAR balance in yoctoNEAR (0 for an account that does not exist yet). */\n async getBalance(): Promise<bigint> {\n return (await this.getAccountView())?.amount ?? 0n\n }\n\n /** What can actually be spent: total − locked (staked) − storage reservation. */\n async getAvailableBalance(): Promise<bigint> {\n return (await this.getAccountView())?.available ?? 0n\n }\n\n /** True when the account exists on chain. */\n async accountExists(accountId: string): Promise<boolean> {\n return (await this.requireRpc('check an account').viewAccount(accountId)) !== undefined\n }\n\n /** NEP-141 `ft_balance_of`. */\n async getTokenBalance(token: string): Promise<bigint> {\n const r = await this.requireRpc('retrieve token balances').callFunction<string | null>(token, 'ft_balance_of', { account_id: this.address })\n return BigInt(r ?? '0')\n }\n\n /** Several NEP-141 balances in parallel, keyed by the token contracts as given. */\n async getTokenBalances(tokens: string[]): Promise<Record<string, bigint>> {\n const out: Record<string, bigint> = {}\n await Promise.all(tokens.map(async (t) => { out[t] = await this.getTokenBalance(t) }))\n return out\n }\n\n /** NEP-145 storage registration of `accountId` on a token contract (`null` = not registered). */\n async getStorageBalance(token: string, accountId = this.address): Promise<{ total: bigint; available: bigint } | null> {\n const r = await this.requireRpc('read token storage').callFunction<FtStorageBalance>(token, 'storage_balance_of', { account_id: accountId })\n return r ? { total: BigInt(r.total), available: BigInt(r.available) } : null\n }\n\n /** Minimum deposit a token contract wants for a registration (`storage_balance_bounds.min`). */\n async getStorageDepositMin(token: string): Promise<bigint> {\n const r = await this.requireRpc('read token storage').callFunction<{ min: unknown; max: unknown } | null>(token, 'storage_balance_bounds', {})\n const min = r?.min ?? '1250000000000000000000'\n if (typeof min !== 'string' || !/^\\d{1,40}$/.test(min)) throw new UnsafeTransactionError('storage-deposit', `${token} returned a malformed storage_balance_bounds.min.`)\n return BigInt(min)\n }\n\n // ── Building ────────────────────────────────────────────────────────────────\n\n /**\n * The actions for `transfer`: native → one Transfer; NEP-141 → `ft_transfer` (1 yocto, 30 Tgas),\n * preceded by `storage_deposit` when the recipient is not registered on the token.\n */\n async transferActions(o: NearTransferOptions): Promise<{ receiverId: string; actions: NearAction[] }> {\n const amount = BigInt(o.amount)\n if (!isValidAccountId(o.recipient)) throw new UnsafeTransactionError('invalid-account', `\"${o.recipient}\" is not a valid NEAR account id.`)\n if (!o.token) return { receiverId: o.recipient, actions: [{ transfer: { deposit: amount } }] }\n if (!isValidAccountId(o.token)) throw new UnsafeTransactionError('invalid-account', `\"${o.token}\" is not a valid token contract id.`)\n const actions: NearAction[] = []\n const registered = await this.getStorageBalance(o.token, o.recipient)\n if (registered === null) {\n const min = await this.getStorageDepositMin(o.token)\n // The token contract names this amount; it rides on our signature, so it is capped.\n const cap = BigInt(this._config.maxStorageDeposit ?? MAX_STORAGE_DEPOSIT)\n if (min > cap) throw new UnsafeTransactionError('storage-deposit', `${o.token} asks ${min} yoctoNEAR to register ${o.recipient}; the cap is ${cap}.`)\n actions.push({ functionCall: { methodName: 'storage_deposit', args: { account_id: o.recipient, registration_only: true }, gas: STORAGE_DEPOSIT_GAS, deposit: min } })\n }\n actions.push({\n functionCall: {\n methodName: 'ft_transfer',\n args: { receiver_id: o.recipient, amount: amount.toString(), ...(o.memo !== undefined ? { memo: o.memo } : {}) },\n gas: FT_TRANSFER_GAS,\n deposit: ONE_YOCTO,\n },\n })\n return { receiverId: o.token, actions }\n }\n\n /** Fill `signerId` / `publicKey` / `nonce` / `blockHash` (the last two from the node when missing). */\n async buildTransaction(tx: NearTransaction | string): Promise<NearBuiltTransaction> {\n if (typeof tx === 'string') return decodeAnyTransaction(fromBase64(tx)).transaction\n const signerId = tx.signerId ?? this.address\n const publicKey = tx.publicKey ?? this.publicKey\n let nonce = tx.nonce\n let blockHash = typeof tx.blockHash === 'string' ? base58ToBytes(tx.blockHash, 32) : tx.blockHash\n if (nonce === undefined || blockHash === undefined) {\n const rpc = this.requireRpc('build transactions')\n if (nonce === undefined) {\n const key = await rpc.viewAccessKey(signerId, publicKeyToString(publicKey))\n if (!key) throw new UnsafeTransactionError('no-access-key', `${publicKeyToString(publicKey)} is not an access key of ${signerId} (does the account exist and hold NEAR?).`)\n nonce = BigInt(key.nonce) + 1n\n }\n blockHash ??= base58ToBytes(await rpc.latestBlockHash(), 32)\n }\n return { signerId, publicKey, nonce, receiverId: tx.receiverId, blockHash, actions: tx.actions }\n }\n\n // ── Fees ────────────────────────────────────────────────────────────────────\n\n /** Gas upper bound for the actions (prepaid function-call gas in full). */\n static gasOf(actions: NearAction[], createsAccount: boolean): bigint {\n let gas = ACTION_RECEIPT_GAS\n for (const a of actions) {\n if ('transfer' in a) gas += TRANSFER_GAS + (createsAccount ? CREATE_ACCOUNT_GAS : 0n)\n else if ('functionCall' in a) {\n const f = (a as NearFunctionCallAction).functionCall\n const argLen = f.args instanceof Uint8Array ? f.args.length : typeof f.args === 'string' ? f.args.length : JSON.stringify(f.args).length\n gas += FUNCTION_CALL_BASE_GAS + FUNCTION_CALL_PER_BYTE_GAS * BigInt(argLen + f.methodName.length) + (f.gas ?? 30n * TGAS)\n } else gas += 5n * TGAS\n }\n return gas\n }\n\n static depositOf(actions: NearAction[]): bigint {\n let d = 0n\n for (const a of actions) {\n if ('transfer' in a) d += a.transfer.deposit\n else if ('functionCall' in a) d += a.functionCall.deposit ?? 0n\n else if ('stake' in a) d += a.stake.stake\n }\n return d\n }\n\n protected async estimate(tx: Pick<NearBuiltTransaction, 'receiverId' | 'actions'>, recipientExists?: boolean): Promise<NearFeeEstimate> {\n const rpc = this.requireRpc('estimate fees')\n const isTransfer = tx.actions.some((a) => 'transfer' in a)\n const createsAccount = isTransfer && isImplicitAccountId(tx.receiverId) && !(recipientExists ?? (await this.accountExists(tx.receiverId)))\n const gas = WalletAccountReadOnlyNear.gasOf(tx.actions, createsAccount)\n const gasPrice = ((await rpc.gasPrice()) * GAS_PRICE_MARGIN_NUM) / GAS_PRICE_MARGIN_DEN\n const fee = gas * gasPrice + (createsAccount ? IMPLICIT_ACCOUNT_CREATION_COST : 0n)\n return { gas, gasPrice, fee, deposit: WalletAccountReadOnlyNear.depositOf(tx.actions), createsAccount }\n }\n\n /** Gas and cost of a transaction. */\n async estimateFee(tx: NearTransaction | string): Promise<NearFeeEstimate> {\n return this.estimate(typeof tx === 'string' ? await this.buildTransaction(tx) : tx)\n }\n\n /** Fee of a transaction in yoctoNEAR. */\n async quoteSendTransaction(tx: NearTransaction | string): Promise<NearQuote> {\n const estimate = await this.estimateFee(tx)\n return { fee: estimate.fee, estimate }\n }\n\n /** Fee of a transfer in yoctoNEAR, for the same actions `transfer` would send. */\n async quoteTransfer(o: NearTransferOptions): Promise<NearQuote> {\n return this.quoteSendTransaction(await this.transferActions(o))\n }\n\n // ── Preflight ───────────────────────────────────────────────────────────────\n\n /**\n * Predict failure without signing: the signer account and its access key exist,\n * the spendable balance covers deposits + fee, a named recipient exists (an\n * implicit one may be created, for ≥ 0.002 NEAR), the token balance covers an\n * `ft_transfer`. Transport failures throw; predicted failures don't.\n */\n async simulateTransaction(tx: NearBuiltTransaction | NearTransaction, estimate?: NearFeeEstimate): Promise<NearSimulation> {\n const rpc = this.requireRpc('simulate transactions')\n const signerId = tx.signerId ?? this.address\n const d = describeTransaction(tx, { signerId })\n const acct = await this.getAccountView(signerId)\n if (!acct) return { ok: false, reason: `Account ${signerId} does not exist (fund it with NEAR first).` }\n const key = await rpc.viewAccessKey(signerId, publicKeyToString(tx.publicKey ?? this.publicKey))\n if (!key) return { ok: false, reason: `${publicKeyToString(tx.publicKey ?? this.publicKey)} is not an access key of ${signerId}.` }\n if (key.permission !== 'FullAccess') {\n const p = key.permission.FunctionCall\n if (p.receiver_id !== tx.receiverId || d.deposit > 0n) return { ok: false, reason: `The access key may only call ${p.receiver_id} without a deposit.` }\n if (p.method_names.length && d.methods?.some((m) => !p.method_names.includes(m))) return { ok: false, reason: 'The access key does not allow this method.' }\n }\n let recipientExists: boolean | undefined\n if (d.kind === 'near-transfer') {\n recipientExists = await this.accountExists(tx.receiverId)\n if (!recipientExists) {\n if (!isImplicitAccountId(tx.receiverId)) return { ok: false, reason: `Account ${tx.receiverId} does not exist.` }\n if ((d.amount ?? 0n) < IMPLICIT_ACCOUNT_MIN_DEPOSIT) return { ok: false, reason: `Creating ${tx.receiverId} needs at least 0.002 NEAR.` }\n }\n } else if (!(await this.accountExists(tx.receiverId))) {\n return { ok: false, reason: `Contract ${tx.receiverId} does not exist.` }\n }\n const est = estimate ?? (await this.estimate(tx, recipientExists))\n const need = est.deposit + est.fee\n if (acct.available < need) return { ok: false, reason: `Insufficient NEAR: need ${need} yocto (deposit + fee), spendable ${acct.available}.` }\n if (d.kind === 'ft-transfer' && d.token && d.amount !== undefined) {\n const bal = await this.getTokenBalance(d.token)\n if (bal < d.amount) return { ok: false, reason: `Insufficient ${d.token}: need ${d.amount}, have ${bal}.` }\n if (d.to && (await this.getStorageBalance(d.token, d.to)) === null && !d.methods?.includes('storage_deposit')) {\n return { ok: false, reason: `${d.to} is not registered on ${d.token}; add a storage_deposit action first.` }\n }\n }\n return { ok: true }\n }\n\n // ── Hard checks ─────────────────────────────────────────────────────────────\n\n /**\n * Refuse what cannot be right: a foreign signer or key, no actions, a dangerous\n * action (unless `allowDangerousActions`), an invalid receiver, prepaid gas over\n * 300 Tgas, a fee above `transactionMaxFee`.\n */\n assertSafe(tx: NearBuiltTransaction, fee?: bigint): void {\n if (tx.signerId !== this.address) throw new UnsafeTransactionError('signer-mismatch', `Transaction signer ${tx.signerId} is not this account (${this.address}).`)\n if (tx.publicKey.keyType !== this.publicKey.keyType || !equalBytes(tx.publicKey.data, this.publicKey.data)) throw new UnsafeTransactionError('public-key-mismatch', 'The transaction public key is not this account\\'s key.')\n if (!tx.actions.length) throw new UnsafeTransactionError('no-actions', 'The transaction has no actions.')\n if (!isValidAccountId(tx.receiverId)) throw new UnsafeTransactionError('invalid-account', `\"${tx.receiverId}\" is not a valid NEAR account id.`)\n if (tx.blockHash.length !== 32) throw new UnsafeTransactionError('missing-block-hash', 'The transaction has no 32-byte block hash.')\n if (tx.nonce <= 0n) throw new UnsafeTransactionError('missing-nonce', 'The transaction nonce must be positive.')\n if (!this._config.allowDangerousActions) {\n const bad = tx.actions.find(isDangerous)\n if (bad) throw new UnsafeTransactionError('dangerous-action', `Refusing ${Object.keys(bad)[0]}: it changes the account, its keys or its code (set allowDangerousActions to override).`)\n }\n let gas = 0n\n for (const a of tx.actions) if ('functionCall' in a) gas += a.functionCall.gas ?? 30n * TGAS\n if (gas > MAX_GAS) throw new UnsafeTransactionError('gas-limit', `Prepaid gas ${gas} exceeds the 300 Tgas limit.`)\n const max = this._config.transactionMaxFee\n if (fee !== undefined && max !== undefined && fee > BigInt(max)) throw new UnsafeTransactionError('fee-limit', `Fee ${fee} exceeds transactionMaxFee ${max}.`)\n }\n\n // ── Describe / receipts / verify ────────────────────────────────────────────\n\n /** `describeTransaction` plus the recipient-existence check against the node. */\n async describeTransactionOnline(tx: NearTransaction, ctx: DescribeContext = {}): Promise<NearTxDescription> {\n const offline = describeTransaction(tx, { signerId: this.address, ...ctx })\n if (ctx.recipientExists !== undefined || offline.kind !== 'near-transfer') return offline\n return describeTransaction(tx, { signerId: this.address, ...ctx, recipientExists: await this.accountExists(tx.receiverId) })\n }\n\n /** Status of one of this account's transactions (the `tx` RPC needs the sender). */\n async getTransactionReceipt(hash: string): Promise<NearReceipt | undefined> {\n const o = await this.requireRpc('fetch transaction receipts').txStatus(hash, this.address)\n if (!o) return undefined\n return receiptOf(hash, o)\n }\n\n /** Verify an `ed25519:<base58>` (or bare base58 / hex) signature produced by `sign`. */\n async verify(message: string | Uint8Array, signature: string): Promise<boolean> {\n try {\n const bytes = typeof message === 'string' ? new TextEncoder().encode(message) : message\n return ed25519.verify(parseSignature(signature), bytes, this.publicKey.data)\n } catch { return false }\n }\n\n /** sha256(borsh(tx)) — what gets signed; base58 of it is the transaction hash. */\n static hashOf(tx: NearBuiltTransaction): Uint8Array { return sha256(encodeTransaction(tx)) }\n static txHash(tx: NearBuiltTransaction): string { return bytesToBase58(WalletAccountReadOnlyNear.hashOf(tx)) }\n}\n\nexport function receiptOf(hash: string, o: RawFinalOutcome): NearReceipt {\n const failure = outcomeFailed(o)\n const pending = o.final_execution_status !== undefined && /NONE|INCLUDED$/.test(o.final_execution_status) && !failureOf(o.status) && o.status === undefined\n return { hash, status: failure ? 0 : 1, ...(failure ? { failure } : {}), raw: { ...o, ...(pending ? { pending: true } : {}) } }\n}\n\nexport function parseSignature(signature: string): Uint8Array {\n const s = signature.startsWith('ed25519:') ? signature.slice('ed25519:'.length) : signature\n if (/^(0x)?[0-9a-fA-F]{128}$/.test(s)) {\n const hex = s.replace(/^0x/, '')\n return Uint8Array.from(hex.match(/.{2}/g)!, (b) => parseInt(b, 16))\n }\n return base58ToBytes(s, 64)\n}\n\nfunction equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false\n let diff = 0\n for (let i = 0; i < a.length; i++) diff |= a[i]! ^ b[i]!\n return diff === 0\n}\n","import { LocalSigner, SignerError, feeLimit, requireCurve, type IWalletAccount, type IWalletAccountReadOnly, type Signer, type TransferResult, type WriteOptions } from '@anywalletkit/core'\nimport { bytesToBase58, ed25519Key, implicitAccountId, publicKeyToString } from './address.js'\nimport { decodeAnyTransaction, encodeSignedTransaction } from './borsh.js'\nimport { BroadcastUnknownError, MessageIsTransactionError, SimulationError } from './errors.js'\nimport { nep413Hash, type Nep413Payload, type Nep413Signed } from './nep413.js'\nimport { WalletAccountReadOnlyNear, receiptOf } from './read-only-account.js'\nimport { fromBase64, isDefinitive, outcomeFailed, toBase64 } from './rpc.js'\nimport type { NearBuiltTransaction, NearConfig, NearFeeEstimate, NearSignedTransaction, NearTransaction, NearTransferOptions } from './types.js'\n\n/** Does `bytes` carry `key` anywhere? A Solana transaction names each signer's 32-byte key. */\nconst carriesKey = (bytes: Uint8Array, key: Uint8Array): boolean => {\n outer: for (let i = 0; i + key.length <= bytes.length; i++) {\n for (let j = 0; j < key.length; j++) if (bytes[i + j] !== key[j]) continue outer\n return true\n }\n return false\n}\n\nexport interface NearTransferResult extends TransferResult {\n estimate?: NearFeeEstimate\n}\n\n/**\n * Signing NEAR account. The key lives in an ed25519 {@link Signer} (a local key\n * zeroized by `dispose()`, or an external hardware / MPC / backend signer). The\n * account builds the transaction (nonce + block hash from the node), checks it,\n * runs the preflight, has the signer sign sha256(borsh(tx)) (context `near-tx`)\n * and broadcasts it with `send_tx`.\n *\n * By default the account id is the implicit one (hex of the public key). Pass\n * `accountId` for a named account whose full-access key this is.\n */\nexport class WalletAccountNear extends WalletAccountReadOnlyNear implements IWalletAccount {\n /** nonce / block hash come from the node, so building needs the network. */\n readonly needsNetwork = true\n /** Derivation path, or `external` for an external signer. */\n readonly path: string\n /** The signer that holds the key. */\n readonly signer: Signer\n private _disposed = false\n private _readOnly: WalletAccountReadOnlyNear | undefined\n\n constructor(signer: Signer, publicKey: Uint8Array, path: string, config: NearConfig = {}, accountId?: string) {\n super(accountId ?? implicitAccountId(publicKey), config, ed25519Key(publicKey))\n this.signer = requireCurve(signer, 'ed25519')\n this.path = path\n }\n\n /** Wrap a raw derived key (takes ownership; zeroized on dispose). */\n static fromPrivateKey(privateKey: Uint8Array, publicKey: Uint8Array, path: string, config: NearConfig = {}, accountId?: string): WalletAccountNear {\n return new WalletAccountNear(LocalSigner.fromPrivateKey('ed25519', privateKey, publicKey, path), publicKey, path, config, accountId)\n }\n\n /** Account index for the standard m/44'/397'/i' path. */\n get index(): number | undefined {\n const m = /^m\\/44'\\/397'\\/(\\d+)'$/.exec(this.path)\n return m ? Number(m[1]) : undefined\n }\n\n /** The same key bound to a named account (`alice.near`) that lists it as a full-access key. */\n withAccountId(accountId: string): WalletAccountNear {\n return new WalletAccountNear(this.signer, this.publicKey.data, this.path, this._config, accountId)\n }\n\n private key(): void {\n if (this._disposed) throw new SignerError('This account has been disposed.')\n }\n\n private async signBytes(bytes: Uint8Array, context: 'near-tx' | 'near-message' | 'near-nep413'): Promise<Uint8Array> {\n this.key()\n return this.signer.sign(bytes, { scheme: 'ed25519', context })\n }\n\n /**\n * Raw ed25519 signature over the message bytes, as NEAR tooling prints it: \"ed25519:<base58>\".\n * A 32-byte message — string or bytes — is refused with {@link MessageIsTransactionError}: a NEAR\n * transaction is signed over its 32-byte sha256, so those bytes could be one. Bytes that carry\n * this account's public key are refused as well: one ed25519 key (an external signer) may also be\n * a Solana wallet, and a Solana transaction names its signer's key. Sites asking a wallet to sign\n * a message use {@link signNep413}.\n */\n async sign(message: string | Uint8Array): Promise<string> {\n const bytes = typeof message === 'string' ? new TextEncoder().encode(message) : message\n if (bytes.length === 32 || carriesKey(bytes, this.publicKey.data)) throw new MessageIsTransactionError()\n return `ed25519:${bytesToBase58(await this.signBytes(bytes, 'near-message'))}`\n }\n\n /** NEP-413 off-chain message (what NEAR Intents and dApps ask wallets to sign). */\n async signNep413(payload: Nep413Payload): Promise<Nep413Signed> {\n const sig = await this.signBytes(nep413Hash(payload), 'near-nep413')\n return { signature: toBase64(sig), publicKey: publicKeyToString(this.publicKey), accountId: this.address }\n }\n\n /** Sign a fully built transaction. No checks — see `signTransaction`. */\n async signBuilt(tx: NearBuiltTransaction): Promise<NearSignedTransaction> {\n const sig = await this.signBytes(WalletAccountReadOnlyNear.hashOf(tx), 'near-tx')\n return { transaction: tx, signature: { keyType: 'ed25519', data: sig } }\n }\n\n /** Build → hard checks → preflight → fee cap. Shared by sign / send / transfer. */\n private async prepare(tx: NearTransaction | string, maxFee: bigint | number | undefined, op: string): Promise<{ built: NearBuiltTransaction; estimate: NearFeeEstimate }> {\n const built = await this.buildTransaction(tx)\n this.assertSafe(built)\n const estimate = await this.estimate(built)\n this.assertSafe(built, estimate.fee)\n if (maxFee !== undefined && estimate.fee > BigInt(maxFee)) throw new Error(`Exceeded maximum fee cost for ${op} operation${op === 'transfer' ? 's' : ''}.`)\n if (this._config.simulate !== false) {\n const sim = await this.simulateTransaction(built, estimate)\n if (!sim.ok) throw new SimulationError(sim.reason ?? 'unknown')\n }\n return { built, estimate }\n }\n\n /** Build, check, preflight and sign; returns the signed transaction as base64 borsh (what `send_tx` takes). */\n async signTransaction(tx: NearTransaction | string, options: WriteOptions = {}): Promise<string> {\n this.key()\n this.requireRpc('sign transactions')\n const { built } = await this.prepare(tx, feeLimit(this._config.transactionMaxFee, options), 'transaction')\n return toBase64(encodeSignedTransaction(await this.signBuilt(built)))\n }\n\n private async broadcast(signed: NearSignedTransaction): Promise<string> {\n const hash = WalletAccountReadOnlyNear.txHash(signed.transaction)\n const rpc = this.requireRpc('broadcast')\n let outcome: Awaited<ReturnType<typeof rpc.sendTx>>\n try {\n outcome = await rpc.sendTx(toBase64(encodeSignedTransaction(signed)))\n } catch (e) {\n // A definitive refusal (invalid nonce, invalid tx…) is a clean failure; no answer or a node timeout may still land.\n if (isDefinitive(e)) throw e\n throw new BroadcastUnknownError(hash, e)\n }\n const failure = outcomeFailed(outcome)\n if (failure) throw new Error(`Transaction ${hash} failed on chain: ${failure}`)\n return outcome.transaction?.hash ?? hash\n }\n\n /**\n * Sign and broadcast. Accepts a transaction, or base64 borsh of an unsigned /\n * already-signed transaction (a signed one is checked, not re-signed).\n */\n async sendTransaction(tx: NearTransaction | string, options: WriteOptions = {}): Promise<NearTransferResult> {\n this.key()\n this.requireRpc('send transactions')\n const presigned = typeof tx === 'string' ? decodeSigned(tx) : undefined\n const { built, estimate } = await this.prepare(tx, feeLimit(this._config.transactionMaxFee, options), 'transaction')\n const signed = presigned ?? (await this.signBuilt(built))\n return { hash: await this.broadcast(signed), fee: estimate.fee, estimate }\n }\n\n /** Native NEAR (no `token`) or NEP-141 `ft_transfer` (with `storage_deposit` when the recipient needs it). */\n async transfer(o: NearTransferOptions, writeOptions: WriteOptions = {}): Promise<NearTransferResult> {\n this.key()\n this.requireRpc('transfer tokens')\n const { built, estimate } = await this.prepare(await this.transferActions(o), feeLimit(this._config.transferMaxFee, writeOptions), 'transfer')\n return { hash: await this.broadcast(await this.signBuilt(built)), fee: estimate.fee, estimate }\n }\n\n /** The same account as a {@link WalletAccountReadOnlyNear}. */\n toReadOnlyAccount(): IWalletAccountReadOnly {\n this._readOnly ??= new WalletAccountReadOnlyNear(this.address, this._config, this.publicKey)\n return this._readOnly\n }\n\n /** Dispose the signer (zeroizes a local key). Idempotent. */\n dispose(): void {\n this._disposed = true\n this.signer.dispose()\n }\n}\n\nfunction decodeSigned(b64: string): NearSignedTransaction | undefined {\n const { transaction, signature } = decodeAnyTransaction(fromBase64(b64))\n return signature ? { transaction, signature } : undefined\n}\n\nexport { receiptOf }\n","import { LocalSigner, NetworkError, SignerError, WalletManager, isSeedSigner, type FeeRates, type Signer } from '@anywalletkit/core'\nimport { WalletAccountNear } from './account.js'\nimport { WalletAccountReadOnlyNear } from './read-only-account.js'\nimport { NearRpc, createClient } from './rpc.js'\nimport type { NearConfig, NearPublicKey } from './types.js'\n\n/** Base derivation path; account `i` is at `m/44'/397'/i'`. */\nexport const NEAR_BASE_PATH = \"m/44'/397'\"\n\n/**\n * One seed → NEAR accounts at m/44'/397'/i' (SLIP-10 ed25519 — the NEAR Wallet /\n * near-seed-phrase path; index 0 is what every NEAR wallet derives). Paths may be\n * given relative to m/44'/397' (\"0'\") or in full; every segment must be hardened.\n *\n * Built with an ed25519 `Signer` instead of a seed, the manager wraps it:\n * - a derivable `SeedSigner` sitting at `m/44'/397'` yields `getAccount(i)` → `i'` children;\n * - a `SeedSigner` at a leaf, or any external signer, is `getAccount(0)` (path = the\n * signer's path, or 'external'); other indexes/paths throw `SignerError`.\n *\n * `getNamedAccount(\"alice.near\", i)` binds account i's key to a named account.\n */\nexport class WalletManagerNear extends WalletManager<WalletAccountNear, NearConfig> {\n constructor(seedOrSigner: string | Uint8Array | Signer, config: NearConfig = {}) {\n super(seedOrSigner, config)\n }\n\n\n async getAccount(index = 0): Promise<WalletAccountNear> {\n return this.getAccountByPath(`${NEAR_BASE_PATH}/${index}'`)\n }\n\n async getAccountByPath(path: string): Promise<WalletAccountNear> {\n const full = path.startsWith('m/') || path === 'external' ? path : `${NEAR_BASE_PATH}/${path}`\n if (full !== 'external' && !full.split('/').slice(1).every((s) => s.endsWith(\"'\"))) throw new Error('In NEAR, every child path in a derivation path must be hardened.')\n const cached = this._accounts.get(full)\n if (cached) return cached\n const external = this.externalSigner()\n if (external) return this.fromSigner(external, full)\n return this.cachedAccount(full, () => {\n const signer = LocalSigner.leafFromSeed(this.seedBytes(), 'ed25519', full)\n return new WalletAccountNear(signer, signer.publicKey, full, this._config)\n })\n }\n\n /** The key of account `index`, bound to a named account that lists it as a full-access key. */\n async getNamedAccount(accountId: string, index = 0): Promise<WalletAccountNear> {\n return (await this.getAccount(index)).withAccountId(accountId)\n }\n\n /** Resolve `path` against an injected signer: the signer itself, or a child when it can derive there. */\n private async fromSigner(signer: Signer, path: string): Promise<WalletAccountNear> {\n this.requireSigner('ed25519')\n let rel: string | undefined\n let key = 'external'\n if (isSeedSigner(signer)) {\n if (path === signer.path) key = path\n else if (path.startsWith(`${signer.path}/`)) { rel = path.slice(signer.path.length + 1); key = path }\n else throw new SignerError(`The injected signer sits at ${signer.path}; it cannot provide ${path}.`)\n } else if (path !== `${NEAR_BASE_PATH}/0'` && path !== 'external') {\n throw new SignerError(`An external signer has one account; ${path} is not derivable from it.`)\n }\n return this.signerAccount(key, signer, rel, (leaf, publicKey) => new WalletAccountNear(leaf, publicKey, key, this._config))\n }\n\n /** A read-only account for any account id, with this manager's config. */\n getReadOnlyAccount(accountId: string, publicKey?: Uint8Array | NearPublicKey): WalletAccountReadOnlyNear {\n return new WalletAccountReadOnlyNear(accountId, this._config, publicKey)\n }\n\n /** NEAR has one protocol gas price (`gas_price` RPC, yoctoNEAR per gas); it can rise ~1%/block, so fast = ×1.1. */\n async getFeeRates(): Promise<FeeRates> {\n const client = createClient(this._config)\n if (!client) throw new NetworkError('The wallet must be connected to a provider to read fee rates.')\n const price = await new NearRpc(client).gasPrice()\n return { slow: price, normal: price, fast: (price * 11n) / 10n }\n }\n\n}\n","/**\n * Activity history for NEAR: a `HistorySource` over the nearblocks API\n * (`/v1/account/{id}/txns` receipt rows + `/v1/account/{id}/ft-txns` NEP-141\n * movements, merged by transaction hash), with an optional archival RPC\n * (`EXPERIMENTAL_tx_status`) that makes single-transaction reads exact.\n *\n * nearblocks serializes large yoctoNEAR amounts as JSON numbers; integer\n * literals are kept exact by re-quoting them before `JSON.parse`, values the\n * API already rounded (`7e+23`) stay approximate and are flagged in `raw`.\n * Both lists page by keyset cursor (`id` / `event_index`), merged newest-first.\n * `fetch` + `AbortSignal.timeout` only — Hermes-safe.\n */\nimport type { ChainCall, ChainTransfer, ChainTx, HistoryPage, HistoryQuery, HistorySource } from '@anywalletkit/core'\nimport { fromBase64 } from './rpc.js'\nimport { CAIP2 } from './types.js'\nimport { bigintToNumber } from '@anywalletkit/core'\n\n// ── Public types ─────────────────────────────────────────────────────────────\n\nexport type HistoryFetch = (\n input: string,\n init?: { method?: string; headers?: Record<string, string>; body?: string; signal?: AbortSignal },\n) => Promise<{ ok: boolean; status: number; text(): Promise<string> }>\n\n/** Options for {@link createNearHistory}. */\nexport interface NearHistoryOptions {\n /** nearblocks root. Default `https://api.nearblocks.io` (`https://api-testnet.nearblocks.io` on testnet). */\n nearblocksUrl?: string\n /** nearblocks Bearer key. Keyless use is limited to a few requests per minute. */\n apiKey?: string\n /** Archival JSON-RPC (`https://archival-rpc.mainnet.near.org`). When set, `getTransaction` is refined with exact amounts, fee and NEP-141 events. */\n rpcUrl?: string\n network?: 'mainnet' | 'testnet'\n fetch?: HistoryFetch\n /** nearblocks requests per second. Default 0.1 (6/min) without a key, 5 with one. */\n rateLimit?: number\n /** Per request, ms. Default 15 000. */\n timeoutMs?: number\n}\n\nexport interface NearHistoryRaw {\n /** nearblocks receipt rows of this transaction (account `/txns`). */\n receipts: NearblocksReceiptRow[]\n /** nearblocks NEP-141 rows of this transaction (account `/ft-txns`). */\n ft: NearblocksFtRow[]\n /** `/v1/txns/{hash}` row (single-transaction reads). */\n txn?: NearblocksTxn\n /** `EXPERIMENTAL_tx_status` result when the RPC answered. */\n rpc?: RpcTxStatus\n /** Set when an amount or the fee came from a value nearblocks had already rounded to a double. */\n approximate?: true\n}\n\nexport interface NearChainTx extends ChainTx {\n raw: NearHistoryRaw\n}\n\nexport interface NearHistoryPage extends HistoryPage {\n items: NearChainTx[]\n}\n\n/**\n * NEAR history from the nearblocks API, with an archival RPC for single transactions. Build it with\n * {@link createNearHistory}.\n */\nexport interface NearHistorySource extends HistorySource {\n listActivity(address: string, query?: HistoryQuery): Promise<NearHistoryPage>\n getTransaction(hash: string, address: string): Promise<NearChainTx | undefined>\n}\n\n/** Every configured history backend failed. */\nexport class HistoryUnavailableError extends Error {\n readonly chain: string\n readonly reason: string\n readonly attempts: readonly string[]\n constructor(chain: string, reason: string, attempts: readonly string[] = []) {\n super(`History unavailable for ${chain}: ${reason}`)\n this.name = 'HistoryUnavailableError'\n this.chain = chain\n this.reason = reason\n this.attempts = attempts\n }\n}\n\nconst DEFAULT_LIMIT = 25\nconst MAX_LIMIT = 25\nconst DEFAULT_TIMEOUT_MS = 15_000\n/** NEP-141 convention: 1 yoctoNEAR attached to prove a full-access key; not a payment. */\nconst ONE_YOCTO = 1n\n\n// ── Cursor: per-list keyset positions, base64 JSON ───────────────────────────\n\nexport interface NearHistoryCursor {\n v: 1\n /** `/txns`: `id` of the last consumed row; '' = not started; null = exhausted. */\n tx: string | null\n /** `/ft-txns`: `event_index` of the last consumed row; '' = not started; null = exhausted. */\n ft: string | null\n}\n\nconst B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\nfunction b64encode(s: string): string {\n let out = ''\n for (let i = 0; i < s.length; i += 3) {\n const c = [s.charCodeAt(i), s.charCodeAt(i + 1), s.charCodeAt(i + 2)]\n for (const x of c) if (x > 0xff) throw new Error('cursor must be ASCII')\n const n = (c[0]! << 16) | ((c[1]! || 0) << 8) | (c[2]! || 0)\n out += B64[(n >> 18) & 63]! + B64[(n >> 12) & 63]! + (Number.isNaN(c[1]) ? '=' : B64[(n >> 6) & 63]!) + (Number.isNaN(c[2]) ? '=' : B64[n & 63]!)\n }\n return out\n}\n\nfunction b64decode(s: string): string {\n const clean = s.replace(/[^A-Za-z0-9+/]/g, '')\n let out = ''\n for (let i = 0; i < clean.length; i += 4) {\n const c = [0, 1, 2, 3].map((k) => (i + k < clean.length ? B64.indexOf(clean[i + k]!) : -1))\n if (c[0]! < 0 || c[1]! < 0) throw new Error('bad base64')\n const n = (c[0]! << 18) | (c[1]! << 12) | ((c[2]! < 0 ? 0 : c[2]!) << 6) | (c[3]! < 0 ? 0 : c[3]!)\n out += String.fromCharCode((n >> 16) & 0xff)\n if (c[2]! >= 0) out += String.fromCharCode((n >> 8) & 0xff)\n if (c[3]! >= 0) out += String.fromCharCode(n & 0xff)\n }\n return out\n}\n\nexport function encodeCursor(c: NearHistoryCursor): string {\n return b64encode(JSON.stringify(c))\n}\n\nexport function decodeCursor(s: string): NearHistoryCursor {\n let parsed: unknown\n try {\n parsed = JSON.parse(b64decode(s))\n } catch {\n throw new Error('@anywalletkit/wallet-near: malformed history cursor')\n }\n const c = parsed as Partial<NearHistoryCursor> | null\n const ok = (v: unknown) => v === null || typeof v === 'string'\n if (!c || c.v !== 1 || !ok(c.tx) || !ok(c.ft)) throw new Error('@anywalletkit/wallet-near: malformed history cursor')\n return { v: 1, tx: c.tx as string | null, ft: c.ft as string | null }\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nclass TokenBucket {\n private tokens: number\n private last = Date.now()\n private chain: Promise<void> = Promise.resolve()\n constructor(private readonly rate: number, private readonly burst = Math.max(2, Math.ceil(rate))) {\n this.tokens = burst\n }\n acquire(): Promise<void> {\n const next = this.chain.then(() => this.take())\n this.chain = next.catch(() => undefined)\n return next\n }\n private refill(): void {\n const now = Date.now()\n this.tokens = Math.min(this.burst, this.tokens + ((now - this.last) / 1000) * this.rate)\n this.last = now\n }\n private async take(): Promise<void> {\n this.refill()\n if (this.tokens >= 1) {\n this.tokens -= 1\n return\n }\n await new Promise((r) => setTimeout(r, Math.ceil(((1 - this.tokens) / this.rate) * 1000)))\n this.refill()\n this.tokens = Math.max(0, this.tokens - 1)\n }\n}\n\nfunction timeoutSignal(ms: number): AbortSignal | undefined {\n const ctor = (globalThis as { AbortSignal?: { timeout?: (ms: number) => AbortSignal } }).AbortSignal\n return typeof ctor?.timeout === 'function' ? ctor.timeout(ms) : undefined\n}\n\n/**\n * `JSON.parse` that keeps integer literals of 16+ digits exact by quoting them\n * first (outside strings only). Numbers with a fraction or exponent are left\n * to the double parser — nearblocks already rounded those.\n */\nexport function parseJsonPreservingBigInts(text: string): unknown {\n let out = ''\n let i = 0\n let inString = false\n while (i < text.length) {\n const ch = text[i]!\n if (inString) {\n out += ch\n if (ch === '\\\\') {\n out += text[i + 1] ?? ''\n i += 2\n continue\n }\n if (ch === '\"') inString = false\n i++\n continue\n }\n if (ch === '\"') {\n inString = true\n out += ch\n i++\n continue\n }\n if (ch === '-' || (ch >= '0' && ch <= '9')) {\n let j = i\n if (text[j] === '-') j++\n while (j < text.length && text[j]! >= '0' && text[j]! <= '9') j++\n const next = text[j]\n const isInteger = next !== '.' && next !== 'e' && next !== 'E'\n if (isInteger) {\n const tok = text.slice(i, j)\n out += tok.replace('-', '').length >= 16 ? `\"${tok}\"` : tok\n i = j\n continue\n }\n while (j < text.length && /[0-9.eE+-]/.test(text[j]!)) j++\n out += text.slice(i, j)\n i = j\n continue\n }\n out += ch\n i++\n }\n return JSON.parse(out)\n}\n\n/** Number / decimal string → bigint; `approx` is set when a double had to be used. */\nfunction big(v: unknown, approx: { value: boolean }): bigint | undefined {\n if (typeof v === 'bigint') return v\n if (typeof v === 'string' && /^-?\\d+$/.test(v)) return BigInt(v)\n if (typeof v === 'number' && Number.isFinite(v)) {\n if (!Number.isSafeInteger(v)) approx.value = true\n return BigInt(Math.trunc(v))\n }\n return undefined\n}\n\nconst nsToSeconds = (ts: unknown): number => {\n if (typeof ts === 'string' && /^\\d+$/.test(ts)) return bigintToNumber(BigInt(ts) / 1_000_000_000n)\n if (typeof ts === 'number') return Math.floor(ts / 1e9)\n return 0\n}\n\n// ── nearblocks shapes ────────────────────────────────────────────────────────\n\nexport interface NearblocksAction {\n action: string\n method?: string | null\n deposit?: number | string | null\n args?: string | null\n}\nexport interface NearblocksReceiptRow {\n id: string\n receipt_id?: string\n predecessor_account_id: string\n receiver_account_id: string\n receipt_kind?: string\n transaction_hash: string\n /** ns, decimal string (the transaction's block). */\n block_timestamp: string | number\n block?: { block_height?: number }\n actions?: NearblocksAction[] | null\n outcomes?: { status?: boolean | null }\n outcomes_agg?: { transaction_fee?: number | string | null }\n}\nexport interface NearblocksFtRow {\n event_index: string\n affected_account_id: string\n involved_account_id?: string | null\n /** Signed, decimal string (exact). */\n delta_amount: string | number\n cause?: string\n transaction_hash: string\n block_timestamp: string | number\n block?: { block_height?: number }\n outcomes?: { status?: boolean | null }\n ft?: { contract: string; symbol?: string | null; decimals?: number | null }\n ft_meta?: { contract: string; symbol?: string | null; decimals?: number | null }\n}\nexport interface NearblocksTxn {\n transaction_hash: string\n block_timestamp: string | number\n signer_account_id: string\n receiver_account_id: string\n block?: { block_height?: number }\n actions?: NearblocksAction[] | null\n outcomes?: { status?: boolean | null }\n outcomes_agg?: { transaction_fee?: number | string | null }\n receipts?: Array<{ fts?: Array<Pick<NearblocksFtRow, 'affected_account_id' | 'involved_account_id' | 'delta_amount' | 'cause' | 'ft_meta'>> }>\n}\n\nfunction ftTransfer(row: Pick<NearblocksFtRow, 'affected_account_id' | 'involved_account_id' | 'delta_amount' | 'cause' | 'ft' | 'ft_meta'>, approx: { value: boolean }): ChainTransfer | undefined {\n const meta = row.ft ?? row.ft_meta\n if (!meta?.contract) return undefined\n const delta = big(row.delta_amount, approx)\n if (delta === undefined || delta === 0n) return undefined\n const other = row.involved_account_id ?? meta.contract\n const t: ChainTransfer = { token: meta.contract, from: delta < 0n ? row.affected_account_id : other, to: delta < 0n ? other : row.affected_account_id, amount: delta < 0n ? -delta : delta, standard: 'nep141' }\n if (typeof meta.symbol === 'string') t.symbol = meta.symbol\n if (typeof meta.decimals === 'number') t.decimals = meta.decimals\n return t\n}\n\ninterface ActionFold {\n transfers: ChainTransfer[]\n programs: string[]\n call?: ChainCall\n}\n\n/** Fold nearblocks actions of one receipt (predecessor → receiver) into transfers / call; the first non-transfer action becomes the call. */\nfunction foldActions(actions: NearblocksAction[] | null | undefined, from: string, to: string, fold: ActionFold, approx: { value: boolean }): void {\n for (const a of actions ?? []) {\n const deposit = big(a.deposit, approx) ?? 0n\n if (a.action === 'TRANSFER') {\n if (deposit > 0n) fold.transfers.push({ token: null, from, to, amount: deposit })\n continue\n }\n if (a.action === 'DELEGATE_ACTION') continue\n const method = a.action === 'FUNCTION_CALL' ? (a.method ?? 'function_call') : a.action.toLowerCase()\n fold.programs.push(method)\n if (a.action === 'FUNCTION_CALL' && deposit > 0n && deposit !== ONE_YOCTO) fold.transfers.push({ token: null, from, to, amount: deposit })\n fold.call ??= { to, method, programs: fold.programs }\n }\n}\n\n/** One transaction from its nearblocks receipt rows + NEP-141 rows. */\nexport function mapNearblocksGroup(chain: string, address: string, receipts: NearblocksReceiptRow[], ft: NearblocksFtRow[]): NearChainTx {\n const approx = { value: false }\n const rows = [...receipts].sort((a, b) => (BigInt(a.id) < BigInt(b.id) ? -1 : BigInt(a.id) > BigInt(b.id) ? 1 : 0))\n const real = rows.filter((r) => r.predecessor_account_id !== 'system' && (r.receipt_kind ?? 'ACTION') === 'ACTION')\n const fold: ActionFold = { transfers: [], programs: [] }\n // The receipt addressed to someone else carries the call that matters; a receipt to ourselves (delegate wrapper, refund) is secondary.\n const ordered = [...real.filter((r) => r.receiver_account_id !== address), ...real.filter((r) => r.receiver_account_id === address)]\n for (const r of ordered) foldActions(r.actions, r.predecessor_account_id, r.receiver_account_id, fold, approx)\n for (const f of ft) {\n const t = ftTransfer(f, approx)\n if (t) fold.transfers.push(t)\n }\n const head = ordered[0] ?? rows[0] ?? ft[0]\n const hash = head?.transaction_hash ?? ''\n const from = ordered[0]?.predecessor_account_id ?? (ft.length ? (ftTransfer(ft[0]!, approx)?.from ?? address) : address)\n const involves = (t: ChainTransfer) => t.from === address || t.to === address\n const primary = fold.transfers.find((t) => t.token !== null && involves(t)) ?? fold.transfers.find(involves) ?? fold.transfers[0]\n const to = fold.call?.to ?? primary?.to ?? ordered[0]?.receiver_account_id ?? null\n let nativeValue = 0n\n for (const t of fold.transfers) if (t.token === null && t.from === from) nativeValue += t.amount\n const statuses = [...rows.map((r) => r.outcomes?.status), ...ft.map((r) => r.outcomes?.status)].filter((s): s is boolean => typeof s === 'boolean')\n const status: ChainTx['status'] = statuses.length === 0 ? 'confirmed' : statuses.every(Boolean) ? 'confirmed' : 'failed'\n const feeSrc = rows.find((r) => r.outcomes_agg?.transaction_fee != null)?.outcomes_agg?.transaction_fee\n const fee = big(feeSrc, approx)\n const heights = [...rows, ...ft].map((r) => r.block?.block_height).filter((h): h is number => typeof h === 'number')\n const raw: NearHistoryRaw = { receipts: rows, ft }\n if (approx.value) raw.approximate = true\n const out: NearChainTx = {\n chain, hash, time: nsToSeconds(head?.block_timestamp), status, address, from, to, nativeValue, transfers: fold.transfers, raw,\n }\n if (fee !== undefined) out.fee = fee\n if (fold.call) out.call = fold.call\n if (heights.length) out.block = BigInt(Math.min(...heights))\n return out\n}\n\n/** `/v1/txns/{hash}`: transaction-level actions, signer / receiver, approximate NEP-141 deltas from the receipts. */\nexport function mapNearblocksTxn(chain: string, address: string, txn: NearblocksTxn): NearChainTx {\n const approx = { value: false }\n const fold: ActionFold = { transfers: [], programs: [] }\n foldActions(txn.actions, txn.signer_account_id, txn.receiver_account_id, fold, approx)\n for (const r of txn.receipts ?? []) {\n for (const f of r.fts ?? []) {\n // nearblocks lists both sides of a movement; keep the one whose affected account is in the pair's \"from\" position.\n const delta = big(f.delta_amount, approx)\n if (delta === undefined || delta >= 0n) continue\n const t = ftTransfer(f, approx)\n if (t) fold.transfers.push(t)\n }\n }\n const from = txn.signer_account_id\n const involves = (t: ChainTransfer) => t.from === address || t.to === address\n const primary = fold.transfers.find((t) => t.token !== null && involves(t)) ?? fold.transfers.find(involves) ?? fold.transfers[0]\n let nativeValue = 0n\n for (const t of fold.transfers) if (t.token === null && t.from === from) nativeValue += t.amount\n const fee = big(txn.outcomes_agg?.transaction_fee, approx)\n const raw: NearHistoryRaw = { receipts: [], ft: [], txn }\n if (approx.value) raw.approximate = true\n const out: NearChainTx = {\n chain, hash: txn.transaction_hash, time: nsToSeconds(txn.block_timestamp), status: txn.outcomes?.status === false ? 'failed' : 'confirmed', address, from,\n to: fold.call?.to ?? primary?.to ?? txn.receiver_account_id, nativeValue, transfers: fold.transfers, raw,\n }\n if (fee !== undefined) out.fee = fee\n if (fold.call) out.call = fold.call\n if (typeof txn.block?.block_height === 'number') out.block = BigInt(txn.block.block_height)\n return out\n}\n\n// ── RPC refinement ───────────────────────────────────────────────────────────\n\ninterface RpcAction {\n Transfer?: { deposit: string }\n FunctionCall?: { method_name: string; args: string; deposit: string; gas?: number }\n Delegate?: { delegate_action: { sender_id: string; receiver_id: string; actions: RpcAction[] } }\n [other: string]: unknown\n}\nexport interface RpcTxStatus {\n status?: Record<string, unknown>\n transaction?: { signer_id: string; receiver_id: string; hash?: string; actions?: RpcAction[] }\n transaction_outcome?: { outcome?: { tokens_burnt?: string; executor_id?: string; logs?: string[] } }\n receipts_outcome?: Array<{ outcome?: { executor_id?: string; tokens_burnt?: string; logs?: string[]; status?: Record<string, unknown> } }>\n}\n\nconst utf8 = (bytes: Uint8Array): string => {\n let s = ''\n for (let i = 0; i < bytes.length; ) {\n const b0 = bytes[i++]!\n let cp: number\n if (b0 < 0x80) cp = b0\n else if (b0 < 0xe0) cp = ((b0 & 0x1f) << 6) | (bytes[i++]! & 0x3f)\n else if (b0 < 0xf0) cp = ((b0 & 0x0f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n else cp = ((b0 & 0x07) << 18) | ((bytes[i++]! & 0x3f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n s += String.fromCodePoint(cp)\n }\n return s\n}\n\n/** Rebuild transfers / call / fee / status exactly from an `EXPERIMENTAL_tx_status` result. */\nexport function mapRpcTxStatus(chain: string, address: string, r: RpcTxStatus, base?: NearChainTx): NearChainTx {\n const tx = r.transaction\n const transfers: ChainTransfer[] = []\n const programs: string[] = []\n let call: ChainCall | undefined\n const walk = (actions: RpcAction[] | undefined, from: string, to: string) => {\n for (const a of actions ?? []) {\n if (a.Transfer) {\n const d = BigInt(a.Transfer.deposit)\n if (d > 0n) transfers.push({ token: null, from, to, amount: d })\n } else if (a.FunctionCall) {\n const d = BigInt(a.FunctionCall.deposit || '0')\n programs.push(a.FunctionCall.method_name)\n if (d > 0n && d !== ONE_YOCTO) transfers.push({ token: null, from, to, amount: d })\n call ??= { to, method: a.FunctionCall.method_name, programs }\n } else if (a.Delegate) {\n walk(a.Delegate.delegate_action.actions, a.Delegate.delegate_action.sender_id, a.Delegate.delegate_action.receiver_id)\n } else {\n const name = Object.keys(a)[0]\n if (name) {\n const method = name.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n programs.push(method)\n call ??= { to, method, programs }\n }\n }\n }\n }\n if (tx) walk(tx.actions, tx.signer_id, tx.receiver_id)\n let fee = 0n\n const burnt = r.transaction_outcome?.outcome?.tokens_burnt\n if (burnt) fee += BigInt(burnt)\n let failed = false\n for (const ro of r.receipts_outcome ?? []) {\n const o = ro.outcome\n if (!o) continue\n if (o.tokens_burnt) fee += BigInt(o.tokens_burnt)\n if (o.status && 'Failure' in o.status) failed = true\n const token = o.executor_id\n for (const log of o.logs ?? []) {\n if (!token) continue\n const legacy = /^Transfer (\\d+) from (\\S+) to (\\S+)$/.exec(log)\n if (legacy) {\n transfers.push({ token, from: legacy[2]!, to: legacy[3]!, amount: BigInt(legacy[1]!), standard: 'nep141' })\n continue\n }\n if (!log.startsWith('EVENT_JSON:')) continue\n let ev: { standard?: string; event?: string; data?: Array<{ old_owner_id?: string; new_owner_id?: string; owner_id?: string; amount?: string }> }\n try {\n ev = JSON.parse(log.slice('EVENT_JSON:'.length)) as typeof ev\n } catch {\n continue\n }\n if (ev.standard !== 'nep141') continue\n for (const d of ev.data ?? []) {\n if (!d.amount || !/^\\d+$/.test(d.amount)) continue\n if (ev.event === 'ft_transfer' && d.old_owner_id && d.new_owner_id) transfers.push({ token, from: d.old_owner_id, to: d.new_owner_id, amount: BigInt(d.amount), standard: 'nep141' })\n else if (ev.event === 'ft_mint' && d.owner_id) transfers.push({ token, from: token, to: d.owner_id, amount: BigInt(d.amount), standard: 'nep141' })\n else if (ev.event === 'ft_burn' && d.owner_id) transfers.push({ token, from: d.owner_id, to: token, amount: BigInt(d.amount), standard: 'nep141' })\n }\n }\n }\n if (r.status && 'Failure' in r.status) failed = true\n // Keep symbol / decimals nearblocks knew for the same token.\n for (const t of transfers) {\n const known = base?.transfers.find((x) => x.token === t.token && (x.symbol !== undefined || x.decimals !== undefined))\n if (known?.symbol !== undefined) t.symbol = known.symbol\n if (known?.decimals !== undefined) t.decimals = known.decimals\n }\n const from = tx?.signer_id ?? base?.from ?? address\n const involves = (t: ChainTransfer) => t.from === address || t.to === address\n const primary = transfers.find((t) => t.token !== null && involves(t)) ?? transfers.find(involves) ?? transfers[0]\n let nativeValue = 0n\n for (const t of transfers) if (t.token === null && t.from === from) nativeValue += t.amount\n const raw: NearHistoryRaw = { ...(base?.raw ?? { receipts: [], ft: [] }), rpc: r }\n delete raw.approximate\n const out: NearChainTx = {\n chain, hash: tx?.hash ?? base?.hash ?? '', time: base?.time ?? 0, status: failed ? 'failed' : 'confirmed', address, from,\n to: call?.to ?? primary?.to ?? tx?.receiver_id ?? base?.to ?? null, nativeValue, transfers, fee, raw,\n }\n if (call) out.call = call\n if (base?.block !== undefined) out.block = base.block\n return out\n}\n\n/** Decode `FunctionCall.args` (base64 JSON) — exported for callers that want the arguments of a call. */\nexport function decodeFunctionCallArgs(args: string): unknown {\n try {\n return JSON.parse(utf8(fromBase64(args)))\n } catch {\n return undefined\n }\n}\n\n// ── Source ───────────────────────────────────────────────────────────────────\n\n/** Nearblocks link for a transaction. */\nexport function nearExplorerTxUrl(hash: string, network: 'mainnet' | 'testnet' = 'mainnet'): string {\n return `https://${network === 'testnet' ? 'testnet.' : ''}nearblocks.io/txns/${hash}`\n}\n\n/** A history source for NEAR accounts backed by nearblocks. */\nexport function createNearHistory(options: NearHistoryOptions = {}): NearHistorySource {\n const network = options.network ?? 'mainnet'\n const chain = CAIP2[network] ?? CAIP2.mainnet!\n const base = (options.nearblocksUrl ?? (network === 'testnet' ? 'https://api-testnet.nearblocks.io' : 'https://api.nearblocks.io')).replace(/\\/+$/, '')\n const fetchFn: HistoryFetch = options.fetch ?? ((globalThis as { fetch?: HistoryFetch }).fetch as HistoryFetch)\n if (typeof fetchFn !== 'function') throw new Error('@anywalletkit/wallet-near: no global fetch; pass `fetch` in the options')\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS\n const bucket = new TokenBucket(options.rateLimit ?? (options.apiKey ? 5 : 0.1))\n\n async function get(path: string): Promise<unknown> {\n await bucket.acquire()\n const url = `${base}${path}`\n let res: Awaited<ReturnType<HistoryFetch>>\n try {\n const signal = timeoutSignal(timeoutMs)\n res = await fetchFn(url, { headers: { accept: 'application/json', ...(options.apiKey ? { authorization: `Bearer ${options.apiKey}` } : {}) }, ...(signal ? { signal } : {}) })\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n throw new HistoryUnavailableError(chain, `${path}: ${msg}`, [`nearblocks: ${msg}`])\n }\n const text = await res.text()\n let body: unknown\n try {\n body = parseJsonPreservingBigInts(text)\n } catch {\n body = undefined\n }\n if (!res.ok) {\n const msg = (body as { message?: string } | undefined)?.message ?? `HTTP ${res.status}`\n throw new HistoryUnavailableError(chain, `${path}: ${msg}`, [`nearblocks: HTTP ${res.status} ${msg}`])\n }\n return body\n }\n\n async function rpcTxStatus(hash: string, signer: string): Promise<RpcTxStatus | undefined> {\n if (!options.rpcUrl) return undefined\n const signal = timeoutSignal(timeoutMs)\n const res = await fetchFn(options.rpcUrl, {\n method: 'POST', headers: { 'content-type': 'application/json', accept: 'application/json' },\n body: JSON.stringify({ jsonrpc: '2.0', id: '1', method: 'EXPERIMENTAL_tx_status', params: { tx_hash: hash, sender_account_id: signer, wait_until: 'NONE' } }),\n ...(signal ? { signal } : {}),\n })\n const json = JSON.parse(await res.text()) as { result?: RpcTxStatus; error?: unknown }\n if (!res.ok || json.error || !json.result) return undefined\n return json.result\n }\n\n return {\n chain,\n\n async listActivity(address: string, query: HistoryQuery = {}): Promise<NearHistoryPage> {\n const limit = Math.min(MAX_LIMIT, Math.max(1, Math.floor(query.limit ?? DEFAULT_LIMIT)))\n const cursor = query.cursor ? decodeCursor(query.cursor) : { v: 1 as const, tx: '', ft: '' }\n const acct = encodeURIComponent(address)\n // Receipt rows come ~2 per transaction (the call and its refund), so the receipt list is asked for twice the limit.\n const perPage = Math.min(MAX_LIMIT, limit * 2)\n const txRows: NearblocksReceiptRow[] = cursor.tx === null ? [] : (((await get(`/v1/account/${acct}/txns?per_page=${perPage}&order=desc${cursor.tx ? `&cursor=${encodeURIComponent(cursor.tx)}` : ''}`)) as { txns?: NearblocksReceiptRow[] } | undefined)?.txns ?? [])\n const ftRows: NearblocksFtRow[] = cursor.ft === null ? [] : (((await get(`/v1/account/${acct}/ft-txns?per_page=${limit}&order=desc${cursor.ft ? `&cursor=${encodeURIComponent(cursor.ft)}` : ''}`)) as { txns?: NearblocksFtRow[] } | undefined)?.txns ?? [])\n // Global order by the transaction's block time; emit the top `limit` hashes plus ties, so each list's consumed rows are a prefix.\n const key = (r: { block_timestamp: string | number }) => BigInt(typeof r.block_timestamp === 'string' ? r.block_timestamp : Math.trunc(r.block_timestamp))\n const all = [...txRows.map((r) => ({ k: key(r), h: r.transaction_hash })), ...ftRows.map((r) => ({ k: key(r), h: r.transaction_hash }))]\n all.sort((a, b) => (a.k > b.k ? -1 : a.k < b.k ? 1 : 0))\n const chosen = new Set<string>()\n let boundary: bigint | undefined\n for (const e of all) {\n if (chosen.has(e.h)) continue\n if (chosen.size >= limit && boundary !== undefined && e.k < boundary) break\n chosen.add(e.h)\n if (chosen.size === limit) boundary = e.k\n }\n // Consumed = the prefix of each list whose hashes were chosen; a list is exhausted once it came back short and fully consumed.\n const consume = <T extends { transaction_hash: string }>(rows: T[], asked: number, wasAt: string | null, pos: (r: T) => string): { used: T[]; next: string | null } => {\n if (wasAt === null) return { used: [], next: null }\n let n = 0\n while (n < rows.length && chosen.has(rows[n]!.transaction_hash)) n++\n const used = rows.slice(0, n)\n if (rows.length < asked && n === rows.length) return { used, next: null }\n return { used, next: n > 0 ? pos(used[n - 1]!) : wasAt }\n }\n const txC = consume(txRows, perPage, cursor.tx, (r) => r.id)\n const ftC = consume(ftRows, limit, cursor.ft, (r) => r.event_index)\n const nextTx = txC.next, nextFt = ftC.next\n const groups = new Map<string, { receipts: NearblocksReceiptRow[]; ft: NearblocksFtRow[] }>()\n for (const h of chosen) groups.set(h, { receipts: [], ft: [] })\n for (const r of txC.used) groups.get(r.transaction_hash)!.receipts.push(r)\n for (const r of ftC.used) groups.get(r.transaction_hash)!.ft.push(r)\n let items = [...groups.entries()].map(([, g]) => mapNearblocksGroup(chain, address, g.receipts, g.ft)).filter((t) => t.hash)\n items.sort((a, b) => b.time - a.time)\n let more = nextTx !== null || nextFt !== null\n if (query.since !== undefined) {\n const since = query.since\n if (items.some((t) => t.time < since)) more = false\n items = items.filter((t) => t.time >= since)\n }\n const page: NearHistoryPage = { items }\n if (more) page.cursor = encodeCursor({ v: 1, tx: nextTx, ft: nextFt })\n return page\n },\n\n async getTransaction(hash: string, address: string): Promise<NearChainTx | undefined> {\n const body = (await get(`/v1/txns/${encodeURIComponent(hash)}`)) as { txns?: NearblocksTxn[] } | undefined\n const txn = body?.txns?.[0]\n if (!txn) return undefined\n const base = mapNearblocksTxn(chain, address, txn)\n if (!options.rpcUrl) return base\n try {\n const r = await rpcTxStatus(hash, txn.signer_account_id)\n return r ? mapRpcTxStatus(chain, address, r, base) : base\n } catch {\n return base\n }\n },\n\n explorerTxUrl(hash: string): string {\n return nearExplorerTxUrl(hash, network)\n },\n }\n}\n"],"mappings":"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","names":["import_core","fetch","import_core","import_sha2","import_core","import_core","import_core","DEFAULT_TIMEOUT_MS","ONE_YOCTO","timeoutSignal","utf8","from","base"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/errors.ts","../src/address.ts","../src/borsh.ts","../src/rpc.ts","../src/describe.ts","../src/nep413.ts","../src/read-only-account.ts","../src/account.ts","../src/manager.ts","../src/history.ts"],"sourcesContent":["export * from './types.js'\nexport * from './errors.js'\nexport {\n isValidAccountId, isImplicitAccountId, implicitAccountId, publicKeyToString, parsePublicKey, ed25519Key, publicKeyOfImplicit, base58ToBytes, bytesToBase58,\n} from './address.js'\nexport {\n BorshWriter, BorshReader, ACTION_TAG, actionKey, argsBytes, encodeTransaction, decodeTransaction, encodeSignedTransaction, decodeSignedTransaction, decodeAnyTransaction,\n writeAction, readAction, writePublicKey, readPublicKey, writeSignature, readSignature,\n} from './borsh.js'\nexport { createClient, NearRpc, toBase64, fromBase64, failureOf, outcomeFailed } from './rpc.js'\nexport { describeTransaction, isDangerous, DANGEROUS_ACTIONS, type DescribeContext } from './describe.js'\nexport { nep413Bytes, nep413Hash, NEP413_PREFIX, type Nep413Payload, type Nep413Signed } from './nep413.js'\nexport { WalletAccountReadOnlyNear, receiptOf, parseSignature } from './read-only-account.js'\nexport { WalletAccountNear, type NearTransferResult } from './account.js'\nexport { WalletManagerNear, NEAR_BASE_PATH } from './manager.js'\nexport {\n createNearHistory, mapNearblocksGroup, mapNearblocksTxn, mapRpcTxStatus, parseJsonPreservingBigInts, decodeFunctionCallArgs, nearExplorerTxUrl, HistoryUnavailableError,\n encodeCursor as encodeHistoryCursor, decodeCursor as decodeHistoryCursor,\n type NearHistoryOptions, type NearHistorySource, type NearHistoryPage, type NearChainTx, type NearHistoryRaw, type NearHistoryCursor, type NearblocksReceiptRow, type NearblocksFtRow, type NearblocksTxn, type RpcTxStatus, type HistoryFetch,\n} from './history.js'\nexport { WalletManagerNear as default } from './manager.js'\nexport type { NearblocksAction, RpcAction } from './history.js'\nexport type { RawAccessKeyView, RawAccountView, RawFinalOutcome } from './rpc.js'\n","/** JSON-RPC transport: `method` + `params`, returns the `result` (throws on `error`). */\nexport type NearFetch = (method: string, params: unknown) => Promise<unknown>\n\n/** One RPC base url (e.g. \"https://free.rpc.fastnear.com\") or a ready transport. */\nexport type NearProvider = string | NearFetch\n\n/**\n * Options for a NEAR wallet manager or account: RPC endpoints, network, fee caps and the\n * pre-sign checks.\n */\nexport interface NearConfig {\n /** RPC url(s) / transport(s). A list fails over in order. Omit for an offline (sign-only) wallet. */\n provider?: NearProvider | NearProvider[]\n /** Extra attempts across the provider list after the first failure (default 3). */\n retries?: number\n /** Optional headers for every request (e.g. an API key). */\n headers?: Record<string, string>\n /** Per-request timeout for url providers, in ms (default 15 000): a node that never answers fails over (reads) or ends as \"maybe sent\" (`send_tx`). */\n timeoutMs?: number\n /** \"mainnet\" (default) | \"testnet\" | any CAIP-2 suffix. */\n network?: 'mainnet' | 'testnet' | string\n /** Max fee (yoctoNEAR) for `transfer`. */\n transferMaxFee?: bigint | number\n /** Max fee (yoctoNEAR) for `sendTransaction` / `signTransaction`. */\n transactionMaxFee?: bigint | number\n /** Run the balance / account / access-key preflight before signing (default true). */\n simulate?: boolean\n /**\n * Allow actions that change the account itself or deploy code (AddKey, DeleteKey,\n * DeleteAccount, DeployContract, Stake, CreateAccount, global-contract actions,\n * SignedDelegate). Default false: they are refused with `dangerous-action`.\n */\n allowDangerousActions?: boolean\n /**\n * Most yoctoNEAR a token `transfer` may attach as `storage_deposit` to register the\n * recipient (the amount comes from the token contract itself). Default 0.0125 NEAR,\n * ten times the usual NEP-145 minimum.\n */\n maxStorageDeposit?: bigint | number\n}\n\n// ── Actions ──────────────────────────────────────────────────────────────────\n\nexport interface NearTransferAction { transfer: { deposit: bigint } }\nexport interface NearFunctionCallAction {\n functionCall: {\n methodName: string\n /** Raw bytes, or a JSON-serialisable object / string (encoded as UTF-8 JSON). */\n args: Uint8Array | Record<string, unknown> | string\n /** Prepaid gas (default 30 Tgas). Max 300 Tgas. */\n gas?: bigint\n /** Attached deposit in yoctoNEAR (default 0). */\n deposit?: bigint\n }\n}\nexport interface NearCreateAccountAction { createAccount: Record<string, never> }\nexport interface NearDeployContractAction { deployContract: { code: Uint8Array } }\nexport interface NearStakeAction { stake: { stake: bigint; publicKey: NearPublicKey } }\n/** An access key's nonce and permission (full access or a function-call key). */\nexport interface NearAccessKey {\n nonce: bigint\n permission: { fullAccess: Record<string, never> } | { functionCall: { allowance?: bigint; receiverId: string; methodNames: string[] } }\n}\nexport interface NearAddKeyAction { addKey: { publicKey: NearPublicKey; accessKey: NearAccessKey } }\nexport interface NearDeleteKeyAction { deleteKey: { publicKey: NearPublicKey } }\nexport interface NearDeleteAccountAction { deleteAccount: { beneficiaryId: string } }\nexport interface NearDelegateAction {\n senderId: string\n receiverId: string\n actions: NearAction[]\n nonce: bigint\n maxBlockHeight: bigint\n publicKey: NearPublicKey\n}\nexport interface NearSignedDelegateAction { signedDelegate: { delegateAction: NearDelegateAction; signature: NearSignature } }\nexport interface NearDeployGlobalContractAction { deployGlobalContract: { code: Uint8Array; deployMode: 'codeHash' | 'accountId' } }\nexport interface NearUseGlobalContractAction { useGlobalContract: { codeHash: Uint8Array } | { accountId: string } }\n\n/** One action of a NEAR transaction. */\nexport type NearAction =\n | NearCreateAccountAction\n | NearDeployContractAction\n | NearFunctionCallAction\n | NearTransferAction\n | NearStakeAction\n | NearAddKeyAction\n | NearDeleteKeyAction\n | NearDeleteAccountAction\n | NearSignedDelegateAction\n | NearDeployGlobalContractAction\n | NearUseGlobalContractAction\n\n/** A public key as NEAR encodes it: curve tag + raw bytes. */\nexport interface NearPublicKey { keyType: 'ed25519' | 'secp256k1'; data: Uint8Array }\nexport interface NearSignature { keyType: 'ed25519' | 'secp256k1'; data: Uint8Array }\n\n/**\n * A transaction to sign. `signerId` / `publicKey` default to the account's; `nonce` /\n * `blockHash` are fetched from the network when omitted (the account `needsNetwork`).\n */\nexport interface NearTransaction {\n receiverId: string\n actions: NearAction[]\n signerId?: string\n publicKey?: NearPublicKey\n nonce?: bigint\n /** 32 bytes, or base58. */\n blockHash?: Uint8Array | string\n}\n\n/** Fully specified transaction as it is hashed and signed. */\nexport interface NearBuiltTransaction {\n signerId: string\n publicKey: NearPublicKey\n nonce: bigint\n receiverId: string\n blockHash: Uint8Array\n actions: NearAction[]\n}\n\nexport interface NearSignedTransaction { transaction: NearBuiltTransaction; signature: NearSignature }\n\n/** Shorthand for `transfer`: native NEAR (no `token`) or a NEP-141 token (`token` = contract account id). */\nexport interface NearTransferOptions {\n token?: string\n recipient: string\n amount: bigint | number | string\n /** NEP-141 `memo` (ignored for native transfers — NEAR transfers carry no memo). */\n memo?: string\n}\n\n// ── Fees / preflight ────────────────────────────────────────────────────────\n\n/** Gas a transaction may burn and its cost in yoctoNEAR. */\nexport interface NearFeeEstimate {\n /** Gas the transaction can burn at most (prepaid function-call gas counts in full). */\n gas: bigint\n /** yoctoNEAR per gas unit at quote time. */\n gasPrice: bigint\n /** Upper bound of the fee in yoctoNEAR (`gas * gasPrice`, plus the account-creation charge when `createsAccount`). */\n fee: bigint\n /** yoctoNEAR the actions attach (transfer deposits + function-call deposits). */\n deposit: bigint\n /** True when a native transfer will create an implicit account (extra gas included). */\n createsAccount: boolean\n}\n\n/** Fee of a transaction in yoctoNEAR, with the estimate behind it. */\nexport interface NearQuote {\n /** = `estimate.fee`. */\n fee: bigint\n estimate: NearFeeEstimate\n}\n\n/** Whether a transaction is expected to succeed, and why not. */\nexport interface NearSimulation {\n ok: boolean\n reason?: string\n}\n\n/** An account's balance, locked stake and storage. */\nexport interface NearAccountView {\n amount: bigint\n locked: bigint\n storageUsage: bigint\n /** `amount - locked - storageUsage * STORAGE_PRICE_PER_BYTE` (never below 0). */\n available: bigint\n}\n\n/** Outcome of a NEAR transaction. */\nexport interface NearReceipt {\n hash: string\n /** 1 success, 0 failed. */\n status: 0 | 1\n blockNumber?: bigint\n /** Decoded failure, when any receipt failed. */\n failure?: string\n /** Raw `tx` RPC payload. */\n raw: Record<string, unknown>\n}\n\n// ── Describe ─────────────────────────────────────────────────────────────────\n\n/** What a NEAR transaction does. */\nexport type NearTxKind =\n | 'near-transfer'\n | 'ft-transfer'\n | 'ft-storage-deposit'\n | 'function-call'\n | 'batch'\n | 'create-account'\n | 'deploy-contract'\n | 'stake'\n | 'add-key'\n | 'delete-key'\n | 'delete-account'\n | 'delegate'\n | 'global-contract'\n/** Problems a NEAR description is flagged with. */\nexport type NearTxWarningCode = 'dangerous-action' | 'full-access-key' | 'zero-amount' | 'implicit-new-account' | 'self-transfer' | 'high-gas' | 'unknown-method' | 'invalid-account'\n/** One flagged problem, with a sentence a wallet can show. */\nexport interface NearTxWarning { code: NearTxWarningCode; message: string }\n\n/** A NEAR transaction decoded for a confirmation screen. */\nexport interface NearTxDescription {\n kind: NearTxKind\n warnings: NearTxWarning[]\n /** Signer account id when known. */\n from?: string\n /** Receiver account id (native transfer) or NEP-141 `receiver_id` (ft-transfer). */\n to?: string\n /** yoctoNEAR (native) or token base units (ft-transfer). */\n amount?: bigint\n /** NEP-141 contract account id. */\n token?: string\n /** NEP-141 memo. */\n memo?: string\n /** Called contract (function-call / batch). */\n contract?: string\n /** Methods called, in order. */\n methods?: string[]\n /** Total yoctoNEAR attached across actions. */\n deposit: bigint\n /** Total prepaid gas across function calls. */\n gas: bigint\n actionCount: number\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\n/** CAIP-2 ids of NEAR mainnet and testnet. */\nexport const CAIP2: Record<string, string> = { mainnet: 'near:mainnet', testnet: 'near:testnet' }\n\n/** 1 NEAR = 10^24 yoctoNEAR. */\nexport const YOCTO = 10n ** 24n\n/** 1 Tgas. */\nexport const TGAS = 10n ** 12n\n/** Hard per-transaction prepaid gas limit. */\nexport const MAX_GAS = 300n * TGAS\n/** Protocol storage price: 10^19 yoctoNEAR per byte. */\nexport const STORAGE_PRICE_PER_BYTE = 10n ** 19n\n/** NEP-141 `ft_transfer` requires exactly 1 yoctoNEAR attached. */\nexport const ONE_YOCTO = 1n\n/** Default gas for `ft_transfer` / `storage_deposit`. */\nexport const FT_TRANSFER_GAS = 30n * TGAS\n/** Gas attached to a NEP-145 `storage_deposit` call. */\nexport const STORAGE_DEPOSIT_GAS = 10n * TGAS\n/** Minimum native transfer that can create an implicit account (covers its storage). */\nexport const IMPLICIT_ACCOUNT_MIN_DEPOSIT = 2n * 10n ** 21n // 0.002 NEAR\n","import { SignerError } from '@anywalletkit/core'\n\n/** Why a transaction was refused before signing. */\nexport type UnsafeTransactionCode =\n | 'signer-mismatch'\n | 'public-key-mismatch'\n | 'dangerous-action'\n | 'invalid-account'\n | 'no-actions'\n | 'gas-limit'\n | 'fee-limit'\n | 'missing-block-hash'\n | 'missing-nonce'\n | 'unknown-action'\n | 'insufficient-balance'\n | 'implicit-account-min-deposit'\n | 'no-access-key'\n | 'storage-deposit'\n\n/** A transaction failed a hard check and was not signed. */\nexport class UnsafeTransactionError extends Error {\n readonly code: UnsafeTransactionCode\n constructor(code: UnsafeTransactionCode, message: string) {\n super(message)\n this.name = 'UnsafeTransactionError'\n this.code = code\n }\n}\n\n/**\n * `sign()` refused a 32-byte message: NEAR signs a transaction (and a delegate action, and a NEP-413\n * message) as ed25519 over a 32-byte sha256, so a signature over 32 raw bytes may be a valid\n * transaction signature — an AddKey that hands the account over. Off-chain messages go through\n * `signNep413`; transactions through `signTransaction` / `sendTransaction`, where they are reviewed.\n */\nexport class MessageIsTransactionError extends SignerError {\n readonly code = 'message-is-transaction'\n constructor() {\n super('This message has the shape of a transaction (a 32-byte NEAR hash, or bytes naming this key as a Solana signer) and is not signed; use signNep413 for off-chain messages, or signTransaction so it can be reviewed.')\n this.name = 'MessageIsTransactionError'\n }\n}\n\n/** The preflight (balances, account, access key, token registration) predicted failure; nothing was signed. */\nexport class SimulationError extends Error {\n readonly reason: string\n constructor(reason: string) {\n super(`Transaction preflight failed: ${reason}`)\n this.name = 'SimulationError'\n this.reason = reason\n }\n}\n\n/** The RPC answered with an `error` object. */\nexport class NearRpcError extends Error {\n readonly method: string\n readonly errorName: string | undefined\n override readonly cause: unknown\n constructor(method: string, error: { name?: string; message?: string; cause?: { name?: string; info?: unknown }; data?: unknown; code?: number }) {\n const causeName = error.cause?.name\n super(`${method}: ${error.name ?? 'error'}${causeName ? ` / ${causeName}` : ''}${error.message ? ` — ${error.message}` : ''}`)\n this.name = 'NearRpcError'\n this.method = method\n this.errorName = causeName ?? error.name\n this.cause = error\n }\n}\n\n/**\n * The signed transaction was handed to the RPC but no definitive answer came back (no response, or\n * a node timeout): it MAY be on chain. Do not sign it again (a new nonce would pay twice) — watch\n * `hash`, computed locally.\n */\nexport class BroadcastUnknownError extends Error {\n /** Always true: the transaction may be on its way. */\n readonly maybeSent = true\n /** Base58 hash of the signed transaction. */\n readonly hash: string\n constructor(hash: string, cause: unknown) {\n super(`Broadcast outcome unknown for ${hash}: ${cause instanceof Error ? cause.message.slice(0, 200) : String(cause).slice(0, 200)}`, { cause })\n this.name = 'BroadcastUnknownError'\n this.hash = hash\n }\n}\n","import { base58 } from '@scure/base'\nimport { bytesToHex, hexToBytes } from '@noble/hashes/utils.js'\nimport type { NearPublicKey } from './types.js'\n\n/** NEAR account id grammar (nearcore `AccountId`): 2–64 chars, lowercase alnum, `_`/`-` inside parts, `.` between parts. */\nconst ACCOUNT_ID_RE = /^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$/\n/** True for a valid NEAR account id: 2–64 characters of the allowed alphabet, implicit or named. */\nexport function isValidAccountId(id: string): boolean {\n return id.length >= 2 && id.length <= 64 && ACCOUNT_ID_RE.test(id)\n}\n\n/** 64 lowercase hex chars = an implicit account (the account id IS the ed25519 public key). */\nexport function isImplicitAccountId(id: string): boolean {\n return id.length === 64 && /^[0-9a-f]{64}$/.test(id)\n}\n\n/** The implicit account id of an ed25519 public key. */\nexport function implicitAccountId(publicKey: Uint8Array): string {\n if (publicKey.length !== 32) throw new RangeError('ed25519 public key must be 32 bytes')\n return bytesToHex(publicKey)\n}\n\n/** \"ed25519:<base58>\" as NEAR tooling prints keys. */\nexport function publicKeyToString(k: NearPublicKey): string {\n return `${k.keyType}:${base58.encode(k.data)}`\n}\n\n/** Parse `ed25519:<base58>` (or bare base58) into a public key. */\nexport function parsePublicKey(s: string): NearPublicKey {\n const [type, data] = s.includes(':') ? s.split(':', 2) : ['ed25519', s]\n if (type !== 'ed25519' && type !== 'secp256k1') throw new RangeError(`unknown key type ${type}`)\n const bytes = base58.decode(data!)\n const want = type === 'ed25519' ? 32 : 64\n if (bytes.length !== want) throw new RangeError(`${type} public key must be ${want} bytes`)\n return { keyType: type, data: bytes }\n}\n\n/** A NEAR public key from 32 ed25519 bytes. */\nexport function ed25519Key(publicKey: Uint8Array): NearPublicKey {\n if (publicKey.length !== 32) throw new RangeError('ed25519 public key must be 32 bytes')\n return { keyType: 'ed25519', data: publicKey }\n}\n\n/** The ed25519 public key behind an implicit account id. */\nexport function publicKeyOfImplicit(accountId: string): Uint8Array {\n if (!isImplicitAccountId(accountId)) throw new RangeError(`${accountId} is not an implicit account id`)\n return hexToBytes(accountId)\n}\n\n/** Decode base58, optionally checking the length. */\nexport function base58ToBytes(s: string, length?: number): Uint8Array {\n const b = base58.decode(s)\n if (length !== undefined && b.length !== length) throw new RangeError(`expected ${length} bytes, got ${b.length}`)\n return b\n}\n/** Encode bytes as base58. */\nexport const bytesToBase58 = (b: Uint8Array): string => base58.encode(b)\n","/**\n * Borsh (https://borsh.io) for NEAR transactions — the exact layout nearcore and\n * @near-js/transactions use, written by hand so the package has no borsh dependency:\n * little-endian integers, u32-length-prefixed strings / vectors, u8 enum tags.\n */\nimport type {\n NearAccessKey, NearAction, NearBuiltTransaction, NearDelegateAction, NearPublicKey, NearSignature, NearSignedTransaction,\n} from './types.js'\n\nconst utf8 = new TextEncoder()\nconst utf8d = new TextDecoder()\n\n/** @internal Minimal borsh encoder for NEAR transactions. */\nexport class BorshWriter {\n private _buf = new Uint8Array(256)\n private _len = 0\n\n private ensure(n: number) {\n if (this._len + n <= this._buf.length) return\n const next = new Uint8Array(Math.max(this._buf.length * 2, this._len + n))\n next.set(this._buf.subarray(0, this._len))\n this._buf = next\n }\n u8(v: number) { this.ensure(1); this._buf[this._len++] = v & 0xff; return this }\n u32(v: number) {\n this.ensure(4)\n for (let i = 0; i < 4; i++) this._buf[this._len++] = (v >>> (8 * i)) & 0xff\n return this\n }\n uint(v: bigint, bytes: number) {\n if (v < 0n || v >= 1n << BigInt(8 * bytes)) throw new RangeError(`u${8 * bytes} out of range: ${v}`)\n this.ensure(bytes)\n for (let i = 0; i < bytes; i++) this._buf[this._len++] = Number((v >> BigInt(8 * i)) & 0xffn)\n return this\n }\n u64(v: bigint) { return this.uint(v, 8) }\n u128(v: bigint) { return this.uint(v, 16) }\n bytes(b: Uint8Array) { this.ensure(b.length); this._buf.set(b, this._len); this._len += b.length; return this }\n /** Vec<u8> / String: u32 length + bytes. */\n vecU8(b: Uint8Array) { return this.u32(b.length).bytes(b) }\n string(s: string) { return this.vecU8(utf8.encode(s)) }\n option<T>(v: T | undefined, write: (v: T) => void) {\n if (v === undefined) return this.u8(0)\n this.u8(1)\n write(v)\n return this\n }\n toBytes(): Uint8Array { return this._buf.slice(0, this._len) }\n}\n\n/** @internal Minimal borsh decoder for NEAR transactions. */\nexport class BorshReader {\n private _pos = 0\n constructor(private readonly _buf: Uint8Array) {}\n get remaining(): number { return this._buf.length - this._pos }\n private need(n: number) { if (this._pos + n > this._buf.length) throw new RangeError('borsh: unexpected end of input') }\n u8(): number { this.need(1); return this._buf[this._pos++]! }\n u32(): number {\n this.need(4)\n let v = 0\n for (let i = 0; i < 4; i++) v |= this._buf[this._pos++]! << (8 * i)\n return v >>> 0\n }\n uint(bytes: number): bigint {\n this.need(bytes)\n let v = 0n\n for (let i = 0; i < bytes; i++) v |= BigInt(this._buf[this._pos++]!) << BigInt(8 * i)\n return v\n }\n u64(): bigint { return this.uint(8) }\n u128(): bigint { return this.uint(16) }\n bytes(n: number): Uint8Array { this.need(n); const out = this._buf.slice(this._pos, this._pos + n); this._pos += n; return out }\n vecU8(): Uint8Array { return this.bytes(this.u32()) }\n string(): string { return utf8d.decode(this.vecU8()) }\n option<T>(read: () => T): T | undefined { return this.u8() === 0 ? undefined : read() }\n done(): void { if (this.remaining !== 0) throw new RangeError(`borsh: ${this.remaining} trailing bytes`) }\n}\n\n// ── Keys / signatures ────────────────────────────────────────────────────────\n\nconst KEY_TYPE = { ed25519: 0, secp256k1: 1 } as const\nconst KEY_LEN = { ed25519: 32, secp256k1: 64 } as const\nconst SIG_LEN = { ed25519: 64, secp256k1: 65 } as const\n\nexport function writePublicKey(w: BorshWriter, k: NearPublicKey): void {\n if (k.data.length !== KEY_LEN[k.keyType]) throw new RangeError(`${k.keyType} public key must be ${KEY_LEN[k.keyType]} bytes`)\n w.u8(KEY_TYPE[k.keyType]).bytes(k.data)\n}\nexport function readPublicKey(r: BorshReader): NearPublicKey {\n const t = r.u8()\n const keyType = t === 0 ? 'ed25519' : t === 1 ? 'secp256k1' : undefined\n if (!keyType) throw new RangeError(`borsh: unknown key type ${t}`)\n return { keyType, data: r.bytes(KEY_LEN[keyType]) }\n}\nexport function writeSignature(w: BorshWriter, s: NearSignature): void {\n if (s.data.length !== SIG_LEN[s.keyType]) throw new RangeError(`${s.keyType} signature must be ${SIG_LEN[s.keyType]} bytes`)\n w.u8(KEY_TYPE[s.keyType]).bytes(s.data)\n}\nexport function readSignature(r: BorshReader): NearSignature {\n const t = r.u8()\n const keyType = t === 0 ? 'ed25519' : t === 1 ? 'secp256k1' : undefined\n if (!keyType) throw new RangeError(`borsh: unknown signature type ${t}`)\n return { keyType, data: r.bytes(SIG_LEN[keyType]) }\n}\n\n// ── Actions ──────────────────────────────────────────────────────────────────\n\n/** Enum order from nearcore `Action` (and @near-js/transactions SCHEMA.Action). */\nexport const ACTION_TAG = {\n createAccount: 0, deployContract: 1, functionCall: 2, transfer: 3, stake: 4, addKey: 5, deleteKey: 6, deleteAccount: 7,\n signedDelegate: 8, deployGlobalContract: 9, useGlobalContract: 10,\n} as const\nexport type NearActionKey = keyof typeof ACTION_TAG\n\nexport function actionKey(a: NearAction): NearActionKey {\n const k = Object.keys(a)[0] as NearActionKey | undefined\n if (!k || !(k in ACTION_TAG)) throw new RangeError(`unknown action ${k}`)\n return k\n}\n\n/** Function-call args as bytes: raw bytes pass through; objects / strings become UTF-8 JSON / UTF-8. */\nexport function argsBytes(args: Uint8Array | Record<string, unknown> | string): Uint8Array {\n if (args instanceof Uint8Array) return args\n if (typeof args === 'string') return utf8.encode(args)\n return utf8.encode(JSON.stringify(args))\n}\n\nfunction writeAccessKey(w: BorshWriter, k: NearAccessKey): void {\n w.u64(k.nonce)\n if ('functionCall' in k.permission) {\n const p = k.permission.functionCall\n w.u8(0)\n w.option(p.allowance, (a) => w.u128(a))\n w.string(p.receiverId)\n w.u32(p.methodNames.length)\n for (const m of p.methodNames) w.string(m)\n } else {\n w.u8(1)\n }\n}\nfunction readAccessKey(r: BorshReader): NearAccessKey {\n const nonce = r.u64()\n const t = r.u8()\n if (t === 0) {\n const allowance = r.option(() => r.u128())\n const receiverId = r.string()\n const n = r.u32()\n const methodNames: string[] = []\n for (let i = 0; i < n; i++) methodNames.push(r.string())\n return { nonce, permission: { functionCall: { ...(allowance !== undefined ? { allowance } : {}), receiverId, methodNames } } }\n }\n if (t === 1) return { nonce, permission: { fullAccess: {} } }\n throw new RangeError(`borsh: unknown access-key permission ${t}`)\n}\n\nfunction writeDelegateAction(w: BorshWriter, d: NearDelegateAction): void {\n w.string(d.senderId).string(d.receiverId)\n w.u32(d.actions.length)\n for (const a of d.actions) writeAction(w, a)\n w.u64(d.nonce).u64(d.maxBlockHeight)\n writePublicKey(w, d.publicKey)\n}\nfunction readDelegateAction(r: BorshReader): NearDelegateAction {\n const senderId = r.string()\n const receiverId = r.string()\n const n = r.u32()\n const actions: NearAction[] = []\n for (let i = 0; i < n; i++) actions.push(readAction(r))\n const nonce = r.u64()\n const maxBlockHeight = r.u64()\n return { senderId, receiverId, actions, nonce, maxBlockHeight, publicKey: readPublicKey(r) }\n}\n\nexport function writeAction(w: BorshWriter, a: NearAction): void {\n const key = actionKey(a)\n w.u8(ACTION_TAG[key])\n switch (key) {\n case 'createAccount': return\n case 'deployContract': w.vecU8((a as { deployContract: { code: Uint8Array } }).deployContract.code); return\n case 'functionCall': {\n const f = (a as { functionCall: { methodName: string; args: Uint8Array | Record<string, unknown> | string; gas?: bigint; deposit?: bigint } }).functionCall\n w.string(f.methodName).vecU8(argsBytes(f.args)).u64(f.gas ?? 30n * 10n ** 12n).u128(f.deposit ?? 0n)\n return\n }\n case 'transfer': w.u128((a as { transfer: { deposit: bigint } }).transfer.deposit); return\n case 'stake': {\n const s = (a as { stake: { stake: bigint; publicKey: NearPublicKey } }).stake\n w.u128(s.stake)\n writePublicKey(w, s.publicKey)\n return\n }\n case 'addKey': {\n const k = (a as { addKey: { publicKey: NearPublicKey; accessKey: NearAccessKey } }).addKey\n writePublicKey(w, k.publicKey)\n writeAccessKey(w, k.accessKey)\n return\n }\n case 'deleteKey': writePublicKey(w, (a as { deleteKey: { publicKey: NearPublicKey } }).deleteKey.publicKey); return\n case 'deleteAccount': w.string((a as { deleteAccount: { beneficiaryId: string } }).deleteAccount.beneficiaryId); return\n case 'signedDelegate': {\n const d = (a as { signedDelegate: { delegateAction: NearDelegateAction; signature: NearSignature } }).signedDelegate\n writeDelegateAction(w, d.delegateAction)\n writeSignature(w, d.signature)\n return\n }\n case 'deployGlobalContract': {\n const g = (a as { deployGlobalContract: { code: Uint8Array; deployMode: 'codeHash' | 'accountId' } }).deployGlobalContract\n w.vecU8(g.code).u8(g.deployMode === 'codeHash' ? 0 : 1)\n return\n }\n case 'useGlobalContract': {\n const u = (a as { useGlobalContract: { codeHash: Uint8Array } | { accountId: string } }).useGlobalContract\n if ('codeHash' in u) { w.u8(0).bytes(u.codeHash) } else { w.u8(1).string(u.accountId) }\n return\n }\n }\n}\n\nexport function readAction(r: BorshReader): NearAction {\n const tag = r.u8()\n switch (tag) {\n case 0: return { createAccount: {} }\n case 1: return { deployContract: { code: r.vecU8() } }\n case 2: {\n const methodName = r.string()\n const args = r.vecU8()\n const gas = r.u64()\n const deposit = r.u128()\n return { functionCall: { methodName, args, gas, deposit } }\n }\n case 3: return { transfer: { deposit: r.u128() } }\n case 4: { const stake = r.u128(); return { stake: { stake, publicKey: readPublicKey(r) } } }\n case 5: { const publicKey = readPublicKey(r); return { addKey: { publicKey, accessKey: readAccessKey(r) } } }\n case 6: return { deleteKey: { publicKey: readPublicKey(r) } }\n case 7: return { deleteAccount: { beneficiaryId: r.string() } }\n case 8: { const delegateAction = readDelegateAction(r); return { signedDelegate: { delegateAction, signature: readSignature(r) } } }\n case 9: { const code = r.vecU8(); const m = r.u8(); return { deployGlobalContract: { code, deployMode: m === 0 ? 'codeHash' : 'accountId' } } }\n case 10: { const m = r.u8(); return { useGlobalContract: m === 0 ? { codeHash: r.bytes(32) } : { accountId: r.string() } } }\n default: throw new RangeError(`borsh: unknown action tag ${tag}`)\n }\n}\n\n// ── Transactions ─────────────────────────────────────────────────────────────\n\n/** Borsh bytes of an unsigned transaction. */\nexport function encodeTransaction(tx: NearBuiltTransaction): Uint8Array {\n if (tx.blockHash.length !== 32) throw new RangeError('blockHash must be 32 bytes')\n const w = new BorshWriter()\n w.string(tx.signerId)\n writePublicKey(w, tx.publicKey)\n w.u64(tx.nonce).string(tx.receiverId).bytes(tx.blockHash)\n w.u32(tx.actions.length)\n for (const a of tx.actions) writeAction(w, a)\n return w.toBytes()\n}\n\nexport function readTransaction(r: BorshReader): NearBuiltTransaction {\n const signerId = r.string()\n const publicKey = readPublicKey(r)\n const nonce = r.u64()\n const receiverId = r.string()\n const blockHash = r.bytes(32)\n const n = r.u32()\n const actions: NearAction[] = []\n for (let i = 0; i < n; i++) actions.push(readAction(r))\n return { signerId, publicKey, nonce, receiverId, blockHash, actions }\n}\n\n/** Decode an unsigned transaction from borsh bytes. */\nexport function decodeTransaction(bytes: Uint8Array): NearBuiltTransaction {\n const r = new BorshReader(bytes)\n const tx = readTransaction(r)\n r.done()\n return tx\n}\n\n/** Borsh bytes of a signed transaction, ready to broadcast as base64. */\nexport function encodeSignedTransaction(s: NearSignedTransaction): Uint8Array {\n const w = new BorshWriter()\n w.bytes(encodeTransaction(s.transaction))\n writeSignature(w, s.signature)\n return w.toBytes()\n}\n\n/** Decode a signed transaction from borsh bytes. */\nexport function decodeSignedTransaction(bytes: Uint8Array): NearSignedTransaction {\n const r = new BorshReader(bytes)\n const transaction = readTransaction(r)\n const signature = readSignature(r)\n r.done()\n return { transaction, signature }\n}\n\n/** Unsigned or signed borsh bytes → the transaction (and signature when present). */\nexport function decodeAnyTransaction(bytes: Uint8Array): { transaction: NearBuiltTransaction; signature?: NearSignature } {\n const r = new BorshReader(bytes)\n const transaction = readTransaction(r)\n if (r.remaining === 0) return { transaction }\n const signature = readSignature(r)\n r.done()\n return { transaction, signature }\n}\n","import { NetworkError } from '@anywalletkit/core'\nimport { NearRpcError } from './errors.js'\nimport type { NearConfig, NearFetch } from './types.js'\n\n/** Base64 helpers that work in Node, browsers and Hermes (no Buffer). */\nexport function toBase64(bytes: Uint8Array): string {\n if (typeof btoa === 'function') {\n let s = ''\n for (let i = 0; i < bytes.length; i += 0x8000) s += String.fromCharCode.apply(null, Array.from(bytes.subarray(i, i + 0x8000)))\n return btoa(s)\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (globalThis as any).Buffer.from(bytes).toString('base64')\n}\nexport function fromBase64(s: string): Uint8Array {\n if (typeof atob === 'function') {\n const bin = atob(s)\n const out = new Uint8Array(bin.length)\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i)\n return out\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Uint8Array((globalThis as any).Buffer.from(s, 'base64'))\n}\n\n/** Default per-request timeout for url providers. */\nexport const DEFAULT_TIMEOUT_MS = 15_000\n\n/** A signal that aborts after `ms`: `AbortSignal.timeout` where the runtime has it, else a timer (Hermes without runtime-hermes). */\nfunction timeoutSignal(ms: number): AbortSignal | undefined {\n if (typeof AbortSignal !== 'undefined' && typeof AbortSignal.timeout === 'function') return AbortSignal.timeout(ms)\n if (typeof AbortController === 'undefined') return undefined\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(new Error(`timed out after ${ms} ms`)), ms) as unknown as { unref?: () => void }\n timer.unref?.()\n return controller.signal\n}\n\nfunction httpTransport(url: string, headers: Record<string, string> | undefined, timeoutMs: number): NearFetch {\n let id = 0\n return async (method, params) => {\n const signal = timeoutSignal(timeoutMs)\n let res: Response\n try {\n res = await fetch(url, {\n method: 'POST',\n headers: { 'content-type': 'application/json', accept: 'application/json', ...headers },\n body: JSON.stringify({ jsonrpc: '2.0', id: String(++id), method, params }),\n ...(signal ? { signal } : {}),\n })\n } catch (e) {\n throw new NetworkError(`${method}: ${signal?.aborted ? `no answer within ${timeoutMs} ms` : 'request failed'}`, { provider: url, cause: e })\n }\n if (!res.ok) throw new NetworkError(`${method}: HTTP ${res.status}`, { provider: url })\n const json = (await res.json()) as { result?: unknown; error?: { name?: string; message?: string; cause?: { name?: string }; data?: unknown; code?: number } }\n if (json.error) throw new NearRpcError(method, json.error)\n return json.result\n }\n}\n\n/** An `error` from the node is a definitive answer (unknown account, invalid tx…) — never failed over. */\nexport const isDefinitive = (e: unknown) => e instanceof NearRpcError && !/TIMEOUT|INTERNAL|UNAVAILABLE|NO_SYNCED/i.test(e.errorName ?? '')\n\n/** Methods that hand a signed transaction to the network: a lost answer is ambiguous, so they are never re-sent elsewhere. */\nconst BROADCAST_METHODS: ReadonlySet<string> = new Set(['send_tx', 'broadcast_tx_commit', 'broadcast_tx_async'])\n\n/**\n * One transport, or a failover transport over the list. Reads fail over on anything but a\n * definitive node answer; a broadcast is sent once — the account turns an unanswered one into\n * `BroadcastUnknownError`.\n */\nexport function createClient(config: NearConfig): NearFetch | undefined {\n if (config.provider === undefined) return undefined\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS\n const list = (Array.isArray(config.provider) ? config.provider : [config.provider]).map((p) =>\n typeof p === 'string' ? httpTransport(p, config.headers, timeoutMs) : p,\n )\n if (list.length === 0) throw new Error(\"The 'provider' option cannot be set to an empty list.\")\n if (list.length === 1) return list[0]!\n const attempts = list.length + (config.retries ?? 3)\n return async (method, params) => {\n if (BROADCAST_METHODS.has(method)) return list[0]!(method, params)\n let lastError: unknown\n for (let i = 0; i < attempts; i++) {\n try { return await list[i % list.length]!(method, params) } catch (e) {\n if (isDefinitive(e)) throw e\n lastError = e\n }\n }\n throw new NetworkError(`All NEAR providers failed for ${method}`, { cause: lastError })\n }\n}\n\n// ── Typed helpers over `query` ───────────────────────────────────────────────\n\nexport interface RawAccountView { amount: string; locked: string; storage_usage: number; code_hash?: string; block_height?: number; block_hash?: string }\nexport interface RawAccessKeyView { nonce: number; permission: 'FullAccess' | { FunctionCall: { allowance: string | null; receiver_id: string; method_names: string[] } }; block_hash?: string; block_height?: number }\nexport interface RawCallResult { result: number[]; logs?: string[]; block_hash?: string; block_height?: number; error?: string }\nexport interface RawFinalOutcome {\n status?: Record<string, unknown>\n final_execution_status?: string\n transaction?: { hash?: string; signer_id?: string }\n transaction_outcome?: { id?: string; block_hash?: string; outcome?: { status?: Record<string, unknown>; gas_burnt?: number; tokens_burnt?: string } }\n receipts_outcome?: Array<{ id?: string; block_hash?: string; outcome?: { status?: Record<string, unknown>; gas_burnt?: number; tokens_burnt?: string } }>\n}\n\nconst UNKNOWN = /UNKNOWN_ACCOUNT|UNKNOWN_ACCESS_KEY|UNKNOWN_TRANSACTION|does not exist/i\n\n/** The NEAR JSON-RPC calls a wallet uses, with parsed results. */\nexport class NearRpc {\n constructor(readonly fetch: NearFetch) {}\n\n /** `undefined` when the account does not exist. */\n async viewAccount(accountId: string): Promise<RawAccountView | undefined> {\n try {\n return (await this.fetch('query', { request_type: 'view_account', finality: 'final', account_id: accountId })) as RawAccountView\n } catch (e) {\n if (e instanceof NearRpcError && UNKNOWN.test(e.errorName ?? e.message)) return undefined\n throw e\n }\n }\n\n /** `undefined` when the key is not on the account. */\n async viewAccessKey(accountId: string, publicKey: string): Promise<RawAccessKeyView | undefined> {\n try {\n return (await this.fetch('query', { request_type: 'view_access_key', finality: 'final', account_id: accountId, public_key: publicKey })) as RawAccessKeyView\n } catch (e) {\n if (e instanceof NearRpcError && UNKNOWN.test(e.errorName ?? e.message)) return undefined\n throw e\n }\n }\n\n /** View call; the JSON-decoded return value (`null` for an empty result). */\n async callFunction<T = unknown>(contract: string, method: string, args: Record<string, unknown> = {}): Promise<T> {\n const r = (await this.fetch('query', {\n request_type: 'call_function', finality: 'final', account_id: contract, method_name: method, args_base64: toBase64(new TextEncoder().encode(JSON.stringify(args))),\n })) as RawCallResult\n if (r.error) throw new NearRpcError('query', { name: 'HANDLER_ERROR', message: r.error, cause: { name: 'CONTRACT_EXECUTION_ERROR' } })\n const text = new TextDecoder().decode(Uint8Array.from(r.result ?? []))\n if (!text.length) return null as T\n return JSON.parse(text) as T\n }\n\n async latestBlockHash(): Promise<string> {\n const b = (await this.fetch('block', { finality: 'final' })) as { header?: { hash?: string } }\n if (!b.header?.hash) throw new NetworkError('block: no header hash in the response')\n return b.header.hash\n }\n\n async gasPrice(): Promise<bigint> {\n const r = (await this.fetch('gas_price', [null])) as { gas_price?: string }\n if (!r.gas_price) throw new NetworkError('gas_price: no price in the response')\n return BigInt(r.gas_price)\n }\n\n async sendTx(signedTxBase64: string, waitUntil: 'NONE' | 'INCLUDED' | 'EXECUTED_OPTIMISTIC' | 'INCLUDED_FINAL' | 'EXECUTED' | 'FINAL' = 'EXECUTED_OPTIMISTIC'): Promise<RawFinalOutcome> {\n return (await this.fetch('send_tx', { signed_tx_base64: signedTxBase64, wait_until: waitUntil })) as RawFinalOutcome\n }\n\n /** `undefined` when the node does not know the transaction. */\n async txStatus(hash: string, senderId: string): Promise<RawFinalOutcome | undefined> {\n try {\n return (await this.fetch('tx', { tx_hash: hash, sender_account_id: senderId, wait_until: 'NONE' })) as RawFinalOutcome\n } catch (e) {\n if (e instanceof NearRpcError && UNKNOWN.test(e.errorName ?? e.message)) return undefined\n throw e\n }\n }\n}\n\n/** Human-readable failure from an execution `status` (`{Failure: {...}}`), or undefined on success. */\nexport function failureOf(status: Record<string, unknown> | undefined): string | undefined {\n if (!status || !('Failure' in status)) return undefined\n const f = status.Failure\n try {\n const json = JSON.stringify(f)\n const m = /\"ExecutionError\":\"([^\"]+)\"/.exec(json) ?? /\"error_message\":\"([^\"]+)\"/.exec(json) ?? /\"kind\":(\\{[^}]*\\})/.exec(json)\n return m?.[1] ?? json.slice(0, 300)\n } catch { return String(f) }\n}\n\n/** Did the whole transaction (every receipt) succeed? */\nexport function outcomeFailed(o: RawFinalOutcome): string | undefined {\n const top = failureOf(o.status)\n if (top) return top\n for (const r of o.receipts_outcome ?? []) {\n const f = failureOf(r.outcome?.status)\n if (f) return f\n }\n return undefined\n}\n","import { argsBytes, actionKey } from './borsh.js'\nimport { isImplicitAccountId, isValidAccountId } from './address.js'\nimport { IMPLICIT_ACCOUNT_MIN_DEPOSIT, MAX_GAS, TGAS, type NearAction, type NearFunctionCallAction, type NearTransaction, type NearTxDescription, type NearTxKind, type NearTxWarning } from './types.js'\n\n/** What an offline description can be told to sharpen its warnings. */\nexport interface DescribeContext {\n /** The signing account; adds `self-transfer` and fills `from`. */\n signerId?: string\n /** Whether the receiver account exists; `describeTransactionOnline` fills it from the node. */\n recipientExists?: boolean\n}\n\n/** Actions that change the account itself, its keys, or deploy code. Refused unless `allowDangerousActions`. */\nexport const DANGEROUS_ACTIONS = new Set(['createAccount', 'deployContract', 'stake', 'addKey', 'deleteKey', 'deleteAccount', 'signedDelegate', 'deployGlobalContract', 'useGlobalContract'])\n\nconst KIND_OF_DANGEROUS: Record<string, NearTxKind> = {\n createAccount: 'create-account', deployContract: 'deploy-contract', stake: 'stake', addKey: 'add-key', deleteKey: 'delete-key',\n deleteAccount: 'delete-account', signedDelegate: 'delegate', deployGlobalContract: 'global-contract', useGlobalContract: 'global-contract',\n}\n\n/** Methods a NEP-141 / NEP-145 token contract exposes that we recognise. */\nconst FT_METHODS = new Set(['ft_transfer', 'ft_transfer_call', 'storage_deposit', 'storage_withdraw', 'storage_unregister'])\n\nfunction parseArgs(a: NearFunctionCallAction['functionCall']): Record<string, unknown> | undefined {\n try {\n const parsed = JSON.parse(new TextDecoder().decode(argsBytes(a.args))) as unknown\n return parsed && typeof parsed === 'object' ? (parsed as Record<string, unknown>) : undefined\n } catch { return undefined }\n}\n\n/** What a transaction does, decoded offline. Never throws on odd input — it warns. */\nexport function describeTransaction(tx: NearTransaction, ctx: DescribeContext = {}): NearTxDescription {\n const warnings: NearTxWarning[] = []\n const actions = tx.actions ?? []\n const from = tx.signerId ?? ctx.signerId\n let deposit = 0n\n let gas = 0n\n const methods: string[] = []\n let kind: NearTxKind = 'batch'\n let to: string | undefined = tx.receiverId\n let amount: bigint | undefined\n let token: string | undefined\n let memo: string | undefined\n let contract: string | undefined\n let dangerous: NearTxKind | undefined\n\n if (!isValidAccountId(tx.receiverId)) warnings.push({ code: 'invalid-account', message: `\"${tx.receiverId}\" is not a valid NEAR account id.` })\n\n for (const a of actions) {\n let key: string\n try { key = actionKey(a) } catch { warnings.push({ code: 'dangerous-action', message: 'Unknown action.' }); continue }\n if (DANGEROUS_ACTIONS.has(key)) {\n dangerous ??= KIND_OF_DANGEROUS[key]\n warnings.push({ code: 'dangerous-action', message: `${key} changes the account, its keys or its code.` })\n if (key === 'addKey' && 'fullAccess' in (a as { addKey: { accessKey: { permission: object } } }).addKey.accessKey.permission) {\n warnings.push({ code: 'full-access-key', message: 'Adds a FULL ACCESS key: whoever holds it owns the account.' })\n }\n continue\n }\n if (key === 'transfer') {\n const d = (a as { transfer: { deposit: bigint } }).transfer.deposit\n deposit += d\n amount = (amount ?? 0n) + d\n continue\n }\n if (key === 'functionCall') {\n const f = (a as NearFunctionCallAction).functionCall\n const g = f.gas ?? 30n * TGAS\n gas += g\n deposit += f.deposit ?? 0n\n methods.push(f.methodName)\n contract = tx.receiverId\n if (f.methodName === 'ft_transfer' || f.methodName === 'ft_transfer_call') {\n const args = parseArgs(f)\n token = tx.receiverId\n to = typeof args?.receiver_id === 'string' ? args.receiver_id : undefined\n if (typeof args?.amount === 'string' && /^\\d+$/.test(args.amount)) amount = BigInt(args.amount)\n if (typeof args?.memo === 'string') memo = args.memo\n if (to !== undefined && !isValidAccountId(to)) warnings.push({ code: 'invalid-account', message: `\"${to}\" is not a valid NEAR account id.` })\n }\n }\n }\n\n const callMethods = methods.filter((m) => m !== 'storage_deposit')\n if (dangerous) kind = dangerous\n else if (actions.length === 1 && methods.length === 0 && amount !== undefined) kind = 'near-transfer'\n else if (methods.length > 0 && callMethods.every((m) => m === 'ft_transfer' || m === 'ft_transfer_call') && callMethods.length === 1 && actions.length === methods.length) kind = 'ft-transfer'\n else if (methods.length === 1 && methods[0] === 'storage_deposit' && actions.length === 1) kind = 'ft-storage-deposit'\n else if (methods.length === 1 && actions.length === 1) kind = 'function-call'\n else kind = 'batch'\n\n if (kind === 'function-call' && !FT_METHODS.has(methods[0]!)) warnings.push({ code: 'unknown-method', message: `Calls ${tx.receiverId}.${methods[0]} — not a token method we recognise.` })\n if ((kind === 'near-transfer' || kind === 'ft-transfer') && amount === 0n) warnings.push({ code: 'zero-amount', message: 'Transfers nothing.' })\n if (gas > MAX_GAS) warnings.push({ code: 'high-gas', message: `Prepaid gas ${gas} exceeds the 300 Tgas transaction limit.` })\n if (from !== undefined && to !== undefined && from === to && (kind === 'near-transfer' || kind === 'ft-transfer')) warnings.push({ code: 'self-transfer', message: 'Sends to the signing account itself.' })\n if (kind === 'near-transfer' && ctx.recipientExists === false) {\n if (isImplicitAccountId(tx.receiverId)) {\n warnings.push({ code: 'implicit-new-account', message: `Creates the implicit account ${tx.receiverId}${(amount ?? 0n) < IMPLICIT_ACCOUNT_MIN_DEPOSIT ? ' — below the 0.002 NEAR it needs to exist' : ''}.` })\n } else {\n warnings.push({ code: 'invalid-account', message: `Account ${tx.receiverId} does not exist; a transfer to it would fail.` })\n }\n }\n\n return {\n kind, warnings, deposit, gas, actionCount: actions.length,\n ...(from !== undefined ? { from } : {}),\n ...(to !== undefined ? { to } : {}),\n ...(amount !== undefined ? { amount } : {}),\n ...(token !== undefined ? { token } : {}),\n ...(memo !== undefined ? { memo } : {}),\n ...(contract !== undefined ? { contract } : {}),\n ...(methods.length ? { methods } : {}),\n }\n}\n\n/**\n * True for actions that change who controls the account or its code: keys, account creation\n * or deletion, contract deployment, staking, delegated actions. Refused unless\n * `allowDangerousActions` is set.\n */\nexport const isDangerous = (a: NearAction): boolean => { try { return DANGEROUS_ACTIONS.has(actionKey(a)) } catch { return true } }\n","/**\n * NEP-413 \"Sign Message\" (https://github.com/near/NEPs/blob/master/neps/nep-0413.md):\n * the off-chain message standard NEAR wallets and NEAR Intents use. The signed\n * bytes are sha256( u32le(2^31 + 413) ‖ borsh(Payload) ), and the prefix keeps a\n * message from ever being a valid transaction.\n */\nimport { sha256 } from '@noble/hashes/sha2.js'\nimport { BorshWriter } from './borsh.js'\n\n/** NEP-413 tag (2^31 + 413) that keeps a signed message from being a valid transaction. */\nexport const NEP413_PREFIX = 2 ** 31 + 413\n\n/** A NEP-413 sign-in message, as a site asks for it. */\nexport interface Nep413Payload {\n message: string\n /** 32 random bytes chosen by the verifier (replay protection). */\n nonce: Uint8Array\n /** Who the message is for (e.g. \"intents.near\"). */\n recipient: string\n callbackUrl?: string\n}\n\n/** A NEP-413 signature and the key that made it. */\nexport interface Nep413Signed {\n /** Base64 of the 64-byte ed25519 signature — the encoding wallets return. */\n signature: string\n /** \"ed25519:<base58>\" */\n publicKey: string\n accountId: string\n}\n\n/** Borsh bytes of a NEP-413 payload, ready to hash and sign. */\nexport function nep413Bytes(p: Nep413Payload): Uint8Array {\n if (p.nonce.length !== 32) throw new RangeError('NEP-413 nonce must be 32 bytes')\n const w = new BorshWriter()\n w.u32(NEP413_PREFIX)\n w.string(p.message).bytes(p.nonce).string(p.recipient)\n w.option(p.callbackUrl, (u) => w.string(u))\n return w.toBytes()\n}\n\n/** The 32-byte digest an ed25519 signer signs for a NEP-413 message. */\nexport function nep413Hash(p: Nep413Payload): Uint8Array {\n return sha256(nep413Bytes(p))\n}\n","import { NetworkError, type IWalletAccountReadOnly } from '@anywalletkit/core'\nimport { ed25519 } from '@noble/curves/ed25519.js'\nimport { sha256 } from '@noble/hashes/sha2.js'\nimport { base58ToBytes, bytesToBase58, ed25519Key, isImplicitAccountId, isValidAccountId, publicKeyOfImplicit, publicKeyToString } from './address.js'\nimport { decodeAnyTransaction, encodeTransaction } from './borsh.js'\nimport { describeTransaction, isDangerous, type DescribeContext } from './describe.js'\nimport { SimulationError, UnsafeTransactionError } from './errors.js'\nimport { NearRpc, createClient, failureOf, fromBase64, outcomeFailed, type RawFinalOutcome } from './rpc.js'\nimport {\n CAIP2, FT_TRANSFER_GAS, IMPLICIT_ACCOUNT_MIN_DEPOSIT, MAX_GAS, ONE_YOCTO, STORAGE_DEPOSIT_GAS, STORAGE_PRICE_PER_BYTE, TGAS,\n type NearAccountView, type NearAction, type NearBuiltTransaction, type NearConfig, type NearFeeEstimate, type NearFetch, type NearFunctionCallAction,\n type NearPublicKey, type NearQuote, type NearReceipt, type NearSimulation, type NearTransaction, type NearTransferOptions, type NearTxDescription,\n} from './types.js'\n\n// ── Gas model (nearcore RuntimeFeesConfig, mainnet; send + exec, non-sir) ────\n// Upper bounds: unused prepaid gas is refunded, so a quote is what the signer can\n// lose at most, not what it will pay.\nconst ACTION_RECEIPT_GAS = 2n * 108_059_500_000n\nconst TRANSFER_GAS = 2n * 115_123_062_500n\nconst CREATE_ACCOUNT_GAS = 16n * 10n ** 12n // implicit account: create + full-access key + transfer; 15.9 Tgas measured on mainnet\nconst FUNCTION_CALL_BASE_GAS = 2n * 2_319_861_500_000n\nconst FUNCTION_CALL_PER_BYTE_GAS = 2n * 2_473_250n\n/**\n * Creating an implicit account by transferring to it costs more than its gas:\n * the recipient-side receipt burnt 0.00703 NEAR for 7.5 Tgas on mainnet\n * (tx 3W8EDnjC…, 2026-10-10) — the protocol's account-creation charge. Added\n * on top of the gas estimate whenever a native transfer creates the account.\n */\nconst IMPLICIT_ACCOUNT_CREATION_COST = 8n * 10n ** 21n // 0.008 NEAR\n/** Gas-price can rise 1% per block between quote and execution; keep a margin. */\nconst GAS_PRICE_MARGIN_NUM = 11n\nconst GAS_PRICE_MARGIN_DEN = 10n\n\ntype FtStorageBalance = { total: string; available: string } | null\n\n/** Default ceiling for a recipient's `storage_deposit` on a token transfer: 0.0125 NEAR. */\nexport const MAX_STORAGE_DEPOSIT = 12_500_000_000_000_000_000_000n\n\n/**\n * A NEAR account without a key: balances, NEP-141 tokens and storage, fee estimates, simulation,\n * receipts and signature checks.\n */\nexport class WalletAccountReadOnlyNear implements IWalletAccountReadOnly {\n /** Account id: the implicit hex id of the key, or a named account bound to it. */\n readonly address: string\n readonly chain: string\n readonly publicKey: NearPublicKey\n protected readonly _config: NearConfig\n protected readonly _client: NearFetch | undefined\n protected readonly _rpc: NearRpc | undefined\n\n /**\n * @param address account id; an implicit (64-hex) id also fixes the public key.\n * @param publicKey required for a named account (the key the account signs with).\n */\n constructor(address: string, config: NearConfig = {}, publicKey?: Uint8Array | NearPublicKey) {\n if (!isValidAccountId(address)) throw new RangeError(`\"${address}\" is not a valid NEAR account id`)\n this.address = address\n const key = publicKey instanceof Uint8Array ? ed25519Key(publicKey) : publicKey\n if (key) this.publicKey = key\n else if (isImplicitAccountId(address)) this.publicKey = ed25519Key(publicKeyOfImplicit(address))\n else throw new RangeError('A named NEAR account needs its public key.')\n this._config = config\n this._client = createClient(config)\n this._rpc = this._client ? new NearRpc(this._client) : undefined\n const net = config.network ?? 'mainnet'\n this.chain = CAIP2[net] ?? (net.startsWith('near:') ? net : `near:${net}`)\n }\n\n /** \"ed25519:<base58>\" */\n get publicKeyString(): string { return publicKeyToString(this.publicKey) }\n\n protected requireRpc(what: string): NearRpc {\n if (!this._rpc) throw new NetworkError(`The wallet must be connected to a provider to ${what}.`)\n return this._rpc\n }\n\n /** The account id. */\n async getAddress(): Promise<string> { return this.address }\n\n /** The account as the node sees it; `undefined` when it does not exist yet. */\n async getAccountView(accountId = this.address): Promise<NearAccountView | undefined> {\n const v = await this.requireRpc('retrieve balances').viewAccount(accountId)\n if (!v) return undefined\n const amount = BigInt(v.amount)\n const locked = BigInt(v.locked)\n const storageUsage = BigInt(v.storage_usage)\n const available = amount - locked - storageUsage * STORAGE_PRICE_PER_BYTE\n return { amount, locked, storageUsage, available: available > 0n ? available : 0n }\n }\n\n /** Total NEAR balance in yoctoNEAR (0 for an account that does not exist yet). */\n async getBalance(): Promise<bigint> {\n return (await this.getAccountView())?.amount ?? 0n\n }\n\n /** What can actually be spent: total − locked (staked) − storage reservation. */\n async getAvailableBalance(): Promise<bigint> {\n return (await this.getAccountView())?.available ?? 0n\n }\n\n /** True when the account exists on chain. */\n async accountExists(accountId: string): Promise<boolean> {\n return (await this.requireRpc('check an account').viewAccount(accountId)) !== undefined\n }\n\n /** NEP-141 `ft_balance_of`. */\n async getTokenBalance(token: string): Promise<bigint> {\n const r = await this.requireRpc('retrieve token balances').callFunction<string | null>(token, 'ft_balance_of', { account_id: this.address })\n return BigInt(r ?? '0')\n }\n\n /** Several NEP-141 balances in parallel, keyed by the token contracts as given. */\n async getTokenBalances(tokens: string[]): Promise<Record<string, bigint>> {\n const out: Record<string, bigint> = {}\n await Promise.all(tokens.map(async (t) => { out[t] = await this.getTokenBalance(t) }))\n return out\n }\n\n /** NEP-145 storage registration of `accountId` on a token contract (`null` = not registered). */\n async getStorageBalance(token: string, accountId = this.address): Promise<{ total: bigint; available: bigint } | null> {\n const r = await this.requireRpc('read token storage').callFunction<FtStorageBalance>(token, 'storage_balance_of', { account_id: accountId })\n return r ? { total: BigInt(r.total), available: BigInt(r.available) } : null\n }\n\n /** Minimum deposit a token contract wants for a registration (`storage_balance_bounds.min`). */\n async getStorageDepositMin(token: string): Promise<bigint> {\n const r = await this.requireRpc('read token storage').callFunction<{ min: unknown; max: unknown } | null>(token, 'storage_balance_bounds', {})\n const min = r?.min ?? '1250000000000000000000'\n if (typeof min !== 'string' || !/^\\d{1,40}$/.test(min)) throw new UnsafeTransactionError('storage-deposit', `${token} returned a malformed storage_balance_bounds.min.`)\n return BigInt(min)\n }\n\n // ── Building ────────────────────────────────────────────────────────────────\n\n /**\n * The actions for `transfer`: native → one Transfer; NEP-141 → `ft_transfer` (1 yocto, 30 Tgas),\n * preceded by `storage_deposit` when the recipient is not registered on the token.\n */\n async transferActions(o: NearTransferOptions): Promise<{ receiverId: string; actions: NearAction[] }> {\n const amount = BigInt(o.amount)\n if (!isValidAccountId(o.recipient)) throw new UnsafeTransactionError('invalid-account', `\"${o.recipient}\" is not a valid NEAR account id.`)\n if (!o.token) return { receiverId: o.recipient, actions: [{ transfer: { deposit: amount } }] }\n if (!isValidAccountId(o.token)) throw new UnsafeTransactionError('invalid-account', `\"${o.token}\" is not a valid token contract id.`)\n const actions: NearAction[] = []\n const registered = await this.getStorageBalance(o.token, o.recipient)\n if (registered === null) {\n const min = await this.getStorageDepositMin(o.token)\n // The token contract names this amount; it rides on our signature, so it is capped.\n const cap = BigInt(this._config.maxStorageDeposit ?? MAX_STORAGE_DEPOSIT)\n if (min > cap) throw new UnsafeTransactionError('storage-deposit', `${o.token} asks ${min} yoctoNEAR to register ${o.recipient}; the cap is ${cap}.`)\n actions.push({ functionCall: { methodName: 'storage_deposit', args: { account_id: o.recipient, registration_only: true }, gas: STORAGE_DEPOSIT_GAS, deposit: min } })\n }\n actions.push({\n functionCall: {\n methodName: 'ft_transfer',\n args: { receiver_id: o.recipient, amount: amount.toString(), ...(o.memo !== undefined ? { memo: o.memo } : {}) },\n gas: FT_TRANSFER_GAS,\n deposit: ONE_YOCTO,\n },\n })\n return { receiverId: o.token, actions }\n }\n\n /** Fill `signerId` / `publicKey` / `nonce` / `blockHash` (the last two from the node when missing). */\n async buildTransaction(tx: NearTransaction | string): Promise<NearBuiltTransaction> {\n if (typeof tx === 'string') return decodeAnyTransaction(fromBase64(tx)).transaction\n const signerId = tx.signerId ?? this.address\n const publicKey = tx.publicKey ?? this.publicKey\n let nonce = tx.nonce\n let blockHash = typeof tx.blockHash === 'string' ? base58ToBytes(tx.blockHash, 32) : tx.blockHash\n if (nonce === undefined || blockHash === undefined) {\n const rpc = this.requireRpc('build transactions')\n if (nonce === undefined) {\n const key = await rpc.viewAccessKey(signerId, publicKeyToString(publicKey))\n if (!key) throw new UnsafeTransactionError('no-access-key', `${publicKeyToString(publicKey)} is not an access key of ${signerId} (does the account exist and hold NEAR?).`)\n nonce = BigInt(key.nonce) + 1n\n }\n blockHash ??= base58ToBytes(await rpc.latestBlockHash(), 32)\n }\n return { signerId, publicKey, nonce, receiverId: tx.receiverId, blockHash, actions: tx.actions }\n }\n\n // ── Fees ────────────────────────────────────────────────────────────────────\n\n /** Gas upper bound for the actions (prepaid function-call gas in full). */\n static gasOf(actions: NearAction[], createsAccount: boolean): bigint {\n let gas = ACTION_RECEIPT_GAS\n for (const a of actions) {\n if ('transfer' in a) gas += TRANSFER_GAS + (createsAccount ? CREATE_ACCOUNT_GAS : 0n)\n else if ('functionCall' in a) {\n const f = (a as NearFunctionCallAction).functionCall\n const argLen = f.args instanceof Uint8Array ? f.args.length : typeof f.args === 'string' ? f.args.length : JSON.stringify(f.args).length\n gas += FUNCTION_CALL_BASE_GAS + FUNCTION_CALL_PER_BYTE_GAS * BigInt(argLen + f.methodName.length) + (f.gas ?? 30n * TGAS)\n } else gas += 5n * TGAS\n }\n return gas\n }\n\n static depositOf(actions: NearAction[]): bigint {\n let d = 0n\n for (const a of actions) {\n if ('transfer' in a) d += a.transfer.deposit\n else if ('functionCall' in a) d += a.functionCall.deposit ?? 0n\n else if ('stake' in a) d += a.stake.stake\n }\n return d\n }\n\n protected async estimate(tx: Pick<NearBuiltTransaction, 'receiverId' | 'actions'>, recipientExists?: boolean): Promise<NearFeeEstimate> {\n const rpc = this.requireRpc('estimate fees')\n const isTransfer = tx.actions.some((a) => 'transfer' in a)\n const createsAccount = isTransfer && isImplicitAccountId(tx.receiverId) && !(recipientExists ?? (await this.accountExists(tx.receiverId)))\n const gas = WalletAccountReadOnlyNear.gasOf(tx.actions, createsAccount)\n const gasPrice = ((await rpc.gasPrice()) * GAS_PRICE_MARGIN_NUM) / GAS_PRICE_MARGIN_DEN\n const fee = gas * gasPrice + (createsAccount ? IMPLICIT_ACCOUNT_CREATION_COST : 0n)\n return { gas, gasPrice, fee, deposit: WalletAccountReadOnlyNear.depositOf(tx.actions), createsAccount }\n }\n\n /** Gas and cost of a transaction. */\n async estimateFee(tx: NearTransaction | string): Promise<NearFeeEstimate> {\n return this.estimate(typeof tx === 'string' ? await this.buildTransaction(tx) : tx)\n }\n\n /** Fee of a transaction in yoctoNEAR. */\n async quoteSendTransaction(tx: NearTransaction | string): Promise<NearQuote> {\n const estimate = await this.estimateFee(tx)\n return { fee: estimate.fee, estimate }\n }\n\n /** Fee of a transfer in yoctoNEAR, for the same actions `transfer` would send. */\n async quoteTransfer(o: NearTransferOptions): Promise<NearQuote> {\n return this.quoteSendTransaction(await this.transferActions(o))\n }\n\n // ── Preflight ───────────────────────────────────────────────────────────────\n\n /**\n * Predict failure without signing: the signer account and its access key exist,\n * the spendable balance covers deposits + fee, a named recipient exists (an\n * implicit one may be created, for ≥ 0.002 NEAR), the token balance covers an\n * `ft_transfer`. Transport failures throw; predicted failures don't.\n */\n async simulateTransaction(tx: NearBuiltTransaction | NearTransaction, estimate?: NearFeeEstimate): Promise<NearSimulation> {\n const rpc = this.requireRpc('simulate transactions')\n const signerId = tx.signerId ?? this.address\n const d = describeTransaction(tx, { signerId })\n const acct = await this.getAccountView(signerId)\n if (!acct) return { ok: false, reason: `Account ${signerId} does not exist (fund it with NEAR first).` }\n const key = await rpc.viewAccessKey(signerId, publicKeyToString(tx.publicKey ?? this.publicKey))\n if (!key) return { ok: false, reason: `${publicKeyToString(tx.publicKey ?? this.publicKey)} is not an access key of ${signerId}.` }\n if (key.permission !== 'FullAccess') {\n const p = key.permission.FunctionCall\n if (p.receiver_id !== tx.receiverId || d.deposit > 0n) return { ok: false, reason: `The access key may only call ${p.receiver_id} without a deposit.` }\n if (p.method_names.length && d.methods?.some((m) => !p.method_names.includes(m))) return { ok: false, reason: 'The access key does not allow this method.' }\n }\n let recipientExists: boolean | undefined\n if (d.kind === 'near-transfer') {\n recipientExists = await this.accountExists(tx.receiverId)\n if (!recipientExists) {\n if (!isImplicitAccountId(tx.receiverId)) return { ok: false, reason: `Account ${tx.receiverId} does not exist.` }\n if ((d.amount ?? 0n) < IMPLICIT_ACCOUNT_MIN_DEPOSIT) return { ok: false, reason: `Creating ${tx.receiverId} needs at least 0.002 NEAR.` }\n }\n } else if (!(await this.accountExists(tx.receiverId))) {\n return { ok: false, reason: `Contract ${tx.receiverId} does not exist.` }\n }\n const est = estimate ?? (await this.estimate(tx, recipientExists))\n const need = est.deposit + est.fee\n if (acct.available < need) return { ok: false, reason: `Insufficient NEAR: need ${need} yocto (deposit + fee), spendable ${acct.available}.` }\n if (d.kind === 'ft-transfer' && d.token && d.amount !== undefined) {\n const bal = await this.getTokenBalance(d.token)\n if (bal < d.amount) return { ok: false, reason: `Insufficient ${d.token}: need ${d.amount}, have ${bal}.` }\n if (d.to && (await this.getStorageBalance(d.token, d.to)) === null && !d.methods?.includes('storage_deposit')) {\n return { ok: false, reason: `${d.to} is not registered on ${d.token}; add a storage_deposit action first.` }\n }\n }\n return { ok: true }\n }\n\n // ── Hard checks ─────────────────────────────────────────────────────────────\n\n /**\n * Refuse what cannot be right: a foreign signer or key, no actions, a dangerous\n * action (unless `allowDangerousActions`), an invalid receiver, prepaid gas over\n * 300 Tgas, a fee above `transactionMaxFee`.\n */\n assertSafe(tx: NearBuiltTransaction, fee?: bigint): void {\n if (tx.signerId !== this.address) throw new UnsafeTransactionError('signer-mismatch', `Transaction signer ${tx.signerId} is not this account (${this.address}).`)\n if (tx.publicKey.keyType !== this.publicKey.keyType || !equalBytes(tx.publicKey.data, this.publicKey.data)) throw new UnsafeTransactionError('public-key-mismatch', 'The transaction public key is not this account\\'s key.')\n if (!tx.actions.length) throw new UnsafeTransactionError('no-actions', 'The transaction has no actions.')\n if (!isValidAccountId(tx.receiverId)) throw new UnsafeTransactionError('invalid-account', `\"${tx.receiverId}\" is not a valid NEAR account id.`)\n if (tx.blockHash.length !== 32) throw new UnsafeTransactionError('missing-block-hash', 'The transaction has no 32-byte block hash.')\n if (tx.nonce <= 0n) throw new UnsafeTransactionError('missing-nonce', 'The transaction nonce must be positive.')\n if (!this._config.allowDangerousActions) {\n const bad = tx.actions.find(isDangerous)\n if (bad) throw new UnsafeTransactionError('dangerous-action', `Refusing ${Object.keys(bad)[0]}: it changes the account, its keys or its code (set allowDangerousActions to override).`)\n }\n let gas = 0n\n for (const a of tx.actions) if ('functionCall' in a) gas += a.functionCall.gas ?? 30n * TGAS\n if (gas > MAX_GAS) throw new UnsafeTransactionError('gas-limit', `Prepaid gas ${gas} exceeds the 300 Tgas limit.`)\n const max = this._config.transactionMaxFee\n if (fee !== undefined && max !== undefined && fee > BigInt(max)) throw new UnsafeTransactionError('fee-limit', `Fee ${fee} exceeds transactionMaxFee ${max}.`)\n }\n\n // ── Describe / receipts / verify ────────────────────────────────────────────\n\n /** `describeTransaction` plus the recipient-existence check against the node. */\n async describeTransactionOnline(tx: NearTransaction, ctx: DescribeContext = {}): Promise<NearTxDescription> {\n const offline = describeTransaction(tx, { signerId: this.address, ...ctx })\n if (ctx.recipientExists !== undefined || offline.kind !== 'near-transfer') return offline\n return describeTransaction(tx, { signerId: this.address, ...ctx, recipientExists: await this.accountExists(tx.receiverId) })\n }\n\n /** Status of one of this account's transactions (the `tx` RPC needs the sender). */\n async getTransactionReceipt(hash: string): Promise<NearReceipt | undefined> {\n const o = await this.requireRpc('fetch transaction receipts').txStatus(hash, this.address)\n if (!o) return undefined\n return receiptOf(hash, o)\n }\n\n /** Verify an `ed25519:<base58>` (or bare base58 / hex) signature produced by `sign`. */\n async verify(message: string | Uint8Array, signature: string): Promise<boolean> {\n try {\n const bytes = typeof message === 'string' ? new TextEncoder().encode(message) : message\n return ed25519.verify(parseSignature(signature), bytes, this.publicKey.data)\n } catch { return false }\n }\n\n /** sha256(borsh(tx)) — what gets signed; base58 of it is the transaction hash. */\n static hashOf(tx: NearBuiltTransaction): Uint8Array { return sha256(encodeTransaction(tx)) }\n static txHash(tx: NearBuiltTransaction): string { return bytesToBase58(WalletAccountReadOnlyNear.hashOf(tx)) }\n}\n\nexport function receiptOf(hash: string, o: RawFinalOutcome): NearReceipt {\n const failure = outcomeFailed(o)\n const pending = o.final_execution_status !== undefined && /NONE|INCLUDED$/.test(o.final_execution_status) && !failureOf(o.status) && o.status === undefined\n return { hash, status: failure ? 0 : 1, ...(failure ? { failure } : {}), raw: { ...o, ...(pending ? { pending: true } : {}) } }\n}\n\nexport function parseSignature(signature: string): Uint8Array {\n const s = signature.startsWith('ed25519:') ? signature.slice('ed25519:'.length) : signature\n if (/^(0x)?[0-9a-fA-F]{128}$/.test(s)) {\n const hex = s.replace(/^0x/, '')\n return Uint8Array.from(hex.match(/.{2}/g)!, (b) => parseInt(b, 16))\n }\n return base58ToBytes(s, 64)\n}\n\nfunction equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false\n let diff = 0\n for (let i = 0; i < a.length; i++) diff |= a[i]! ^ b[i]!\n return diff === 0\n}\n","import { LocalSigner, SignerError, feeLimit, requireCurve, type IWalletAccount, type IWalletAccountReadOnly, type Signer, type TransferResult, type WriteOptions } from '@anywalletkit/core'\nimport { bytesToBase58, ed25519Key, implicitAccountId, publicKeyToString } from './address.js'\nimport { decodeAnyTransaction, encodeSignedTransaction } from './borsh.js'\nimport { BroadcastUnknownError, MessageIsTransactionError, SimulationError } from './errors.js'\nimport { nep413Hash, type Nep413Payload, type Nep413Signed } from './nep413.js'\nimport { WalletAccountReadOnlyNear, receiptOf } from './read-only-account.js'\nimport { fromBase64, isDefinitive, outcomeFailed, toBase64 } from './rpc.js'\nimport type { NearBuiltTransaction, NearConfig, NearFeeEstimate, NearSignedTransaction, NearTransaction, NearTransferOptions } from './types.js'\n\n/** Does `bytes` carry `key` anywhere? A Solana transaction names each signer's 32-byte key. */\nconst carriesKey = (bytes: Uint8Array, key: Uint8Array): boolean => {\n outer: for (let i = 0; i + key.length <= bytes.length; i++) {\n for (let j = 0; j < key.length; j++) if (bytes[i + j] !== key[j]) continue outer\n return true\n }\n return false\n}\n\nexport interface NearTransferResult extends TransferResult {\n estimate?: NearFeeEstimate\n}\n\n/**\n * Signing NEAR account. The key lives in an ed25519 {@link Signer} (a local key\n * zeroized by `dispose()`, or an external hardware / MPC / backend signer). The\n * account builds the transaction (nonce + block hash from the node), checks it,\n * runs the preflight, has the signer sign sha256(borsh(tx)) (context `near-tx`)\n * and broadcasts it with `send_tx`.\n *\n * By default the account id is the implicit one (hex of the public key). Pass\n * `accountId` for a named account whose full-access key this is.\n */\nexport class WalletAccountNear extends WalletAccountReadOnlyNear implements IWalletAccount {\n /** nonce / block hash come from the node, so building needs the network. */\n readonly needsNetwork = true\n /** Derivation path, or `external` for an external signer. */\n readonly path: string\n /** The signer that holds the key. */\n readonly signer: Signer\n private _disposed = false\n private _readOnly: WalletAccountReadOnlyNear | undefined\n\n constructor(signer: Signer, publicKey: Uint8Array, path: string, config: NearConfig = {}, accountId?: string) {\n super(accountId ?? implicitAccountId(publicKey), config, ed25519Key(publicKey))\n this.signer = requireCurve(signer, 'ed25519')\n this.path = path\n }\n\n /** Wrap a raw derived key (takes ownership; zeroized on dispose). */\n static fromPrivateKey(privateKey: Uint8Array, publicKey: Uint8Array, path: string, config: NearConfig = {}, accountId?: string): WalletAccountNear {\n return new WalletAccountNear(LocalSigner.fromPrivateKey('ed25519', privateKey, publicKey, path), publicKey, path, config, accountId)\n }\n\n /** Account index for the standard m/44'/397'/i' path. */\n get index(): number | undefined {\n const m = /^m\\/44'\\/397'\\/(\\d+)'$/.exec(this.path)\n return m ? Number(m[1]) : undefined\n }\n\n /** The same key bound to a named account (`alice.near`) that lists it as a full-access key. */\n withAccountId(accountId: string): WalletAccountNear {\n return new WalletAccountNear(this.signer, this.publicKey.data, this.path, this._config, accountId)\n }\n\n private key(): void {\n if (this._disposed) throw new SignerError('This account has been disposed.')\n }\n\n private async signBytes(bytes: Uint8Array, context: 'near-tx' | 'near-message' | 'near-nep413'): Promise<Uint8Array> {\n this.key()\n return this.signer.sign(bytes, { scheme: 'ed25519', context })\n }\n\n /**\n * Raw ed25519 signature over the message bytes, as NEAR tooling prints it: \"ed25519:<base58>\".\n * A 32-byte message — string or bytes — is refused with {@link MessageIsTransactionError}: a NEAR\n * transaction is signed over its 32-byte sha256, so those bytes could be one. Bytes that carry\n * this account's public key are refused as well: one ed25519 key (an external signer) may also be\n * a Solana wallet, and a Solana transaction names its signer's key. Sites asking a wallet to sign\n * a message use {@link signNep413}.\n */\n async sign(message: string | Uint8Array): Promise<string> {\n const bytes = typeof message === 'string' ? new TextEncoder().encode(message) : message\n if (bytes.length === 32 || carriesKey(bytes, this.publicKey.data)) throw new MessageIsTransactionError()\n return `ed25519:${bytesToBase58(await this.signBytes(bytes, 'near-message'))}`\n }\n\n /** NEP-413 off-chain message (what NEAR Intents and dApps ask wallets to sign). */\n async signNep413(payload: Nep413Payload): Promise<Nep413Signed> {\n const sig = await this.signBytes(nep413Hash(payload), 'near-nep413')\n return { signature: toBase64(sig), publicKey: publicKeyToString(this.publicKey), accountId: this.address }\n }\n\n /** Sign a fully built transaction. No checks — see `signTransaction`. */\n async signBuilt(tx: NearBuiltTransaction): Promise<NearSignedTransaction> {\n const sig = await this.signBytes(WalletAccountReadOnlyNear.hashOf(tx), 'near-tx')\n return { transaction: tx, signature: { keyType: 'ed25519', data: sig } }\n }\n\n /** Build → hard checks → preflight → fee cap. Shared by sign / send / transfer. */\n private async prepare(tx: NearTransaction | string, maxFee: bigint | number | undefined, op: string): Promise<{ built: NearBuiltTransaction; estimate: NearFeeEstimate }> {\n const built = await this.buildTransaction(tx)\n this.assertSafe(built)\n const estimate = await this.estimate(built)\n this.assertSafe(built, estimate.fee)\n if (maxFee !== undefined && estimate.fee > BigInt(maxFee)) throw new Error(`Exceeded maximum fee cost for ${op} operation${op === 'transfer' ? 's' : ''}.`)\n if (this._config.simulate !== false) {\n const sim = await this.simulateTransaction(built, estimate)\n if (!sim.ok) throw new SimulationError(sim.reason ?? 'unknown')\n }\n return { built, estimate }\n }\n\n /** Build, check, preflight and sign; returns the signed transaction as base64 borsh (what `send_tx` takes). */\n async signTransaction(tx: NearTransaction | string, options: WriteOptions = {}): Promise<string> {\n this.key()\n this.requireRpc('sign transactions')\n const { built } = await this.prepare(tx, feeLimit(this._config.transactionMaxFee, options), 'transaction')\n return toBase64(encodeSignedTransaction(await this.signBuilt(built)))\n }\n\n private async broadcast(signed: NearSignedTransaction): Promise<string> {\n const hash = WalletAccountReadOnlyNear.txHash(signed.transaction)\n const rpc = this.requireRpc('broadcast')\n let outcome: Awaited<ReturnType<typeof rpc.sendTx>>\n try {\n outcome = await rpc.sendTx(toBase64(encodeSignedTransaction(signed)))\n } catch (e) {\n // A definitive refusal (invalid nonce, invalid tx…) is a clean failure; no answer or a node timeout may still land.\n if (isDefinitive(e)) throw e\n throw new BroadcastUnknownError(hash, e)\n }\n const failure = outcomeFailed(outcome)\n if (failure) throw new Error(`Transaction ${hash} failed on chain: ${failure}`)\n return outcome.transaction?.hash ?? hash\n }\n\n /**\n * Sign and broadcast. Accepts a transaction, or base64 borsh of an unsigned /\n * already-signed transaction (a signed one is checked, not re-signed).\n */\n async sendTransaction(tx: NearTransaction | string, options: WriteOptions = {}): Promise<NearTransferResult> {\n this.key()\n this.requireRpc('send transactions')\n const presigned = typeof tx === 'string' ? decodeSigned(tx) : undefined\n const { built, estimate } = await this.prepare(tx, feeLimit(this._config.transactionMaxFee, options), 'transaction')\n const signed = presigned ?? (await this.signBuilt(built))\n return { hash: await this.broadcast(signed), fee: estimate.fee, estimate }\n }\n\n /** Native NEAR (no `token`) or NEP-141 `ft_transfer` (with `storage_deposit` when the recipient needs it). */\n async transfer(o: NearTransferOptions, writeOptions: WriteOptions = {}): Promise<NearTransferResult> {\n this.key()\n this.requireRpc('transfer tokens')\n const { built, estimate } = await this.prepare(await this.transferActions(o), feeLimit(this._config.transferMaxFee, writeOptions), 'transfer')\n return { hash: await this.broadcast(await this.signBuilt(built)), fee: estimate.fee, estimate }\n }\n\n /** The same account as a {@link WalletAccountReadOnlyNear}. */\n toReadOnlyAccount(): IWalletAccountReadOnly {\n this._readOnly ??= new WalletAccountReadOnlyNear(this.address, this._config, this.publicKey)\n return this._readOnly\n }\n\n /** Dispose the signer (zeroizes a local key). Idempotent. */\n dispose(): void {\n this._disposed = true\n this.signer.dispose()\n }\n}\n\nfunction decodeSigned(b64: string): NearSignedTransaction | undefined {\n const { transaction, signature } = decodeAnyTransaction(fromBase64(b64))\n return signature ? { transaction, signature } : undefined\n}\n\nexport { receiptOf }\n","import { LocalSigner, NetworkError, SignerError, WalletManager, isSeedSigner, type FeeRates, type Signer } from '@anywalletkit/core'\nimport { WalletAccountNear } from './account.js'\nimport { WalletAccountReadOnlyNear } from './read-only-account.js'\nimport { NearRpc, createClient } from './rpc.js'\nimport type { NearConfig, NearPublicKey } from './types.js'\n\n/** Base derivation path; account `i` is at `m/44'/397'/i'`. */\nexport const NEAR_BASE_PATH = \"m/44'/397'\"\n\n/**\n * One seed → NEAR accounts at m/44'/397'/i' (SLIP-10 ed25519 — the NEAR Wallet /\n * near-seed-phrase path; index 0 is what every NEAR wallet derives). Paths may be\n * given relative to m/44'/397' (\"0'\") or in full; every segment must be hardened.\n *\n * Built with an ed25519 `Signer` instead of a seed, the manager wraps it:\n * - a derivable `SeedSigner` sitting at `m/44'/397'` yields `getAccount(i)` → `i'` children;\n * - a `SeedSigner` at a leaf, or any external signer, is `getAccount(0)` (path = the\n * signer's path, or 'external'); other indexes/paths throw `SignerError`.\n *\n * `getNamedAccount(\"alice.near\", i)` binds account i's key to a named account.\n */\nexport class WalletManagerNear extends WalletManager<WalletAccountNear, NearConfig> {\n constructor(seedOrSigner: string | Uint8Array | Signer, config: NearConfig = {}) {\n super(seedOrSigner, config)\n }\n\n\n async getAccount(index = 0): Promise<WalletAccountNear> {\n return this.getAccountByPath(`${NEAR_BASE_PATH}/${index}'`)\n }\n\n async getAccountByPath(path: string): Promise<WalletAccountNear> {\n const full = path.startsWith('m/') || path === 'external' ? path : `${NEAR_BASE_PATH}/${path}`\n if (full !== 'external' && !full.split('/').slice(1).every((s) => s.endsWith(\"'\"))) throw new Error('In NEAR, every child path in a derivation path must be hardened.')\n const cached = this._accounts.get(full)\n if (cached) return cached\n const external = this.externalSigner()\n if (external) return this.fromSigner(external, full)\n return this.cachedAccount(full, () => {\n const signer = LocalSigner.leafFromSeed(this.seedBytes(), 'ed25519', full)\n return new WalletAccountNear(signer, signer.publicKey, full, this._config)\n })\n }\n\n /** The key of account `index`, bound to a named account that lists it as a full-access key. */\n async getNamedAccount(accountId: string, index = 0): Promise<WalletAccountNear> {\n return (await this.getAccount(index)).withAccountId(accountId)\n }\n\n /** Resolve `path` against an injected signer: the signer itself, or a child when it can derive there. */\n private async fromSigner(signer: Signer, path: string): Promise<WalletAccountNear> {\n this.requireSigner('ed25519')\n let rel: string | undefined\n let key = 'external'\n if (isSeedSigner(signer)) {\n if (path === signer.path) key = path\n else if (path.startsWith(`${signer.path}/`)) { rel = path.slice(signer.path.length + 1); key = path }\n else throw new SignerError(`The injected signer sits at ${signer.path}; it cannot provide ${path}.`)\n } else if (path !== `${NEAR_BASE_PATH}/0'` && path !== 'external') {\n throw new SignerError(`An external signer has one account; ${path} is not derivable from it.`)\n }\n return this.signerAccount(key, signer, rel, (leaf, publicKey) => new WalletAccountNear(leaf, publicKey, key, this._config))\n }\n\n /** A read-only account for any account id, with this manager's config. */\n getReadOnlyAccount(accountId: string, publicKey?: Uint8Array | NearPublicKey): WalletAccountReadOnlyNear {\n return new WalletAccountReadOnlyNear(accountId, this._config, publicKey)\n }\n\n /** NEAR has one protocol gas price (`gas_price` RPC, yoctoNEAR per gas); it can rise ~1%/block, so fast = ×1.1. */\n async getFeeRates(): Promise<FeeRates> {\n const client = createClient(this._config)\n if (!client) throw new NetworkError('The wallet must be connected to a provider to read fee rates.')\n const price = await new NearRpc(client).gasPrice()\n return { slow: price, normal: price, fast: (price * 11n) / 10n }\n }\n\n}\n","/**\n * Activity history for NEAR: a `HistorySource` over the nearblocks API\n * (`/v1/account/{id}/txns` receipt rows + `/v1/account/{id}/ft-txns` NEP-141\n * movements, merged by transaction hash), with an optional archival RPC\n * (`EXPERIMENTAL_tx_status`) that makes single-transaction reads exact.\n *\n * nearblocks serializes large yoctoNEAR amounts as JSON numbers; integer\n * literals are kept exact by re-quoting them before `JSON.parse`, values the\n * API already rounded (`7e+23`) stay approximate and are flagged in `raw`.\n * Both lists page by keyset cursor (`id` / `event_index`), merged newest-first.\n * `fetch` + `AbortSignal.timeout` only — Hermes-safe.\n */\nimport type { ChainCall, ChainTransfer, ChainTx, HistoryPage, HistoryQuery, HistorySource } from '@anywalletkit/core'\nimport { fromBase64 } from './rpc.js'\nimport { CAIP2 } from './types.js'\nimport { bigintToNumber } from '@anywalletkit/core'\n\n// ── Public types ─────────────────────────────────────────────────────────────\n\nexport type HistoryFetch = (\n input: string,\n init?: { method?: string; headers?: Record<string, string>; body?: string; signal?: AbortSignal },\n) => Promise<{ ok: boolean; status: number; text(): Promise<string> }>\n\n/** Options for {@link createNearHistory}. */\nexport interface NearHistoryOptions {\n /** nearblocks root. Default `https://api.nearblocks.io` (`https://api-testnet.nearblocks.io` on testnet). */\n nearblocksUrl?: string\n /** nearblocks Bearer key. Keyless use is limited to a few requests per minute. */\n apiKey?: string\n /** Archival JSON-RPC (`https://archival-rpc.mainnet.near.org`). When set, `getTransaction` is refined with exact amounts, fee and NEP-141 events. */\n rpcUrl?: string\n network?: 'mainnet' | 'testnet'\n fetch?: HistoryFetch\n /** nearblocks requests per second. Default 0.1 (6/min) without a key, 5 with one. */\n rateLimit?: number\n /** Per request, ms. Default 15 000. */\n timeoutMs?: number\n}\n\nexport interface NearHistoryRaw {\n /** nearblocks receipt rows of this transaction (account `/txns`). */\n receipts: NearblocksReceiptRow[]\n /** nearblocks NEP-141 rows of this transaction (account `/ft-txns`). */\n ft: NearblocksFtRow[]\n /** `/v1/txns/{hash}` row (single-transaction reads). */\n txn?: NearblocksTxn\n /** `EXPERIMENTAL_tx_status` result when the RPC answered. */\n rpc?: RpcTxStatus\n /** Set when an amount or the fee came from a value nearblocks had already rounded to a double. */\n approximate?: true\n}\n\nexport interface NearChainTx extends ChainTx {\n raw: NearHistoryRaw\n}\n\nexport interface NearHistoryPage extends HistoryPage {\n items: NearChainTx[]\n}\n\n/**\n * NEAR history from the nearblocks API, with an archival RPC for single transactions. Build it with\n * {@link createNearHistory}.\n */\nexport interface NearHistorySource extends HistorySource {\n listActivity(address: string, query?: HistoryQuery): Promise<NearHistoryPage>\n getTransaction(hash: string, address: string): Promise<NearChainTx | undefined>\n}\n\n/** Every configured history backend failed. */\nexport class HistoryUnavailableError extends Error {\n readonly chain: string\n readonly reason: string\n readonly attempts: readonly string[]\n constructor(chain: string, reason: string, attempts: readonly string[] = []) {\n super(`History unavailable for ${chain}: ${reason}`)\n this.name = 'HistoryUnavailableError'\n this.chain = chain\n this.reason = reason\n this.attempts = attempts\n }\n}\n\nconst DEFAULT_LIMIT = 25\nconst MAX_LIMIT = 25\nconst DEFAULT_TIMEOUT_MS = 15_000\n/** NEP-141 convention: 1 yoctoNEAR attached to prove a full-access key; not a payment. */\nconst ONE_YOCTO = 1n\n\n// ── Cursor: per-list keyset positions, base64 JSON ───────────────────────────\n\nexport interface NearHistoryCursor {\n v: 1\n /** `/txns`: `id` of the last consumed row; '' = not started; null = exhausted. */\n tx: string | null\n /** `/ft-txns`: `event_index` of the last consumed row; '' = not started; null = exhausted. */\n ft: string | null\n /**\n * Transactions already emitted that have rows on the next page: a transaction with more receipt\n * rows than a page goes out with the rows that fit, and the rest are consumed without emitting it\n * again (round 3, M13).\n */\n skip?: string[]\n}\n\nconst B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\nfunction b64encode(s: string): string {\n let out = ''\n for (let i = 0; i < s.length; i += 3) {\n const c = [s.charCodeAt(i), s.charCodeAt(i + 1), s.charCodeAt(i + 2)]\n for (const x of c) if (x > 0xff) throw new Error('cursor must be ASCII')\n const n = (c[0]! << 16) | ((c[1]! || 0) << 8) | (c[2]! || 0)\n out += B64[(n >> 18) & 63]! + B64[(n >> 12) & 63]! + (Number.isNaN(c[1]) ? '=' : B64[(n >> 6) & 63]!) + (Number.isNaN(c[2]) ? '=' : B64[n & 63]!)\n }\n return out\n}\n\nfunction b64decode(s: string): string {\n const clean = s.replace(/[^A-Za-z0-9+/]/g, '')\n let out = ''\n for (let i = 0; i < clean.length; i += 4) {\n const c = [0, 1, 2, 3].map((k) => (i + k < clean.length ? B64.indexOf(clean[i + k]!) : -1))\n if (c[0]! < 0 || c[1]! < 0) throw new Error('bad base64')\n const n = (c[0]! << 18) | (c[1]! << 12) | ((c[2]! < 0 ? 0 : c[2]!) << 6) | (c[3]! < 0 ? 0 : c[3]!)\n out += String.fromCharCode((n >> 16) & 0xff)\n if (c[2]! >= 0) out += String.fromCharCode((n >> 8) & 0xff)\n if (c[3]! >= 0) out += String.fromCharCode(n & 0xff)\n }\n return out\n}\n\nexport function encodeCursor(c: NearHistoryCursor): string {\n return b64encode(JSON.stringify(c))\n}\n\nexport function decodeCursor(s: string): NearHistoryCursor {\n let parsed: unknown\n try {\n parsed = JSON.parse(b64decode(s))\n } catch {\n throw new Error('@anywalletkit/wallet-near: malformed history cursor')\n }\n const c = parsed as Partial<NearHistoryCursor> | null\n const ok = (v: unknown) => v === null || typeof v === 'string'\n if (!c || c.v !== 1 || !ok(c.tx) || !ok(c.ft)) throw new Error('@anywalletkit/wallet-near: malformed history cursor')\n if (c.skip !== undefined && (!Array.isArray(c.skip) || c.skip.length > 4 || !c.skip.every((h) => typeof h === 'string'))) throw new Error('@anywalletkit/wallet-near: malformed history cursor')\n return { v: 1, tx: c.tx as string | null, ft: c.ft as string | null, ...(c.skip?.length ? { skip: c.skip } : {}) }\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nclass TokenBucket {\n private tokens: number\n private last = Date.now()\n private chain: Promise<void> = Promise.resolve()\n constructor(private readonly rate: number, private readonly burst = Math.max(2, Math.ceil(rate))) {\n this.tokens = burst\n }\n acquire(): Promise<void> {\n const next = this.chain.then(() => this.take())\n this.chain = next.catch(() => undefined)\n return next\n }\n private refill(): void {\n const now = Date.now()\n this.tokens = Math.min(this.burst, this.tokens + ((now - this.last) / 1000) * this.rate)\n this.last = now\n }\n private async take(): Promise<void> {\n this.refill()\n if (this.tokens >= 1) {\n this.tokens -= 1\n return\n }\n await new Promise((r) => setTimeout(r, Math.ceil(((1 - this.tokens) / this.rate) * 1000)))\n this.refill()\n this.tokens = Math.max(0, this.tokens - 1)\n }\n}\n\nfunction timeoutSignal(ms: number): AbortSignal | undefined {\n const ctor = (globalThis as { AbortSignal?: { timeout?: (ms: number) => AbortSignal } }).AbortSignal\n return typeof ctor?.timeout === 'function' ? ctor.timeout(ms) : undefined\n}\n\n/**\n * `JSON.parse` that keeps integer literals of 16+ digits exact by quoting them\n * first (outside strings only). Numbers with a fraction or exponent are left\n * to the double parser — nearblocks already rounded those.\n */\nexport function parseJsonPreservingBigInts(text: string): unknown {\n let out = ''\n let i = 0\n let inString = false\n while (i < text.length) {\n const ch = text[i]!\n if (inString) {\n out += ch\n if (ch === '\\\\') {\n out += text[i + 1] ?? ''\n i += 2\n continue\n }\n if (ch === '\"') inString = false\n i++\n continue\n }\n if (ch === '\"') {\n inString = true\n out += ch\n i++\n continue\n }\n if (ch === '-' || (ch >= '0' && ch <= '9')) {\n let j = i\n if (text[j] === '-') j++\n while (j < text.length && text[j]! >= '0' && text[j]! <= '9') j++\n const next = text[j]\n const isInteger = next !== '.' && next !== 'e' && next !== 'E'\n if (isInteger) {\n const tok = text.slice(i, j)\n out += tok.replace('-', '').length >= 16 ? `\"${tok}\"` : tok\n i = j\n continue\n }\n while (j < text.length && /[0-9.eE+-]/.test(text[j]!)) j++\n out += text.slice(i, j)\n i = j\n continue\n }\n out += ch\n i++\n }\n return JSON.parse(out)\n}\n\n/** Number / decimal string → bigint; `approx` is set when a double had to be used. */\nfunction big(v: unknown, approx: { value: boolean }): bigint | undefined {\n if (typeof v === 'bigint') return v\n if (typeof v === 'string' && /^-?\\d+$/.test(v)) return BigInt(v)\n if (typeof v === 'number' && Number.isFinite(v)) {\n if (!Number.isSafeInteger(v)) approx.value = true\n return BigInt(Math.trunc(v))\n }\n return undefined\n}\n\nconst nsToSeconds = (ts: unknown): number => {\n if (typeof ts === 'string' && /^\\d+$/.test(ts)) return bigintToNumber(BigInt(ts) / 1_000_000_000n)\n if (typeof ts === 'number') return Math.floor(ts / 1e9)\n return 0\n}\n\n// ── nearblocks shapes ────────────────────────────────────────────────────────\n\nexport interface NearblocksAction {\n action: string\n method?: string | null\n deposit?: number | string | null\n args?: string | null\n}\nexport interface NearblocksReceiptRow {\n id: string\n receipt_id?: string\n predecessor_account_id: string\n receiver_account_id: string\n receipt_kind?: string\n transaction_hash: string\n /** ns, decimal string (the transaction's block). */\n block_timestamp: string | number\n block?: { block_height?: number }\n actions?: NearblocksAction[] | null\n outcomes?: { status?: boolean | null }\n outcomes_agg?: { transaction_fee?: number | string | null }\n}\nexport interface NearblocksFtRow {\n event_index: string\n affected_account_id: string\n involved_account_id?: string | null\n /** Signed, decimal string (exact). */\n delta_amount: string | number\n cause?: string\n transaction_hash: string\n block_timestamp: string | number\n block?: { block_height?: number }\n outcomes?: { status?: boolean | null }\n ft?: { contract: string; symbol?: string | null; decimals?: number | null }\n ft_meta?: { contract: string; symbol?: string | null; decimals?: number | null }\n}\nexport interface NearblocksTxn {\n transaction_hash: string\n block_timestamp: string | number\n signer_account_id: string\n receiver_account_id: string\n block?: { block_height?: number }\n actions?: NearblocksAction[] | null\n outcomes?: { status?: boolean | null }\n outcomes_agg?: { transaction_fee?: number | string | null }\n receipts?: Array<{ fts?: Array<Pick<NearblocksFtRow, 'affected_account_id' | 'involved_account_id' | 'delta_amount' | 'cause' | 'ft_meta'>> }>\n}\n\nfunction ftTransfer(row: Pick<NearblocksFtRow, 'affected_account_id' | 'involved_account_id' | 'delta_amount' | 'cause' | 'ft' | 'ft_meta'>, approx: { value: boolean }): ChainTransfer | undefined {\n const meta = row.ft ?? row.ft_meta\n if (!meta?.contract) return undefined\n const delta = big(row.delta_amount, approx)\n if (delta === undefined || delta === 0n) return undefined\n const other = row.involved_account_id ?? meta.contract\n const t: ChainTransfer = { token: meta.contract, from: delta < 0n ? row.affected_account_id : other, to: delta < 0n ? other : row.affected_account_id, amount: delta < 0n ? -delta : delta, standard: 'nep141' }\n if (typeof meta.symbol === 'string') t.symbol = meta.symbol\n if (typeof meta.decimals === 'number') t.decimals = meta.decimals\n return t\n}\n\ninterface ActionFold {\n transfers: ChainTransfer[]\n programs: string[]\n call?: ChainCall\n}\n\n/** Fold nearblocks actions of one receipt (predecessor → receiver) into transfers / call; the first non-transfer action becomes the call. */\nfunction foldActions(actions: NearblocksAction[] | null | undefined, from: string, to: string, fold: ActionFold, approx: { value: boolean }): void {\n for (const a of actions ?? []) {\n const deposit = big(a.deposit, approx) ?? 0n\n if (a.action === 'TRANSFER') {\n if (deposit > 0n) fold.transfers.push({ token: null, from, to, amount: deposit })\n continue\n }\n if (a.action === 'DELEGATE_ACTION') continue\n const method = a.action === 'FUNCTION_CALL' ? (a.method ?? 'function_call') : a.action.toLowerCase()\n fold.programs.push(method)\n if (a.action === 'FUNCTION_CALL' && deposit > 0n && deposit !== ONE_YOCTO) fold.transfers.push({ token: null, from, to, amount: deposit })\n fold.call ??= { to, method, programs: fold.programs }\n }\n}\n\n/** One transaction from its nearblocks receipt rows + NEP-141 rows. */\nexport function mapNearblocksGroup(chain: string, address: string, receipts: NearblocksReceiptRow[], ft: NearblocksFtRow[]): NearChainTx {\n const approx = { value: false }\n const rows = [...receipts].sort((a, b) => (BigInt(a.id) < BigInt(b.id) ? -1 : BigInt(a.id) > BigInt(b.id) ? 1 : 0))\n const real = rows.filter((r) => r.predecessor_account_id !== 'system' && (r.receipt_kind ?? 'ACTION') === 'ACTION')\n const fold: ActionFold = { transfers: [], programs: [] }\n // The receipt addressed to someone else carries the call that matters; a receipt to ourselves (delegate wrapper, refund) is secondary.\n const ordered = [...real.filter((r) => r.receiver_account_id !== address), ...real.filter((r) => r.receiver_account_id === address)]\n for (const r of ordered) foldActions(r.actions, r.predecessor_account_id, r.receiver_account_id, fold, approx)\n for (const f of ft) {\n const t = ftTransfer(f, approx)\n if (t) fold.transfers.push(t)\n }\n const head = ordered[0] ?? rows[0] ?? ft[0]\n const hash = head?.transaction_hash ?? ''\n const from = ordered[0]?.predecessor_account_id ?? (ft.length ? (ftTransfer(ft[0]!, approx)?.from ?? address) : address)\n const involves = (t: ChainTransfer) => t.from === address || t.to === address\n const primary = fold.transfers.find((t) => t.token !== null && involves(t)) ?? fold.transfers.find(involves) ?? fold.transfers[0]\n const to = fold.call?.to ?? primary?.to ?? ordered[0]?.receiver_account_id ?? null\n let nativeValue = 0n\n for (const t of fold.transfers) if (t.token === null && t.from === from) nativeValue += t.amount\n const statuses = [...rows.map((r) => r.outcomes?.status), ...ft.map((r) => r.outcomes?.status)].filter((s): s is boolean => typeof s === 'boolean')\n const status: ChainTx['status'] = statuses.length === 0 ? 'confirmed' : statuses.every(Boolean) ? 'confirmed' : 'failed'\n const feeSrc = rows.find((r) => r.outcomes_agg?.transaction_fee != null)?.outcomes_agg?.transaction_fee\n const fee = big(feeSrc, approx)\n const heights = [...rows, ...ft].map((r) => r.block?.block_height).filter((h): h is number => typeof h === 'number')\n const raw: NearHistoryRaw = { receipts: rows, ft }\n if (approx.value) raw.approximate = true\n const out: NearChainTx = {\n chain, hash, time: nsToSeconds(head?.block_timestamp), status, address, from, to, nativeValue, transfers: fold.transfers, raw,\n }\n if (fee !== undefined) out.fee = fee\n if (fold.call) out.call = fold.call\n if (heights.length) out.block = BigInt(Math.min(...heights))\n return out\n}\n\n/** `/v1/txns/{hash}`: transaction-level actions, signer / receiver, approximate NEP-141 deltas from the receipts. */\nexport function mapNearblocksTxn(chain: string, address: string, txn: NearblocksTxn): NearChainTx {\n const approx = { value: false }\n const fold: ActionFold = { transfers: [], programs: [] }\n foldActions(txn.actions, txn.signer_account_id, txn.receiver_account_id, fold, approx)\n for (const r of txn.receipts ?? []) {\n for (const f of r.fts ?? []) {\n // nearblocks lists both sides of a movement; keep the one whose affected account is in the pair's \"from\" position.\n const delta = big(f.delta_amount, approx)\n if (delta === undefined || delta >= 0n) continue\n const t = ftTransfer(f, approx)\n if (t) fold.transfers.push(t)\n }\n }\n const from = txn.signer_account_id\n const involves = (t: ChainTransfer) => t.from === address || t.to === address\n const primary = fold.transfers.find((t) => t.token !== null && involves(t)) ?? fold.transfers.find(involves) ?? fold.transfers[0]\n let nativeValue = 0n\n for (const t of fold.transfers) if (t.token === null && t.from === from) nativeValue += t.amount\n const fee = big(txn.outcomes_agg?.transaction_fee, approx)\n const raw: NearHistoryRaw = { receipts: [], ft: [], txn }\n if (approx.value) raw.approximate = true\n const out: NearChainTx = {\n chain, hash: txn.transaction_hash, time: nsToSeconds(txn.block_timestamp), status: txn.outcomes?.status === false ? 'failed' : 'confirmed', address, from,\n to: fold.call?.to ?? primary?.to ?? txn.receiver_account_id, nativeValue, transfers: fold.transfers, raw,\n }\n if (fee !== undefined) out.fee = fee\n if (fold.call) out.call = fold.call\n if (typeof txn.block?.block_height === 'number') out.block = BigInt(txn.block.block_height)\n return out\n}\n\n// ── RPC refinement ───────────────────────────────────────────────────────────\n\nexport interface RpcAction {\n Transfer?: { deposit: string }\n FunctionCall?: { method_name: string; args: string; deposit: string; gas?: number }\n Delegate?: { delegate_action: { sender_id: string; receiver_id: string; actions: RpcAction[] } }\n [other: string]: unknown\n}\nexport interface RpcTxStatus {\n status?: Record<string, unknown>\n transaction?: { signer_id: string; receiver_id: string; hash?: string; actions?: RpcAction[] }\n transaction_outcome?: { outcome?: { tokens_burnt?: string; executor_id?: string; logs?: string[] } }\n receipts_outcome?: Array<{ outcome?: { executor_id?: string; tokens_burnt?: string; logs?: string[]; status?: Record<string, unknown> } }>\n}\n\nconst utf8 = (bytes: Uint8Array): string => {\n let s = ''\n for (let i = 0; i < bytes.length; ) {\n const b0 = bytes[i++]!\n let cp: number\n if (b0 < 0x80) cp = b0\n else if (b0 < 0xe0) cp = ((b0 & 0x1f) << 6) | (bytes[i++]! & 0x3f)\n else if (b0 < 0xf0) cp = ((b0 & 0x0f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n else cp = ((b0 & 0x07) << 18) | ((bytes[i++]! & 0x3f) << 12) | ((bytes[i++]! & 0x3f) << 6) | (bytes[i++]! & 0x3f)\n s += String.fromCodePoint(cp)\n }\n return s\n}\n\n/** Rebuild transfers / call / fee / status exactly from an `EXPERIMENTAL_tx_status` result. */\nexport function mapRpcTxStatus(chain: string, address: string, r: RpcTxStatus, base?: NearChainTx): NearChainTx {\n const tx = r.transaction\n const transfers: ChainTransfer[] = []\n const programs: string[] = []\n let call: ChainCall | undefined\n const walk = (actions: RpcAction[] | undefined, from: string, to: string) => {\n for (const a of actions ?? []) {\n if (a.Transfer) {\n const d = BigInt(a.Transfer.deposit)\n if (d > 0n) transfers.push({ token: null, from, to, amount: d })\n } else if (a.FunctionCall) {\n const d = BigInt(a.FunctionCall.deposit || '0')\n programs.push(a.FunctionCall.method_name)\n if (d > 0n && d !== ONE_YOCTO) transfers.push({ token: null, from, to, amount: d })\n call ??= { to, method: a.FunctionCall.method_name, programs }\n } else if (a.Delegate) {\n walk(a.Delegate.delegate_action.actions, a.Delegate.delegate_action.sender_id, a.Delegate.delegate_action.receiver_id)\n } else {\n const name = Object.keys(a)[0]\n if (name) {\n const method = name.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n programs.push(method)\n call ??= { to, method, programs }\n }\n }\n }\n }\n if (tx) walk(tx.actions, tx.signer_id, tx.receiver_id)\n let fee = 0n\n const burnt = r.transaction_outcome?.outcome?.tokens_burnt\n if (burnt) fee += BigInt(burnt)\n let failed = false\n for (const ro of r.receipts_outcome ?? []) {\n const o = ro.outcome\n if (!o) continue\n if (o.tokens_burnt) fee += BigInt(o.tokens_burnt)\n if (o.status && 'Failure' in o.status) failed = true\n const token = o.executor_id\n for (const log of o.logs ?? []) {\n if (!token) continue\n const legacy = /^Transfer (\\d+) from (\\S+) to (\\S+)$/.exec(log)\n if (legacy) {\n transfers.push({ token, from: legacy[2]!, to: legacy[3]!, amount: BigInt(legacy[1]!), standard: 'nep141' })\n continue\n }\n if (!log.startsWith('EVENT_JSON:')) continue\n let ev: { standard?: string; event?: string; data?: Array<{ old_owner_id?: string; new_owner_id?: string; owner_id?: string; amount?: string }> }\n try {\n ev = JSON.parse(log.slice('EVENT_JSON:'.length)) as typeof ev\n } catch {\n continue\n }\n if (ev.standard !== 'nep141') continue\n for (const d of ev.data ?? []) {\n if (!d.amount || !/^\\d+$/.test(d.amount)) continue\n if (ev.event === 'ft_transfer' && d.old_owner_id && d.new_owner_id) transfers.push({ token, from: d.old_owner_id, to: d.new_owner_id, amount: BigInt(d.amount), standard: 'nep141' })\n else if (ev.event === 'ft_mint' && d.owner_id) transfers.push({ token, from: token, to: d.owner_id, amount: BigInt(d.amount), standard: 'nep141' })\n else if (ev.event === 'ft_burn' && d.owner_id) transfers.push({ token, from: d.owner_id, to: token, amount: BigInt(d.amount), standard: 'nep141' })\n }\n }\n }\n if (r.status && 'Failure' in r.status) failed = true\n // Keep symbol / decimals nearblocks knew for the same token.\n for (const t of transfers) {\n const known = base?.transfers.find((x) => x.token === t.token && (x.symbol !== undefined || x.decimals !== undefined))\n if (known?.symbol !== undefined) t.symbol = known.symbol\n if (known?.decimals !== undefined) t.decimals = known.decimals\n }\n const from = tx?.signer_id ?? base?.from ?? address\n const involves = (t: ChainTransfer) => t.from === address || t.to === address\n const primary = transfers.find((t) => t.token !== null && involves(t)) ?? transfers.find(involves) ?? transfers[0]\n let nativeValue = 0n\n for (const t of transfers) if (t.token === null && t.from === from) nativeValue += t.amount\n const raw: NearHistoryRaw = { ...(base?.raw ?? { receipts: [], ft: [] }), rpc: r }\n delete raw.approximate\n const out: NearChainTx = {\n chain, hash: tx?.hash ?? base?.hash ?? '', time: base?.time ?? 0, status: failed ? 'failed' : 'confirmed', address, from,\n to: call?.to ?? primary?.to ?? tx?.receiver_id ?? base?.to ?? null, nativeValue, transfers, fee, raw,\n }\n if (call) out.call = call\n if (base?.block !== undefined) out.block = base.block\n return out\n}\n\n/** Decode `FunctionCall.args` (base64 JSON) — exported for callers that want the arguments of a call. */\nexport function decodeFunctionCallArgs(args: string): unknown {\n try {\n return JSON.parse(utf8(fromBase64(args)))\n } catch {\n return undefined\n }\n}\n\n// ── Source ───────────────────────────────────────────────────────────────────\n\n/** Nearblocks link for a transaction. */\nexport function nearExplorerTxUrl(hash: string, network: 'mainnet' | 'testnet' = 'mainnet'): string {\n return `https://${network === 'testnet' ? 'testnet.' : ''}nearblocks.io/txns/${hash}`\n}\n\n/** A history source for NEAR accounts backed by nearblocks. */\nexport function createNearHistory(options: NearHistoryOptions = {}): NearHistorySource {\n const network = options.network ?? 'mainnet'\n const chain = CAIP2[network] ?? CAIP2.mainnet!\n const base = (options.nearblocksUrl ?? (network === 'testnet' ? 'https://api-testnet.nearblocks.io' : 'https://api.nearblocks.io')).replace(/\\/+$/, '')\n const fetchFn: HistoryFetch = options.fetch ?? ((globalThis as { fetch?: HistoryFetch }).fetch as HistoryFetch)\n if (typeof fetchFn !== 'function') throw new Error('@anywalletkit/wallet-near: no global fetch; pass `fetch` in the options')\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS\n const bucket = new TokenBucket(options.rateLimit ?? (options.apiKey ? 5 : 0.1))\n\n async function get(path: string): Promise<unknown> {\n await bucket.acquire()\n const url = `${base}${path}`\n let res: Awaited<ReturnType<HistoryFetch>>\n try {\n const signal = timeoutSignal(timeoutMs)\n res = await fetchFn(url, { headers: { accept: 'application/json', ...(options.apiKey ? { authorization: `Bearer ${options.apiKey}` } : {}) }, ...(signal ? { signal } : {}) })\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n throw new HistoryUnavailableError(chain, `${path}: ${msg}`, [`nearblocks: ${msg}`])\n }\n const text = await res.text()\n let body: unknown\n try {\n body = parseJsonPreservingBigInts(text)\n } catch {\n body = undefined\n }\n if (!res.ok) {\n const msg = (body as { message?: string } | undefined)?.message ?? `HTTP ${res.status}`\n throw new HistoryUnavailableError(chain, `${path}: ${msg}`, [`nearblocks: HTTP ${res.status} ${msg}`])\n }\n return body\n }\n\n async function rpcTxStatus(hash: string, signer: string): Promise<RpcTxStatus | undefined> {\n if (!options.rpcUrl) return undefined\n const signal = timeoutSignal(timeoutMs)\n const res = await fetchFn(options.rpcUrl, {\n method: 'POST', headers: { 'content-type': 'application/json', accept: 'application/json' },\n body: JSON.stringify({ jsonrpc: '2.0', id: '1', method: 'EXPERIMENTAL_tx_status', params: { tx_hash: hash, sender_account_id: signer, wait_until: 'NONE' } }),\n ...(signal ? { signal } : {}),\n })\n const json = JSON.parse(await res.text()) as { result?: RpcTxStatus; error?: unknown }\n if (!res.ok || json.error || !json.result) return undefined\n return json.result\n }\n\n return {\n chain,\n\n async listActivity(address: string, query: HistoryQuery = {}): Promise<NearHistoryPage> {\n const limit = Math.min(MAX_LIMIT, Math.max(1, Math.floor(query.limit ?? DEFAULT_LIMIT)))\n const cursor = query.cursor ? decodeCursor(query.cursor) : { v: 1 as const, tx: '', ft: '' }\n const acct = encodeURIComponent(address)\n // Receipt rows come ~2 per transaction (the call and its refund), so the receipt list is asked for twice the limit.\n // Each list is asked for one row more than it uses: that row tells whether the page's last transaction goes on (round 3, M13).\n const perPage = Math.min(MAX_LIMIT - 1, limit * 2)\n const ftPer = Math.min(MAX_LIMIT - 1, limit)\n const txFetched: NearblocksReceiptRow[] = cursor.tx === null ? [] : (((await get(`/v1/account/${acct}/txns?per_page=${perPage + 1}&order=desc${cursor.tx ? `&cursor=${encodeURIComponent(cursor.tx)}` : ''}`)) as { txns?: NearblocksReceiptRow[] } | undefined)?.txns ?? [])\n const ftFetched: NearblocksFtRow[] = cursor.ft === null ? [] : (((await get(`/v1/account/${acct}/ft-txns?per_page=${ftPer + 1}&order=desc${cursor.ft ? `&cursor=${encodeURIComponent(cursor.ft)}` : ''}`)) as { txns?: NearblocksFtRow[] } | undefined)?.txns ?? [])\n // Rows of a transaction an earlier page already emitted (it had more rows than a page) are consumed silently.\n const skip = new Set(cursor.skip ?? [])\n const leading = (rows: Array<{ transaction_hash: string }>) => { let n = 0; while (n < rows.length && skip.has(rows[n]!.transaction_hash)) n++; return n }\n const txSkipped = leading(txFetched)\n const ftSkipped = leading(ftFetched)\n const txAll = txFetched.slice(txSkipped)\n const ftAll = ftFetched.slice(ftSkipped)\n const txRows = txAll.slice(0, perPage)\n const ftRows = ftAll.slice(0, ftPer)\n // A list that came back full goes on past this page, whatever was skipped.\n const txMore = txFetched.length > perPage\n const ftMore = ftFetched.length > ftPer\n // Global order by the transaction's block time; emit the top `limit` hashes plus ties, so each list's consumed rows are a prefix.\n const key = (r: { block_timestamp: string | number }) => BigInt(typeof r.block_timestamp === 'string' ? r.block_timestamp : Math.trunc(r.block_timestamp))\n const all = [...txRows.map((r) => ({ k: key(r), h: r.transaction_hash })), ...ftRows.map((r) => ({ k: key(r), h: r.transaction_hash }))]\n all.sort((a, b) => (a.k > b.k ? -1 : a.k < b.k ? 1 : 0))\n // A transaction whose rows go on past the page (the lookahead row is the same transaction) waits\n // for the next page, whole, so it is emitted once (round 3, M13). When it is all this page has\n // (more rows than a page), it goes out with the rows that fit and the next cursor skips the rest.\n const cut = new Set<string>()\n // The lookahead row when there is one; after skipped rows there may be none, and the last transaction may go on.\n const goesOnPast = (rows: Array<{ transaction_hash: string }>, all: Array<{ transaction_hash: string }>, per: number, more: boolean) => {\n const last = rows[rows.length - 1]\n if (!more || !last) return\n const next = all[per]\n if (next === undefined || next.transaction_hash === last.transaction_hash) cut.add(last.transaction_hash)\n }\n goesOnPast(txRows, txAll, perPage, txMore)\n goesOnPast(ftRows, ftAll, ftPer, ftMore)\n const partial = all.length > 0 && all.every((e) => cut.has(e.h)) ? [...cut] : []\n if (partial.length) cut.clear()\n const chosen = new Set<string>()\n let boundary: bigint | undefined\n for (const e of all) {\n if (chosen.has(e.h) || cut.has(e.h)) continue\n if (chosen.size >= limit && boundary !== undefined && e.k < boundary) break\n chosen.add(e.h)\n if (chosen.size === limit) boundary = e.k\n }\n // Consumed = the skipped rows, then the prefix of each list whose hashes were chosen; a list is\n // exhausted once nothing lies past the page and it was fully consumed.\n const consume = <T extends { transaction_hash: string }>(fetched: T[], skipped: number, rows: T[], more: boolean, wasAt: string | null, pos: (r: T) => string): { used: T[]; next: string | null } => {\n if (wasAt === null) return { used: [], next: null }\n let n = 0\n while (n < rows.length && chosen.has(rows[n]!.transaction_hash)) n++\n const used = rows.slice(0, n)\n if (!more && n === rows.length) return { used, next: null }\n const last = n > 0 ? used[n - 1] : skipped > 0 ? fetched[skipped - 1] : undefined\n return { used, next: last ? pos(last) : wasAt }\n }\n const txC = consume(txFetched, txSkipped, txRows, txMore, cursor.tx, (r) => r.id)\n const ftC = consume(ftFetched, ftSkipped, ftRows, ftMore, cursor.ft, (r) => r.event_index)\n const nextTx = txC.next, nextFt = ftC.next\n const groups = new Map<string, { receipts: NearblocksReceiptRow[]; ft: NearblocksFtRow[] }>()\n for (const h of chosen) groups.set(h, { receipts: [], ft: [] })\n for (const r of txC.used) groups.get(r.transaction_hash)!.receipts.push(r)\n for (const r of ftC.used) groups.get(r.transaction_hash)!.ft.push(r)\n let items = [...groups.entries()].map(([, g]) => mapNearblocksGroup(chain, address, g.receipts, g.ft)).filter((t) => t.hash)\n items.sort((a, b) => b.time - a.time)\n let more = nextTx !== null || nextFt !== null\n if (query.since !== undefined) {\n const since = query.since\n if (items.some((t) => t.time < since)) more = false\n items = items.filter((t) => t.time >= since)\n }\n const page: NearHistoryPage = { items }\n // Emitted in part, or skipped through to the page's end: its remaining rows come next and are skipped.\n const goesOn = (fetched: Array<{ transaction_hash: string }>, skipped: number, rows: unknown[]) => (rows.length === 0 && skipped > 0 && skipped === fetched.length ? [fetched[skipped - 1]!.transaction_hash] : [])\n const nextSkip = [...new Set([...partial, ...goesOn(txFetched, txSkipped, txRows), ...goesOn(ftFetched, ftSkipped, ftRows)])]\n if (more) page.cursor = encodeCursor({ v: 1, tx: nextTx, ft: nextFt, ...(nextSkip.length ? { skip: nextSkip } : {}) })\n return page\n },\n\n async getTransaction(hash: string, address: string): Promise<NearChainTx | undefined> {\n const body = (await get(`/v1/txns/${encodeURIComponent(hash)}`)) as { txns?: NearblocksTxn[] } | undefined\n const txn = body?.txns?.[0]\n if (!txn) return undefined\n const base = mapNearblocksTxn(chain, address, txn)\n if (!options.rpcUrl) return base\n try {\n const r = await rpcTxStatus(hash, txn.signer_account_id)\n return r ? mapRpcTxStatus(chain, address, r, base) : base\n } catch {\n return base\n }\n },\n\n explorerTxUrl(hash: string): string {\n return nearExplorerTxUrl(hash, network)\n },\n }\n}\n"],"mappings":"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","names":["import_core","fetch","import_core","import_sha2","import_core","import_core","import_core","DEFAULT_TIMEOUT_MS","ONE_YOCTO","timeoutSignal","utf8","from","all","more","base"]}