@qorechain/evm 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/dist/index.cjs +77 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +130 -5
- package/dist/index.d.ts +130 -5
- package/dist/index.js +72 -4
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/accounts.ts","../src/abi.ts","../src/erc20.ts","../src/erc721.ts","../src/erc1155.ts","../src/fees.ts","../src/contracts.ts","../src/precompiles.ts","../src/wallet.ts","../src/errors.ts","../src/subscribe.ts","../src/index.ts"],"names":["name","symbol","balanceOf","metadata","approve","isApprovedForAll","setApprovalForAll","safeTransferFrom","defineChain","createWalletClient","data","createPublicClient"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Client factory for the QoreChain EVM Engine.\n *\n * This is a thin convenience layer over viem: it builds a viem `Chain` object\n * from the network's EVM endpoints, resolves the numeric EVM chain id (either\n * supplied explicitly or auto-detected via `eth_chainId`), and returns ready-to-\n * use viem public and wallet clients.\n *\n * The numeric EVM chain id for QoreChain networks is intentionally not hardcoded\n * here: it is auto-detected at connect time unless the caller provides it.\n */\n\nimport {\n createPublicClient,\n createWalletClient,\n defineChain,\n http,\n type Account,\n type Chain,\n type PublicClient,\n type Transport,\n type WalletClient,\n} from \"viem\";\n\n/** Subset of a qorechain-sdk network's endpoints relevant to the EVM Engine. */\nexport interface EvmEndpoints {\n /** EVM JSON-RPC HTTP endpoint. */\n evmRpc: string;\n /** EVM JSON-RPC WebSocket endpoint (optional). */\n evmWs?: string;\n}\n\n/** Options for {@link createEvmClient}. */\nexport interface CreateEvmClientOptions {\n /** EVM JSON-RPC HTTP URL. Mutually exclusive with `endpoints`. */\n rpcUrl?: string;\n /** EVM JSON-RPC WebSocket URL. */\n wsUrl?: string;\n /** A qorechain-sdk network endpoints object (uses `evmRpc`/`evmWs`). */\n endpoints?: EvmEndpoints;\n /**\n * Numeric EVM chain id. If omitted, it is auto-detected via `eth_chainId`.\n *\n * The canonical chain id for QoreChain networks is not pinned in this package\n * on purpose — always detect it, or pass it explicitly here.\n */\n chainId?: number;\n /**\n * Native currency decimals for EVM display. Defaults to 18 (the EVM\n * convention). Note: this is the EVM-side representation of QOR and is\n * distinct from the Cosmos `uqor` base denomination (10^6). Confirm the\n * canonical wrapped/native EVM decimals against your target node.\n */\n decimals?: number;\n /**\n * Custom viem transport. When provided it is used instead of an HTTP\n * transport built from the resolved RPC URL — primarily for testing.\n */\n transport?: Transport;\n}\n\n/** A configured QoreChain EVM client bundle. */\nexport interface EvmClient {\n /** viem public (read) client bound to the resolved chain + transport. */\n publicClient: PublicClient;\n /** Build a viem wallet (write) client for the given account. */\n getWalletClient: (account: Account) => WalletClient;\n /** The viem `Chain` object describing the connected network. */\n chain: Chain;\n /** Return the resolved numeric EVM chain id. */\n getChainId: () => Promise<number>;\n}\n\nfunction resolveRpcUrl(opts: CreateEvmClientOptions): string {\n const url = opts.rpcUrl ?? opts.endpoints?.evmRpc;\n if (!url) {\n throw new Error(\"createEvmClient: provide `rpcUrl` or `endpoints.evmRpc`\");\n }\n return url;\n}\n\nfunction resolveWsUrl(opts: CreateEvmClientOptions): string | undefined {\n return opts.wsUrl ?? opts.endpoints?.evmWs;\n}\n\n/**\n * Create a QoreChain EVM client bundle.\n *\n * Auto-detects the EVM chain id via `eth_chainId` unless `chainId` is supplied.\n */\nexport async function createEvmClient(\n opts: CreateEvmClientOptions,\n): Promise<EvmClient> {\n const rpcUrl = resolveRpcUrl(opts);\n const wsUrl = resolveWsUrl(opts);\n const transport: Transport = opts.transport ?? http(rpcUrl);\n const decimals = opts.decimals ?? 18;\n\n let chainId = opts.chainId;\n if (chainId === undefined) {\n // Auto-detect via a transient public client (no chain bound yet).\n const probe = createPublicClient({ transport });\n chainId = await probe.getChainId();\n }\n\n const chain = defineChain({\n id: chainId,\n name: \"QoreChain EVM\",\n nativeCurrency: { name: \"QOR\", symbol: \"QOR\", decimals },\n rpcUrls: {\n default: {\n http: [rpcUrl],\n ...(wsUrl ? { webSocket: [wsUrl] } : {}),\n },\n },\n });\n\n const publicClient = createPublicClient({ chain, transport });\n\n const getWalletClient = (account: Account): WalletClient =>\n createWalletClient({ account, chain, transport });\n\n return {\n publicClient,\n getWalletClient,\n chain,\n getChainId: async () => chainId,\n };\n}\n","/**\n * Account helpers for the QoreChain EVM Engine.\n *\n * These re-expose viem's account utilities so callers don't need a second import\n * path. `@qorechain/sdk`'s `deriveEvmAccount` returns a `privateKey` you can pass\n * straight into {@link evmAccountFromPrivateKey}.\n */\n\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport type { Hex, PrivateKeyAccount } from \"viem\";\n\n/**\n * Create a viem account from a `0x`-prefixed private key.\n *\n * Pair with `@qorechain/sdk`'s `deriveEvmAccount(mnemonic)`, which provides the\n * `privateKey` derived for the EVM coin type.\n */\nexport function evmAccountFromPrivateKey(privateKey: Hex): PrivateKeyAccount {\n return privateKeyToAccount(privateKey);\n}\n","/**\n * Bundled ABIs used by the QoreChain EVM adapter.\n *\n * These are declared `as const` so viem can infer fully typed argument and\n * return types from them. The QoreChain precompile ABIs mirror the chain's\n * published Solidity interfaces exactly.\n */\n\n/** Minimal ERC-20 ABI covering the helpers this package exposes. */\nexport const ERC20_ABI = [\n {\n type: \"function\",\n name: \"name\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"symbol\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"decimals\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint8\" }],\n },\n {\n type: \"function\",\n name: \"totalSupply\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"balanceOf\",\n stateMutability: \"view\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"allowance\",\n stateMutability: \"view\",\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"transfer\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"approve\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"event\",\n name: \"Transfer\",\n inputs: [\n { indexed: true, name: \"from\", type: \"address\" },\n { indexed: true, name: \"to\", type: \"address\" },\n { indexed: false, name: \"value\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"Approval\",\n inputs: [\n { indexed: true, name: \"owner\", type: \"address\" },\n { indexed: true, name: \"spender\", type: \"address\" },\n { indexed: false, name: \"value\", type: \"uint256\" },\n ],\n },\n] as const;\n\n/** Minimal ERC-721 ABI covering the helpers this package exposes. */\nexport const ERC721_ABI = [\n {\n type: \"function\",\n name: \"name\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"symbol\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"balanceOf\",\n stateMutability: \"view\",\n inputs: [{ name: \"owner\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"ownerOf\",\n stateMutability: \"view\",\n inputs: [{ name: \"tokenId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n type: \"function\",\n name: \"tokenURI\",\n stateMutability: \"view\",\n inputs: [{ name: \"tokenId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"getApproved\",\n stateMutability: \"view\",\n inputs: [{ name: \"tokenId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n type: \"function\",\n name: \"isApprovedForAll\",\n stateMutability: \"view\",\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"operator\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"approve\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"setApprovalForAll\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"operator\", type: \"address\" },\n { name: \"approved\", type: \"bool\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"transferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n { name: \"data\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n type: \"event\",\n name: \"Transfer\",\n inputs: [\n { indexed: true, name: \"from\", type: \"address\" },\n { indexed: true, name: \"to\", type: \"address\" },\n { indexed: true, name: \"tokenId\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"Approval\",\n inputs: [\n { indexed: true, name: \"owner\", type: \"address\" },\n { indexed: true, name: \"approved\", type: \"address\" },\n { indexed: true, name: \"tokenId\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"ApprovalForAll\",\n inputs: [\n { indexed: true, name: \"owner\", type: \"address\" },\n { indexed: true, name: \"operator\", type: \"address\" },\n { indexed: false, name: \"approved\", type: \"bool\" },\n ],\n },\n] as const;\n\n/** Minimal ERC-1155 ABI covering the helpers this package exposes. */\nexport const ERC1155_ABI = [\n {\n type: \"function\",\n name: \"balanceOf\",\n stateMutability: \"view\",\n inputs: [\n { name: \"account\", type: \"address\" },\n { name: \"id\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"balanceOfBatch\",\n stateMutability: \"view\",\n inputs: [\n { name: \"accounts\", type: \"address[]\" },\n { name: \"ids\", type: \"uint256[]\" },\n ],\n outputs: [{ name: \"\", type: \"uint256[]\" }],\n },\n {\n type: \"function\",\n name: \"uri\",\n stateMutability: \"view\",\n inputs: [{ name: \"id\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"isApprovedForAll\",\n stateMutability: \"view\",\n inputs: [\n { name: \"account\", type: \"address\" },\n { name: \"operator\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"setApprovalForAll\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"operator\", type: \"address\" },\n { name: \"approved\", type: \"bool\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"id\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"data\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeBatchTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"ids\", type: \"uint256[]\" },\n { name: \"amounts\", type: \"uint256[]\" },\n { name: \"data\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n type: \"event\",\n name: \"TransferSingle\",\n inputs: [\n { indexed: true, name: \"operator\", type: \"address\" },\n { indexed: true, name: \"from\", type: \"address\" },\n { indexed: true, name: \"to\", type: \"address\" },\n { indexed: false, name: \"id\", type: \"uint256\" },\n { indexed: false, name: \"value\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"ApprovalForAll\",\n inputs: [\n { indexed: true, name: \"account\", type: \"address\" },\n { indexed: true, name: \"operator\", type: \"address\" },\n { indexed: false, name: \"approved\", type: \"bool\" },\n ],\n },\n] as const;\n\n/**\n * Post-quantum cryptography precompile interface (`IQorePQC`).\n *\n * Exposes signature verification and on-chain key registration status for\n * QoreChain's quantum-resistant key material (Dilithium / ML-DSA family).\n */\nexport const IQORE_PQC_ABI = [\n {\n type: \"function\",\n name: \"pqcVerify\",\n stateMutability: \"view\",\n inputs: [\n { name: \"pubkey\", type: \"bytes\" },\n { name: \"signature\", type: \"bytes\" },\n { name: \"message\", type: \"bytes\" },\n ],\n outputs: [{ name: \"valid\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"pqcKeyStatus\",\n stateMutability: \"view\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [\n { name: \"registered\", type: \"bool\" },\n { name: \"algorithmId\", type: \"uint8\" },\n { name: \"pubkey\", type: \"bytes\" },\n ],\n },\n] as const;\n\n/**\n * On-chain risk/anomaly intelligence precompile interface (`IQoreAI`).\n */\nexport const IQORE_AI_ABI = [\n {\n type: \"function\",\n name: \"aiRiskScore\",\n stateMutability: \"view\",\n inputs: [{ name: \"txData\", type: \"bytes\" }],\n outputs: [\n { name: \"score\", type: \"uint256\" },\n { name: \"level\", type: \"uint8\" },\n ],\n },\n {\n type: \"function\",\n name: \"aiAnomalyCheck\",\n stateMutability: \"view\",\n inputs: [\n { name: \"sender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [\n { name: \"anomalyScore\", type: \"uint256\" },\n { name: \"flagged\", type: \"bool\" },\n ],\n },\n] as const;\n\n/**\n * Consensus parameters precompile interface (`IQoreConsensus`).\n *\n * Surfaces live, adaptively-tuned consensus parameters from the network.\n */\nexport const IQORE_CONSENSUS_ABI = [\n {\n type: \"function\",\n name: \"rlConsensusParams\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n { name: \"blockTime\", type: \"uint256\" },\n { name: \"baseGasPrice\", type: \"uint256\" },\n { name: \"validatorSetSize\", type: \"uint256\" },\n { name: \"epoch\", type: \"uint256\" },\n ],\n },\n] as const;\n","/**\n * ERC-20 conveniences over viem's `readContract` / `writeContract`, using a\n * bundled minimal ERC-20 ABI. Read helpers take a viem `PublicClient`; write\n * helpers take a viem `WalletClient`.\n */\n\nimport type {\n Account,\n Address,\n Hash,\n PublicClient,\n WalletClient,\n} from \"viem\";\nimport { ERC20_ABI } from \"./abi\";\n\n/** Token metadata returned by {@link metadata}. */\nexport interface Erc20Metadata {\n name: string;\n symbol: string;\n decimals: number;\n}\n\n/** Read the token balance of `account`. */\nexport function balanceOf(\n client: PublicClient,\n token: Address,\n account: Address,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"balanceOf\",\n args: [account],\n });\n}\n\n/** Read the remaining allowance `spender` may draw from `owner`. */\nexport function allowance(\n client: PublicClient,\n token: Address,\n owner: Address,\n spender: Address,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"allowance\",\n args: [owner, spender],\n });\n}\n\n/** Read name/symbol/decimals in parallel. */\nexport async function metadata(\n client: PublicClient,\n token: Address,\n): Promise<Erc20Metadata> {\n const [name, symbol, decimals] = await Promise.all([\n client.readContract({ address: token, abi: ERC20_ABI, functionName: \"name\" }),\n client.readContract({ address: token, abi: ERC20_ABI, functionName: \"symbol\" }),\n client.readContract({ address: token, abi: ERC20_ABI, functionName: \"decimals\" }),\n ]);\n return { name, symbol, decimals };\n}\n\n/** Transfer `amount` tokens to `to`. Returns the transaction hash. */\nexport function transfer(\n client: WalletClient,\n token: Address,\n to: Address,\n amount: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"transfer\",\n args: [to, amount],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Approve `spender` to draw up to `amount`. Returns the transaction hash. */\nexport function approve(\n client: WalletClient,\n token: Address,\n spender: Address,\n amount: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"approve\",\n args: [spender, amount],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Namespaced ERC-20 helpers. */\nexport const erc20 = {\n balanceOf,\n allowance,\n metadata,\n transfer,\n approve,\n} as const;\n","/**\n * ERC-721 conveniences over viem's `readContract` / `writeContract`, using a\n * bundled minimal ERC-721 ABI. Read helpers take a viem `PublicClient`; write\n * helpers take a viem `WalletClient`. Mirrors the {@link erc20} style.\n */\n\nimport type {\n Account,\n Address,\n Hash,\n Hex,\n PublicClient,\n WalletClient,\n} from \"viem\";\nimport { ERC721_ABI } from \"./abi\";\n\n/** Collection metadata returned by {@link metadata}. */\nexport interface Erc721Metadata {\n name: string;\n symbol: string;\n}\n\n/** Read the number of tokens owned by `owner`. */\nexport function balanceOf(\n client: PublicClient,\n token: Address,\n owner: Address,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"balanceOf\",\n args: [owner],\n });\n}\n\n/** Read the owner of `tokenId`. */\nexport function ownerOf(\n client: PublicClient,\n token: Address,\n tokenId: bigint,\n): Promise<Address> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"ownerOf\",\n args: [tokenId],\n });\n}\n\n/** Read the metadata URI for `tokenId`. */\nexport function tokenURI(\n client: PublicClient,\n token: Address,\n tokenId: bigint,\n): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"tokenURI\",\n args: [tokenId],\n });\n}\n\n/** Read the approved address for a single `tokenId`. */\nexport function getApproved(\n client: PublicClient,\n token: Address,\n tokenId: bigint,\n): Promise<Address> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"getApproved\",\n args: [tokenId],\n });\n}\n\n/** Read whether `operator` is approved to manage all of `owner`'s tokens. */\nexport function isApprovedForAll(\n client: PublicClient,\n token: Address,\n owner: Address,\n operator: Address,\n): Promise<boolean> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"isApprovedForAll\",\n args: [owner, operator],\n });\n}\n\n/** Read the collection name. */\nexport function name(client: PublicClient, token: Address): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"name\",\n });\n}\n\n/** Read the collection symbol. */\nexport function symbol(client: PublicClient, token: Address): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"symbol\",\n });\n}\n\n/** Read name/symbol in parallel. */\nexport async function metadata(\n client: PublicClient,\n token: Address,\n): Promise<Erc721Metadata> {\n const [n, s] = await Promise.all([name(client, token), symbol(client, token)]);\n return { name: n, symbol: s };\n}\n\n/** Approve `to` to transfer `tokenId`. Returns the transaction hash. */\nexport function approve(\n client: WalletClient,\n token: Address,\n to: Address,\n tokenId: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"approve\",\n args: [to, tokenId],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Set or revoke `operator` as an approved manager for all caller tokens. */\nexport function setApprovalForAll(\n client: WalletClient,\n token: Address,\n operator: Address,\n approved: boolean,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"setApprovalForAll\",\n args: [operator, approved],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Transfer `tokenId` from `from` to `to`. Returns the transaction hash. */\nexport function transferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n tokenId: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"transferFrom\",\n args: [from, to, tokenId],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/**\n * Safe-transfer `tokenId` from `from` to `to`. Pass `data` to invoke the\n * 4-argument `safeTransferFrom(from,to,tokenId,bytes)` overload.\n */\nexport function safeTransferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n tokenId: bigint,\n data?: Hex,\n): Promise<Hash> {\n if (data !== undefined) {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"safeTransferFrom\",\n args: [from, to, tokenId, data],\n account: client.account as Account,\n chain: client.chain,\n });\n }\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"safeTransferFrom\",\n args: [from, to, tokenId],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Namespaced ERC-721 helpers. */\nexport const erc721 = {\n balanceOf,\n ownerOf,\n tokenURI,\n getApproved,\n isApprovedForAll,\n name,\n symbol,\n metadata,\n approve,\n setApprovalForAll,\n transferFrom,\n safeTransferFrom,\n} as const;\n","/**\n * ERC-1155 conveniences over viem's `readContract` / `writeContract`, using a\n * bundled minimal ERC-1155 ABI. Read helpers take a viem `PublicClient`; write\n * helpers take a viem `WalletClient`. Mirrors the {@link erc20} style.\n */\n\nimport type {\n Account,\n Address,\n Hash,\n Hex,\n PublicClient,\n WalletClient,\n} from \"viem\";\nimport { ERC1155_ABI } from \"./abi\";\n\n/** Read the balance of token `id` held by `account`. */\nexport function balanceOf(\n client: PublicClient,\n token: Address,\n account: Address,\n id: bigint,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"balanceOf\",\n args: [account, id],\n });\n}\n\n/** Read balances of `(accounts[i], ids[i])` pairs in a single call. */\nexport function balanceOfBatch(\n client: PublicClient,\n token: Address,\n accounts: readonly Address[],\n ids: readonly bigint[],\n): Promise<readonly bigint[]> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"balanceOfBatch\",\n args: [accounts, ids],\n });\n}\n\n/** Read the metadata URI template for token `id`. */\nexport function uri(\n client: PublicClient,\n token: Address,\n id: bigint,\n): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"uri\",\n args: [id],\n });\n}\n\n/** Read whether `operator` is approved to manage all of `account`'s tokens. */\nexport function isApprovedForAll(\n client: PublicClient,\n token: Address,\n account: Address,\n operator: Address,\n): Promise<boolean> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"isApprovedForAll\",\n args: [account, operator],\n });\n}\n\n/** Set or revoke `operator` as an approved manager for all caller tokens. */\nexport function setApprovalForAll(\n client: WalletClient,\n token: Address,\n operator: Address,\n approved: boolean,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"setApprovalForAll\",\n args: [operator, approved],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Transfer `amount` of token `id` from `from` to `to`. */\nexport function safeTransferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n id: bigint,\n amount: bigint,\n data: Hex = \"0x\",\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"safeTransferFrom\",\n args: [from, to, id, amount, data],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Batch-transfer `amounts[i]` of token `ids[i]` from `from` to `to`. */\nexport function safeBatchTransferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n ids: readonly bigint[],\n amounts: readonly bigint[],\n data: Hex = \"0x\",\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"safeBatchTransferFrom\",\n args: [from, to, ids, amounts, data],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Namespaced ERC-1155 helpers. */\nexport const erc1155 = {\n balanceOf,\n balanceOfBatch,\n uri,\n isApprovedForAll,\n setApprovalForAll,\n safeTransferFrom,\n safeBatchTransferFrom,\n} as const;\n","/**\n * Fee estimation conveniences over viem.\n *\n * {@link estimateEip1559Fees} wraps viem's `estimateFeesPerGas` to return the\n * EIP-1559 `maxFeePerGas` / `maxPriorityFeePerGas` pair; {@link gasPrice} is a\n * legacy helper returning a single gas price. Both take a viem `PublicClient`.\n */\n\nimport type { PublicClient } from \"viem\";\n\n/** EIP-1559 fee suggestion. */\nexport interface Eip1559Fees {\n /** Maximum total fee per gas (base + priority). */\n maxFeePerGas: bigint;\n /** Maximum priority (miner tip) fee per gas. */\n maxPriorityFeePerGas: bigint;\n}\n\n/**\n * Suggest EIP-1559 fees from the network, via viem's `estimateFeesPerGas`.\n *\n * @returns `{ maxFeePerGas, maxPriorityFeePerGas }`.\n */\nexport async function estimateEip1559Fees(\n client: PublicClient,\n): Promise<Eip1559Fees> {\n const { maxFeePerGas, maxPriorityFeePerGas } =\n await client.estimateFeesPerGas();\n return { maxFeePerGas, maxPriorityFeePerGas };\n}\n\n/** Legacy (pre-EIP-1559) gas price via viem's `getGasPrice`. */\nexport function gasPrice(client: PublicClient): Promise<bigint> {\n return client.getGasPrice();\n}\n\n/** Namespaced fee helpers. */\nexport const fees = {\n estimateEip1559Fees,\n gasPrice,\n} as const;\n","/**\n * Thin contract deploy/call wrappers over viem that default to the QoreChain\n * chain bound on the supplied client. These exist so the common cases need no\n * extra `chain`/`account` plumbing; for advanced use, call viem directly.\n */\n\nimport type {\n Abi,\n Account,\n Hash,\n Hex,\n PublicClient,\n WalletClient,\n} from \"viem\";\n\n/** Arguments for {@link deployContract}. */\nexport interface DeployContractArgs {\n /** Contract ABI (used for typed constructor args). */\n abi: Abi;\n /** Creation bytecode (`0x`-prefixed). */\n bytecode: Hex;\n /** Constructor arguments, if any. */\n args?: readonly unknown[];\n}\n\n/**\n * Deploy a contract using the wallet client's bound account and chain.\n * Returns the deployment transaction hash.\n */\nexport function deployContract(\n client: WalletClient,\n { abi, bytecode, args }: DeployContractArgs,\n): Promise<Hash> {\n return client.deployContract({\n abi,\n bytecode,\n args,\n account: client.account as Account,\n chain: client.chain,\n } as Parameters<WalletClient[\"deployContract\"]>[0]);\n}\n\n/**\n * Typed `readContract` passthrough. Defaults nothing beyond viem; provided so\n * callers can stay on a single import surface.\n */\nexport function readContract(\n client: PublicClient,\n params: Parameters<PublicClient[\"readContract\"]>[0],\n): ReturnType<PublicClient[\"readContract\"]> {\n return client.readContract(params);\n}\n\n/**\n * Typed `writeContract` wrapper that defaults `account` and `chain` from the\n * wallet client when the caller omits them.\n */\nexport function writeContract(\n client: WalletClient,\n params: Parameters<WalletClient[\"writeContract\"]>[0],\n): Promise<Hash> {\n const p = params as Record<string, unknown>;\n return client.writeContract({\n account: client.account as Account,\n chain: client.chain,\n ...p,\n } as Parameters<WalletClient[\"writeContract\"]>[0]);\n}\n","/**\n * Typed bindings for QoreChain's EVM precompiles — the headline capability of\n * the QoreChain EVM Engine. Each helper issues an `eth_call` against the fixed\n * precompile address using the corresponding bundled interface ABI.\n *\n * Availability note: on a default or community node these precompiles may return\n * a \"not available\" error; they are available on QoreChain network nodes. Handle\n * a thrown error from any of these helpers as \"feature not present on this node\".\n */\n\nimport { getAddress, type Address, type Hex, type PublicClient } from \"viem\";\nimport { IQORE_PQC_ABI, IQORE_AI_ABI, IQORE_CONSENSUS_ABI } from \"./abi\";\n\n/**\n * Fixed 20-byte precompile addresses (zero-padded), matching the chain's\n * published interface registrations.\n */\nexport const PRECOMPILE_ADDRESSES = {\n /** CrossVM Bridge precompile. */\n crossVmBridge: \"0x0000000000000000000000000000000000000901\",\n /** PQC signature verification (`IQorePQC.pqcVerify`). */\n pqcVerify: \"0x0000000000000000000000000000000000000A01\",\n /** PQC key registration status (`IQorePQC.pqcKeyStatus`). */\n pqcKeyStatus: \"0x0000000000000000000000000000000000000A02\",\n /** AI transaction risk score (`IQoreAI.aiRiskScore`). */\n aiRiskScore: \"0x0000000000000000000000000000000000000B01\",\n /** AI anomaly check (`IQoreAI.aiAnomalyCheck`). */\n aiAnomalyCheck: \"0x0000000000000000000000000000000000000B02\",\n /** Consensus parameters (`IQoreConsensus.rlConsensusParams`). */\n rlConsensusParams: \"0x0000000000000000000000000000000000000C01\",\n} as const satisfies Record<string, Address>;\n\n/**\n * Normalize a precompile address to its EIP-55 checksummed form.\n *\n * The exported {@link PRECOMPILE_ADDRESSES} preserve the chain's published\n * casing, which is not necessarily valid EIP-55; viem requires checksummed (or\n * all-lowercase) input, so calls route through this.\n */\nconst addr = (a: Address): Address => getAddress(a);\n\n/** Arguments for {@link pqcVerify}. */\nexport interface PqcVerifyArgs {\n pubkey: Hex;\n signature: Hex;\n message: Hex;\n}\n\n/** Verify a post-quantum signature on-chain. Returns `true` when valid. */\nexport function pqcVerify(\n client: PublicClient,\n { pubkey, signature, message }: PqcVerifyArgs,\n): Promise<boolean> {\n return client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.pqcVerify),\n abi: IQORE_PQC_ABI,\n functionName: \"pqcVerify\",\n args: [pubkey, signature, message],\n });\n}\n\n/** Result of {@link pqcKeyStatus}. */\nexport interface PqcKeyStatus {\n registered: boolean;\n algorithmId: number;\n pubkey: Hex;\n}\n\n/** Query the on-chain post-quantum key registration status for an account. */\nexport async function pqcKeyStatus(\n client: PublicClient,\n account: Address,\n): Promise<PqcKeyStatus> {\n const [registered, algorithmId, pubkey] = await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.pqcKeyStatus),\n abi: IQORE_PQC_ABI,\n functionName: \"pqcKeyStatus\",\n args: [account],\n });\n return { registered, algorithmId, pubkey };\n}\n\n/** Result of {@link aiRiskScore}. */\nexport interface AiRiskScore {\n score: bigint;\n level: number;\n}\n\n/** Compute an on-chain risk score for raw transaction data. */\nexport async function aiRiskScore(\n client: PublicClient,\n txData: Hex,\n): Promise<AiRiskScore> {\n const [score, level] = await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.aiRiskScore),\n abi: IQORE_AI_ABI,\n functionName: \"aiRiskScore\",\n args: [txData],\n });\n return { score, level };\n}\n\n/** Arguments for {@link aiAnomalyCheck}. */\nexport interface AiAnomalyCheckArgs {\n sender: Address;\n amount: bigint;\n}\n\n/** Result of {@link aiAnomalyCheck}. */\nexport interface AiAnomalyCheck {\n anomalyScore: bigint;\n flagged: boolean;\n}\n\n/** Check whether a (sender, amount) pair is anomalous. */\nexport async function aiAnomalyCheck(\n client: PublicClient,\n { sender, amount }: AiAnomalyCheckArgs,\n): Promise<AiAnomalyCheck> {\n const [anomalyScore, flagged] = await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.aiAnomalyCheck),\n abi: IQORE_AI_ABI,\n functionName: \"aiAnomalyCheck\",\n args: [sender, amount],\n });\n return { anomalyScore, flagged };\n}\n\n/** Result of {@link rlConsensusParams}. */\nexport interface ConsensusParams {\n blockTime: bigint;\n baseGasPrice: bigint;\n validatorSetSize: bigint;\n epoch: bigint;\n}\n\n/** Read the live, adaptively-tuned consensus parameters. */\nexport async function rlConsensusParams(\n client: PublicClient,\n): Promise<ConsensusParams> {\n const [blockTime, baseGasPrice, validatorSetSize, epoch] =\n await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.rlConsensusParams),\n abi: IQORE_CONSENSUS_ABI,\n functionName: \"rlConsensusParams\",\n });\n return { blockTime, baseGasPrice, validatorSetSize, epoch };\n}\n\n/** Namespaced precompile helpers. */\nexport const precompiles = {\n pqcVerify,\n pqcKeyStatus,\n aiRiskScore,\n aiAnomalyCheck,\n rlConsensusParams,\n} as const;\n","/**\n * EVM browser-wallet integration for QoreChain (MetaMask and any EIP-1193\n * provider, with optional EIP-6963 multi-wallet discovery).\n *\n * Builds a viem `WalletClient` over an injected provider so dApps can request\n * accounts, add/switch the QoreChain EVM network, and sign + send transactions.\n *\n * ```ts\n * import { getEvmWalletClient, addQoreChainNetwork } from \"@qorechain/evm\";\n * import { getNetwork } from \"@qorechain/sdk\";\n *\n * await addQoreChainNetwork(window.ethereum, getNetwork(\"mainnet\"));\n * const { walletClient, address } = await getEvmWalletClient();\n * ```\n */\n\nimport {\n createWalletClient,\n custom,\n defineChain,\n type Address,\n type Chain,\n type WalletClient,\n} from \"viem\";\n\n/**\n * The minimal EIP-1193 provider surface used here. Declared structurally so no\n * wallet types package is required; `window.ethereum` is structurally\n * compatible.\n */\nexport interface Eip1193Provider {\n request(args: { method: string; params?: unknown[] | object }): Promise<unknown>;\n on?(event: string, listener: (...args: unknown[]) => void): void;\n removeListener?(event: string, listener: (...args: unknown[]) => void): void;\n}\n\n/** Window augmentation for the default injected EVM provider. */\ninterface EthereumWindow {\n ethereum?: Eip1193Provider;\n}\n\n/** Subset of a qorechain-sdk network needed to add the EVM chain to a wallet. */\nexport interface EvmNetworkInfo {\n /** EVM endpoints (`evmRpc`, optional `evmWs`). */\n endpoints: { evmRpc: string; evmWs?: string };\n /** Display coin info (used for the native currency). */\n coin: { display: string };\n}\n\n/** Options for {@link getEvmWalletClient}. */\nexport interface GetEvmWalletClientOptions {\n /** The EIP-1193 provider to use. Defaults to `window.ethereum`. */\n provider?: Eip1193Provider;\n /**\n * Numeric EVM chain id. If omitted, it is auto-detected via `eth_chainId` on\n * the connected provider.\n */\n chainId?: number;\n /** Native currency decimals for the viem chain. Defaults to 18. */\n decimals?: number;\n}\n\n/** The result of {@link getEvmWalletClient}. */\nexport interface EvmWalletConnection {\n /** viem wallet client bound to the connected account and chain. */\n walletClient: WalletClient;\n /** The connected (first) account address. */\n address: Address;\n /** The underlying EIP-1193 provider. */\n provider: Eip1193Provider;\n /** The viem `Chain` object describing the connected network. */\n chain: Chain;\n}\n\n/** Resolve the EIP-1193 provider from options or `window`, or throw. */\nfunction resolveProvider(provider?: Eip1193Provider): Eip1193Provider {\n if (provider) return provider;\n if (typeof window === \"undefined\") {\n throw new Error(\n \"EVM wallet: no browser `window` available. Run in a browser, or pass `provider` explicitly.\",\n );\n }\n const injected = (window as unknown as EthereumWindow).ethereum;\n if (!injected) {\n throw new Error(\n \"EVM wallet: no injected EIP-1193 provider found (window.ethereum). Install MetaMask, or pass `provider`.\",\n );\n }\n return injected;\n}\n\n/** Convert a numeric chain id to its `0x`-prefixed hex form. */\nexport function toHexChainId(chainId: number): `0x${string}` {\n return `0x${chainId.toString(16)}`;\n}\n\n/**\n * Request the provider's accounts via `eth_requestAccounts`.\n *\n * @returns The authorized account addresses (the first is the active account).\n */\nexport async function requestAccounts(\n provider: Eip1193Provider,\n): Promise<Address[]> {\n const accounts = (await provider.request({\n method: \"eth_requestAccounts\",\n })) as Address[];\n if (!accounts || accounts.length === 0) {\n throw new Error(\"EVM wallet: provider returned no accounts\");\n }\n return accounts;\n}\n\n/**\n * Add the QoreChain EVM network to the wallet via `wallet_addEthereumChain`.\n *\n * The EVM chain id is auto-detected (via `eth_chainId` against the network's\n * `evmRpc`) unless provided. Native currency is QOR with 18 decimals (the EVM\n * convention).\n */\nexport async function addQoreChainNetwork(\n provider: Eip1193Provider,\n network: EvmNetworkInfo,\n opts: { chainId?: number; blockExplorerUrl?: string } = {},\n): Promise<void> {\n const chainId =\n opts.chainId ?? Number(await provider.request({ method: \"eth_chainId\" }));\n await provider.request({\n method: \"wallet_addEthereumChain\",\n params: [\n {\n chainId: toHexChainId(chainId),\n chainName:\n network.coin.display === \"QOR\" ? \"QoreChain EVM\" : network.coin.display,\n nativeCurrency: {\n name: network.coin.display,\n symbol: network.coin.display,\n decimals: 18,\n },\n rpcUrls: [network.endpoints.evmRpc],\n ...(opts.blockExplorerUrl\n ? { blockExplorerUrls: [opts.blockExplorerUrl] }\n : {}),\n },\n ],\n });\n}\n\n/**\n * Switch the wallet to the given EVM chain via `wallet_switchEthereumChain`.\n */\nexport async function switchChain(\n provider: Eip1193Provider,\n chainId: number,\n): Promise<void> {\n await provider.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId: toHexChainId(chainId) }],\n });\n}\n\n/**\n * Connect to an injected EVM wallet and return a viem `WalletClient`.\n *\n * Requests accounts (`eth_requestAccounts`), resolves the EVM chain id (supplied\n * or auto-detected), and builds a wallet client over a viem `custom` transport.\n *\n * Browser-only: throws a clear error if no `window` or no injected provider.\n */\nexport async function getEvmWalletClient(\n opts: GetEvmWalletClientOptions = {},\n): Promise<EvmWalletConnection> {\n const provider = resolveProvider(opts.provider);\n const accounts = await requestAccounts(provider);\n const address = accounts[0];\n\n const chainId =\n opts.chainId ?? Number(await provider.request({ method: \"eth_chainId\" }));\n const decimals = opts.decimals ?? 18;\n\n const chain = defineChain({\n id: chainId,\n name: \"QoreChain EVM\",\n nativeCurrency: { name: \"QOR\", symbol: \"QOR\", decimals },\n rpcUrls: { default: { http: [] } },\n });\n\n const walletClient = createWalletClient({\n account: address,\n chain,\n transport: custom(provider),\n });\n\n return { walletClient, address, provider, chain };\n}\n\n/** A provider announced via the EIP-6963 discovery protocol. */\nexport interface Eip6963ProviderDetail {\n info: {\n uuid: string;\n name: string;\n icon: string;\n rdns: string;\n };\n provider: Eip1193Provider;\n}\n\n/**\n * Discover injected EVM providers via EIP-6963 (`eip6963:requestProvider`).\n *\n * Returns the providers that announce themselves within `timeoutMs` (default\n * 200ms). `window.ethereum` remains the baseline default for the other helpers;\n * use this when you want to let the user pick among multiple installed wallets.\n *\n * Resolves to an empty array outside a browser environment.\n */\nexport function discoverEvmProviders(\n timeoutMs = 200,\n): Promise<Eip6963ProviderDetail[]> {\n if (typeof window === \"undefined\") return Promise.resolve([]);\n\n return new Promise((resolve) => {\n const found = new Map<string, Eip6963ProviderDetail>();\n const onAnnounce = (event: Event): void => {\n const detail = (event as CustomEvent<Eip6963ProviderDetail>).detail;\n if (detail?.info?.uuid) found.set(detail.info.uuid, detail);\n };\n window.addEventListener(\"eip6963:announceProvider\", onAnnounce as EventListener);\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n setTimeout(() => {\n window.removeEventListener(\n \"eip6963:announceProvider\",\n onAnnounce as EventListener,\n );\n resolve([...found.values()]);\n }, timeoutMs);\n });\n}\n","/**\n * Human-readable decoding of EVM execution errors.\n *\n * viem throws richly-typed error objects, but the useful detail (a revert\n * reason, a custom-error name and args, or a low-level RPC message) is often\n * buried several layers deep in the error's `cause` chain. {@link decodeEvmError}\n * walks that chain with viem's `BaseError.walk`, decodes custom-error revert\n * data against an optional ABI via `decodeErrorResult`, and returns a flat,\n * readable summary.\n */\n\nimport {\n BaseError,\n ContractFunctionRevertedError,\n decodeErrorResult,\n type Abi,\n type Hex,\n} from \"viem\";\n\n/** A decoded EVM error. */\nexport interface DecodedEvmError {\n /** A readable summary message. */\n message: string;\n /** A short, stable kind discriminator. */\n kind:\n | \"revert\"\n | \"custom_error\"\n | \"panic\"\n | \"rpc\"\n | \"execution\"\n | \"unknown\";\n /** The custom-error or revert function name, when decoded. */\n errorName?: string;\n /** Decoded custom-error arguments, when available. */\n args?: readonly unknown[];\n /** The raw revert data, when present. */\n data?: Hex;\n}\n\n/** Extract a `0x`-prefixed revert data blob from common viem error shapes. */\nfunction extractRevertData(err: unknown): Hex | undefined {\n const e = err as { data?: unknown; cause?: { data?: unknown } };\n const d = e?.data ?? e?.cause?.data;\n if (typeof d === \"string\" && d.startsWith(\"0x\")) return d as Hex;\n if (d && typeof d === \"object\" && \"data\" in (d as object)) {\n const inner = (d as { data?: unknown }).data;\n if (typeof inner === \"string\" && inner.startsWith(\"0x\")) return inner as Hex;\n }\n return undefined;\n}\n\n/**\n * Decode an EVM error thrown by viem into a readable, structured form.\n *\n * @param error - The thrown error (a viem `BaseError`, an RPC error, or any value).\n * @param abi - Optional contract ABI used to decode custom-error revert data.\n * @returns A {@link DecodedEvmError}.\n */\nexport function decodeEvmError(error: unknown, abi?: Abi): DecodedEvmError {\n if (error instanceof BaseError) {\n // Prefer a contract-level revert: it carries the reason or custom error.\n const revert = error.walk(\n (e) => e instanceof ContractFunctionRevertedError,\n ) as ContractFunctionRevertedError | null;\n\n if (revert instanceof ContractFunctionRevertedError) {\n const data = revert.data;\n if (data?.errorName === \"Error\") {\n const reason = (data.args?.[0] as string) ?? revert.reason ?? \"reverted\";\n return { message: `reverted: ${reason}`, kind: \"revert\", errorName: \"Error\" };\n }\n if (data?.errorName === \"Panic\") {\n return {\n message: `panic: ${String(data.args?.[0])}`,\n kind: \"panic\",\n errorName: \"Panic\",\n args: data.args,\n };\n }\n if (data?.errorName) {\n return {\n message: `custom error ${data.errorName}(${(data.args ?? [])\n .map((a) => String(a))\n .join(\", \")})`,\n kind: \"custom_error\",\n errorName: data.errorName,\n args: data.args,\n };\n }\n if (revert.reason) {\n return { message: `reverted: ${revert.reason}`, kind: \"revert\" };\n }\n }\n\n // No decoded contract revert: try to decode raw revert data with the ABI.\n const data = extractRevertData(error);\n if (data && abi) {\n try {\n const decoded = decodeErrorResult({ abi, data });\n return {\n message: `custom error ${decoded.errorName}(${(decoded.args ?? [])\n .map((a) => String(a))\n .join(\", \")})`,\n kind: \"custom_error\",\n errorName: decoded.errorName,\n args: decoded.args as readonly unknown[] | undefined,\n data,\n };\n } catch {\n // fall through to the generic message\n }\n }\n\n // Fall back to viem's own short message off the deepest cause.\n const deepest = error.walk() as BaseError;\n return {\n message: deepest.shortMessage ?? error.shortMessage ?? error.message,\n kind: \"execution\",\n data,\n };\n }\n\n if (error instanceof Error) {\n return { message: error.message, kind: \"rpc\" };\n }\n return { message: String(error), kind: \"unknown\" };\n}\n","/**\n * Real-time EVM watchers for QoreChain, over a viem websocket transport.\n *\n * {@link createEvmSubscriptionClient} builds a viem public client on a\n * `webSocket` transport pointed at the network's `evmWs` endpoint, and the\n * `watch*` helpers are thin passthroughs to viem's polling/subscription\n * watchers scoped to that client. Each returns viem's `unwatch` function.\n *\n * These are deliberately minimal: viem owns the subscription lifecycle and\n * reconnection; this module just wires the QoreChain endpoint and re-exports a\n * focused surface so callers don't construct the transport themselves.\n */\n\nimport {\n createPublicClient,\n webSocket,\n type Chain,\n type PublicClient,\n type Transport,\n type WatchBlocksParameters,\n type WatchEventParameters,\n type WatchContractEventParameters,\n type WatchPendingTransactionsParameters,\n} from \"viem\";\n\n/** Subset of a qorechain-sdk network's endpoints relevant to EVM subscriptions. */\nexport interface EvmWsEndpoints {\n /** EVM JSON-RPC WebSocket endpoint. */\n evmWs: string;\n}\n\n/** Options for {@link createEvmSubscriptionClient}. */\nexport interface CreateEvmSubscriptionClientOptions {\n /** EVM websocket URL. Mutually exclusive with `endpoints`. */\n wsUrl?: string;\n /** A qorechain-sdk network endpoints object (uses `evmWs`). */\n endpoints?: EvmWsEndpoints;\n /** Optional viem `Chain` to bind. */\n chain?: Chain;\n /** Custom viem transport (primarily for testing). Overrides `wsUrl`/`endpoints`. */\n transport?: Transport;\n}\n\n/** A function that stops a watcher. */\nexport type Unwatch = () => void;\n\nfunction resolveTransport(opts: CreateEvmSubscriptionClientOptions): Transport {\n if (opts.transport) return opts.transport;\n const url = opts.wsUrl ?? opts.endpoints?.evmWs;\n if (!url) {\n throw new Error(\n \"createEvmSubscriptionClient: provide `wsUrl`, `endpoints.evmWs`, or a `transport`\",\n );\n }\n return webSocket(url);\n}\n\n/**\n * Create a viem public client on a websocket transport for subscriptions.\n *\n * The returned client is a standard viem `PublicClient`; the `watch*` helpers in\n * this module accept it (or any viem public client).\n */\nexport function createEvmSubscriptionClient(\n opts: CreateEvmSubscriptionClientOptions,\n): PublicClient {\n const transport = resolveTransport(opts);\n return createPublicClient({ transport, chain: opts.chain });\n}\n\n/** Watch for new blocks. Returns viem's `unwatch`. */\nexport function watchBlocks(\n client: PublicClient,\n args: WatchBlocksParameters,\n): Unwatch {\n return client.watchBlocks(args as never);\n}\n\n/** Watch for logs matching an event filter. Returns viem's `unwatch`. */\nexport function watchEvent(\n client: PublicClient,\n args: WatchEventParameters,\n): Unwatch {\n return client.watchEvent(args as never);\n}\n\n/** Watch a specific contract's events (decoded). Returns viem's `unwatch`. */\nexport function watchContractEvent(\n client: PublicClient,\n args: WatchContractEventParameters,\n): Unwatch {\n return client.watchContractEvent(args as never);\n}\n\n/** Watch the mempool for pending transaction hashes. Returns viem's `unwatch`. */\nexport function watchPendingTransactions(\n client: PublicClient,\n args: WatchPendingTransactionsParameters,\n): Unwatch {\n return client.watchPendingTransactions(args as never);\n}\n","/**\n * `@qorechain/evm` — a thin, type-safe adapter over [viem](https://viem.sh) for\n * the QoreChain EVM Engine.\n *\n * It does not reimplement an EVM client; viem is a peer dependency. This package\n * adds QoreChain-specific conveniences: a chain-aware client factory with EVM\n * chain-id auto-detection, ERC-20 helpers, contract deploy/call wrappers, and\n * typed bindings for QoreChain's EVM precompiles.\n */\n\n/** Package version. */\nexport const VERSION = \"0.3.0\";\n\nexport {\n createEvmClient,\n type CreateEvmClientOptions,\n type EvmClient,\n type EvmEndpoints,\n} from \"./client\";\n\nexport { evmAccountFromPrivateKey } from \"./accounts\";\n\nexport {\n erc20,\n balanceOf,\n allowance,\n metadata,\n transfer,\n approve,\n type Erc20Metadata,\n} from \"./erc20\";\n\nexport {\n erc721,\n type Erc721Metadata,\n} from \"./erc721\";\n\nexport { erc1155 } from \"./erc1155\";\n\nexport {\n fees,\n estimateEip1559Fees,\n gasPrice,\n type Eip1559Fees,\n} from \"./fees\";\n\nexport {\n deployContract,\n readContract,\n writeContract,\n type DeployContractArgs,\n} from \"./contracts\";\n\nexport {\n precompiles,\n pqcVerify,\n pqcKeyStatus,\n aiRiskScore,\n aiAnomalyCheck,\n rlConsensusParams,\n PRECOMPILE_ADDRESSES,\n type PqcVerifyArgs,\n type PqcKeyStatus,\n type AiRiskScore,\n type AiAnomalyCheckArgs,\n type AiAnomalyCheck,\n type ConsensusParams,\n} from \"./precompiles\";\n\nexport {\n ERC20_ABI,\n ERC721_ABI,\n ERC1155_ABI,\n IQORE_PQC_ABI,\n IQORE_AI_ABI,\n IQORE_CONSENSUS_ABI,\n} from \"./abi\";\n\nexport {\n getEvmWalletClient,\n requestAccounts,\n addQoreChainNetwork,\n switchChain,\n discoverEvmProviders,\n toHexChainId,\n type Eip1193Provider,\n type EvmNetworkInfo,\n type GetEvmWalletClientOptions,\n type EvmWalletConnection,\n type Eip6963ProviderDetail,\n} from \"./wallet\";\n\nexport { decodeEvmError, type DecodedEvmError } from \"./errors\";\n\nexport {\n createEvmSubscriptionClient,\n watchBlocks,\n watchEvent,\n watchContractEvent,\n watchPendingTransactions,\n type CreateEvmSubscriptionClientOptions,\n type EvmWsEndpoints,\n type Unwatch,\n} from \"./subscribe\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/accounts.ts","../src/abi.ts","../src/erc20.ts","../src/erc721.ts","../src/erc1155.ts","../src/fees.ts","../src/contracts.ts","../src/precompiles.ts","../src/ai.ts","../src/wallet.ts","../src/errors.ts","../src/subscribe.ts","../src/index.ts"],"names":["name","symbol","balanceOf","metadata","approve","isApprovedForAll","setApprovalForAll","safeTransferFrom","toHexData","toHex","aiRiskScore","getAddress","aiAnomalyCheck","defineChain","createWalletClient","data","createPublicClient"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Client factory for the QoreChain EVM Engine.\n *\n * This is a thin convenience layer over viem: it builds a viem `Chain` object\n * from the network's EVM endpoints, resolves the numeric EVM chain id (either\n * supplied explicitly or auto-detected via `eth_chainId`), and returns ready-to-\n * use viem public and wallet clients.\n *\n * The numeric EVM chain id for QoreChain networks is intentionally not hardcoded\n * here: it is auto-detected at connect time unless the caller provides it.\n */\n\nimport {\n createPublicClient,\n createWalletClient,\n defineChain,\n http,\n type Account,\n type Chain,\n type PublicClient,\n type Transport,\n type WalletClient,\n} from \"viem\";\n\n/** Subset of a qorechain-sdk network's endpoints relevant to the EVM Engine. */\nexport interface EvmEndpoints {\n /** EVM JSON-RPC HTTP endpoint. */\n evmRpc: string;\n /** EVM JSON-RPC WebSocket endpoint (optional). */\n evmWs?: string;\n}\n\n/** Options for {@link createEvmClient}. */\nexport interface CreateEvmClientOptions {\n /** EVM JSON-RPC HTTP URL. Mutually exclusive with `endpoints`. */\n rpcUrl?: string;\n /** EVM JSON-RPC WebSocket URL. */\n wsUrl?: string;\n /** A qorechain-sdk network endpoints object (uses `evmRpc`/`evmWs`). */\n endpoints?: EvmEndpoints;\n /**\n * Numeric EVM chain id. If omitted, it is auto-detected via `eth_chainId`.\n *\n * The canonical chain id for QoreChain networks is not pinned in this package\n * on purpose — always detect it, or pass it explicitly here.\n */\n chainId?: number;\n /**\n * Native currency decimals for EVM display. Defaults to 18 (the EVM\n * convention). Note: this is the EVM-side representation of QOR and is\n * distinct from the Cosmos `uqor` base denomination (10^6). Confirm the\n * canonical wrapped/native EVM decimals against your target node.\n */\n decimals?: number;\n /**\n * Custom viem transport. When provided it is used instead of an HTTP\n * transport built from the resolved RPC URL — primarily for testing.\n */\n transport?: Transport;\n}\n\n/** A configured QoreChain EVM client bundle. */\nexport interface EvmClient {\n /** viem public (read) client bound to the resolved chain + transport. */\n publicClient: PublicClient;\n /** Build a viem wallet (write) client for the given account. */\n getWalletClient: (account: Account) => WalletClient;\n /** The viem `Chain` object describing the connected network. */\n chain: Chain;\n /** Return the resolved numeric EVM chain id. */\n getChainId: () => Promise<number>;\n}\n\nfunction resolveRpcUrl(opts: CreateEvmClientOptions): string {\n const url = opts.rpcUrl ?? opts.endpoints?.evmRpc;\n if (!url) {\n throw new Error(\"createEvmClient: provide `rpcUrl` or `endpoints.evmRpc`\");\n }\n return url;\n}\n\nfunction resolveWsUrl(opts: CreateEvmClientOptions): string | undefined {\n return opts.wsUrl ?? opts.endpoints?.evmWs;\n}\n\n/**\n * Create a QoreChain EVM client bundle.\n *\n * Auto-detects the EVM chain id via `eth_chainId` unless `chainId` is supplied.\n */\nexport async function createEvmClient(\n opts: CreateEvmClientOptions,\n): Promise<EvmClient> {\n const rpcUrl = resolveRpcUrl(opts);\n const wsUrl = resolveWsUrl(opts);\n const transport: Transport = opts.transport ?? http(rpcUrl);\n const decimals = opts.decimals ?? 18;\n\n let chainId = opts.chainId;\n if (chainId === undefined) {\n // Auto-detect via a transient public client (no chain bound yet).\n const probe = createPublicClient({ transport });\n chainId = await probe.getChainId();\n }\n\n const chain = defineChain({\n id: chainId,\n name: \"QoreChain EVM\",\n nativeCurrency: { name: \"QOR\", symbol: \"QOR\", decimals },\n rpcUrls: {\n default: {\n http: [rpcUrl],\n ...(wsUrl ? { webSocket: [wsUrl] } : {}),\n },\n },\n });\n\n const publicClient = createPublicClient({ chain, transport });\n\n const getWalletClient = (account: Account): WalletClient =>\n createWalletClient({ account, chain, transport });\n\n return {\n publicClient,\n getWalletClient,\n chain,\n getChainId: async () => chainId,\n };\n}\n","/**\n * Account helpers for the QoreChain EVM Engine.\n *\n * These re-expose viem's account utilities so callers don't need a second import\n * path. `@qorechain/sdk`'s `deriveEvmAccount` returns a `privateKey` you can pass\n * straight into {@link evmAccountFromPrivateKey}.\n */\n\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport type { Hex, PrivateKeyAccount } from \"viem\";\n\n/**\n * Create a viem account from a `0x`-prefixed private key.\n *\n * Pair with `@qorechain/sdk`'s `deriveEvmAccount(mnemonic)`, which provides the\n * `privateKey` derived for the EVM coin type.\n */\nexport function evmAccountFromPrivateKey(privateKey: Hex): PrivateKeyAccount {\n return privateKeyToAccount(privateKey);\n}\n","/**\n * Bundled ABIs used by the QoreChain EVM adapter.\n *\n * These are declared `as const` so viem can infer fully typed argument and\n * return types from them. The QoreChain precompile ABIs mirror the chain's\n * published Solidity interfaces exactly.\n */\n\n/** Minimal ERC-20 ABI covering the helpers this package exposes. */\nexport const ERC20_ABI = [\n {\n type: \"function\",\n name: \"name\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"symbol\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"decimals\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint8\" }],\n },\n {\n type: \"function\",\n name: \"totalSupply\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"balanceOf\",\n stateMutability: \"view\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"allowance\",\n stateMutability: \"view\",\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"transfer\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"approve\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"event\",\n name: \"Transfer\",\n inputs: [\n { indexed: true, name: \"from\", type: \"address\" },\n { indexed: true, name: \"to\", type: \"address\" },\n { indexed: false, name: \"value\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"Approval\",\n inputs: [\n { indexed: true, name: \"owner\", type: \"address\" },\n { indexed: true, name: \"spender\", type: \"address\" },\n { indexed: false, name: \"value\", type: \"uint256\" },\n ],\n },\n] as const;\n\n/** Minimal ERC-721 ABI covering the helpers this package exposes. */\nexport const ERC721_ABI = [\n {\n type: \"function\",\n name: \"name\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"symbol\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"balanceOf\",\n stateMutability: \"view\",\n inputs: [{ name: \"owner\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"ownerOf\",\n stateMutability: \"view\",\n inputs: [{ name: \"tokenId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n type: \"function\",\n name: \"tokenURI\",\n stateMutability: \"view\",\n inputs: [{ name: \"tokenId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"getApproved\",\n stateMutability: \"view\",\n inputs: [{ name: \"tokenId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n type: \"function\",\n name: \"isApprovedForAll\",\n stateMutability: \"view\",\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"operator\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"approve\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"setApprovalForAll\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"operator\", type: \"address\" },\n { name: \"approved\", type: \"bool\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"transferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"tokenId\", type: \"uint256\" },\n { name: \"data\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n type: \"event\",\n name: \"Transfer\",\n inputs: [\n { indexed: true, name: \"from\", type: \"address\" },\n { indexed: true, name: \"to\", type: \"address\" },\n { indexed: true, name: \"tokenId\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"Approval\",\n inputs: [\n { indexed: true, name: \"owner\", type: \"address\" },\n { indexed: true, name: \"approved\", type: \"address\" },\n { indexed: true, name: \"tokenId\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"ApprovalForAll\",\n inputs: [\n { indexed: true, name: \"owner\", type: \"address\" },\n { indexed: true, name: \"operator\", type: \"address\" },\n { indexed: false, name: \"approved\", type: \"bool\" },\n ],\n },\n] as const;\n\n/** Minimal ERC-1155 ABI covering the helpers this package exposes. */\nexport const ERC1155_ABI = [\n {\n type: \"function\",\n name: \"balanceOf\",\n stateMutability: \"view\",\n inputs: [\n { name: \"account\", type: \"address\" },\n { name: \"id\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"balanceOfBatch\",\n stateMutability: \"view\",\n inputs: [\n { name: \"accounts\", type: \"address[]\" },\n { name: \"ids\", type: \"uint256[]\" },\n ],\n outputs: [{ name: \"\", type: \"uint256[]\" }],\n },\n {\n type: \"function\",\n name: \"uri\",\n stateMutability: \"view\",\n inputs: [{ name: \"id\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n type: \"function\",\n name: \"isApprovedForAll\",\n stateMutability: \"view\",\n inputs: [\n { name: \"account\", type: \"address\" },\n { name: \"operator\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"setApprovalForAll\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"operator\", type: \"address\" },\n { name: \"approved\", type: \"bool\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"id\", type: \"uint256\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"data\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"safeBatchTransferFrom\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"ids\", type: \"uint256[]\" },\n { name: \"amounts\", type: \"uint256[]\" },\n { name: \"data\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n type: \"event\",\n name: \"TransferSingle\",\n inputs: [\n { indexed: true, name: \"operator\", type: \"address\" },\n { indexed: true, name: \"from\", type: \"address\" },\n { indexed: true, name: \"to\", type: \"address\" },\n { indexed: false, name: \"id\", type: \"uint256\" },\n { indexed: false, name: \"value\", type: \"uint256\" },\n ],\n },\n {\n type: \"event\",\n name: \"ApprovalForAll\",\n inputs: [\n { indexed: true, name: \"account\", type: \"address\" },\n { indexed: true, name: \"operator\", type: \"address\" },\n { indexed: false, name: \"approved\", type: \"bool\" },\n ],\n },\n] as const;\n\n/**\n * Post-quantum cryptography precompile interface (`IQorePQC`).\n *\n * Exposes signature verification and on-chain key registration status for\n * QoreChain's quantum-resistant key material (Dilithium / ML-DSA family).\n */\nexport const IQORE_PQC_ABI = [\n {\n type: \"function\",\n name: \"pqcVerify\",\n stateMutability: \"view\",\n inputs: [\n { name: \"pubkey\", type: \"bytes\" },\n { name: \"signature\", type: \"bytes\" },\n { name: \"message\", type: \"bytes\" },\n ],\n outputs: [{ name: \"valid\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"pqcKeyStatus\",\n stateMutability: \"view\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [\n { name: \"registered\", type: \"bool\" },\n { name: \"algorithmId\", type: \"uint8\" },\n { name: \"pubkey\", type: \"bytes\" },\n ],\n },\n] as const;\n\n/**\n * On-chain risk/anomaly intelligence precompile interface (`IQoreAI`).\n */\nexport const IQORE_AI_ABI = [\n {\n type: \"function\",\n name: \"aiRiskScore\",\n stateMutability: \"view\",\n inputs: [{ name: \"txData\", type: \"bytes\" }],\n outputs: [\n { name: \"score\", type: \"uint256\" },\n { name: \"level\", type: \"uint8\" },\n ],\n },\n {\n type: \"function\",\n name: \"aiAnomalyCheck\",\n stateMutability: \"view\",\n inputs: [\n { name: \"sender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [\n { name: \"anomalyScore\", type: \"uint256\" },\n { name: \"flagged\", type: \"bool\" },\n ],\n },\n] as const;\n\n/**\n * Consensus parameters precompile interface (`IQoreConsensus`).\n *\n * Surfaces live, adaptively-tuned consensus parameters from the network.\n */\nexport const IQORE_CONSENSUS_ABI = [\n {\n type: \"function\",\n name: \"rlConsensusParams\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n { name: \"blockTime\", type: \"uint256\" },\n { name: \"baseGasPrice\", type: \"uint256\" },\n { name: \"validatorSetSize\", type: \"uint256\" },\n { name: \"epoch\", type: \"uint256\" },\n ],\n },\n] as const;\n","/**\n * ERC-20 conveniences over viem's `readContract` / `writeContract`, using a\n * bundled minimal ERC-20 ABI. Read helpers take a viem `PublicClient`; write\n * helpers take a viem `WalletClient`.\n */\n\nimport type {\n Account,\n Address,\n Hash,\n PublicClient,\n WalletClient,\n} from \"viem\";\nimport { ERC20_ABI } from \"./abi\";\n\n/** Token metadata returned by {@link metadata}. */\nexport interface Erc20Metadata {\n name: string;\n symbol: string;\n decimals: number;\n}\n\n/** Read the token balance of `account`. */\nexport function balanceOf(\n client: PublicClient,\n token: Address,\n account: Address,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"balanceOf\",\n args: [account],\n });\n}\n\n/** Read the remaining allowance `spender` may draw from `owner`. */\nexport function allowance(\n client: PublicClient,\n token: Address,\n owner: Address,\n spender: Address,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"allowance\",\n args: [owner, spender],\n });\n}\n\n/** Read name/symbol/decimals in parallel. */\nexport async function metadata(\n client: PublicClient,\n token: Address,\n): Promise<Erc20Metadata> {\n const [name, symbol, decimals] = await Promise.all([\n client.readContract({ address: token, abi: ERC20_ABI, functionName: \"name\" }),\n client.readContract({ address: token, abi: ERC20_ABI, functionName: \"symbol\" }),\n client.readContract({ address: token, abi: ERC20_ABI, functionName: \"decimals\" }),\n ]);\n return { name, symbol, decimals };\n}\n\n/** Transfer `amount` tokens to `to`. Returns the transaction hash. */\nexport function transfer(\n client: WalletClient,\n token: Address,\n to: Address,\n amount: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"transfer\",\n args: [to, amount],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Approve `spender` to draw up to `amount`. Returns the transaction hash. */\nexport function approve(\n client: WalletClient,\n token: Address,\n spender: Address,\n amount: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC20_ABI,\n functionName: \"approve\",\n args: [spender, amount],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Namespaced ERC-20 helpers. */\nexport const erc20 = {\n balanceOf,\n allowance,\n metadata,\n transfer,\n approve,\n} as const;\n","/**\n * ERC-721 conveniences over viem's `readContract` / `writeContract`, using a\n * bundled minimal ERC-721 ABI. Read helpers take a viem `PublicClient`; write\n * helpers take a viem `WalletClient`. Mirrors the {@link erc20} style.\n */\n\nimport type {\n Account,\n Address,\n Hash,\n Hex,\n PublicClient,\n WalletClient,\n} from \"viem\";\nimport { ERC721_ABI } from \"./abi\";\n\n/** Collection metadata returned by {@link metadata}. */\nexport interface Erc721Metadata {\n name: string;\n symbol: string;\n}\n\n/** Read the number of tokens owned by `owner`. */\nexport function balanceOf(\n client: PublicClient,\n token: Address,\n owner: Address,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"balanceOf\",\n args: [owner],\n });\n}\n\n/** Read the owner of `tokenId`. */\nexport function ownerOf(\n client: PublicClient,\n token: Address,\n tokenId: bigint,\n): Promise<Address> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"ownerOf\",\n args: [tokenId],\n });\n}\n\n/** Read the metadata URI for `tokenId`. */\nexport function tokenURI(\n client: PublicClient,\n token: Address,\n tokenId: bigint,\n): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"tokenURI\",\n args: [tokenId],\n });\n}\n\n/** Read the approved address for a single `tokenId`. */\nexport function getApproved(\n client: PublicClient,\n token: Address,\n tokenId: bigint,\n): Promise<Address> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"getApproved\",\n args: [tokenId],\n });\n}\n\n/** Read whether `operator` is approved to manage all of `owner`'s tokens. */\nexport function isApprovedForAll(\n client: PublicClient,\n token: Address,\n owner: Address,\n operator: Address,\n): Promise<boolean> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"isApprovedForAll\",\n args: [owner, operator],\n });\n}\n\n/** Read the collection name. */\nexport function name(client: PublicClient, token: Address): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"name\",\n });\n}\n\n/** Read the collection symbol. */\nexport function symbol(client: PublicClient, token: Address): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"symbol\",\n });\n}\n\n/** Read name/symbol in parallel. */\nexport async function metadata(\n client: PublicClient,\n token: Address,\n): Promise<Erc721Metadata> {\n const [n, s] = await Promise.all([name(client, token), symbol(client, token)]);\n return { name: n, symbol: s };\n}\n\n/** Approve `to` to transfer `tokenId`. Returns the transaction hash. */\nexport function approve(\n client: WalletClient,\n token: Address,\n to: Address,\n tokenId: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"approve\",\n args: [to, tokenId],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Set or revoke `operator` as an approved manager for all caller tokens. */\nexport function setApprovalForAll(\n client: WalletClient,\n token: Address,\n operator: Address,\n approved: boolean,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"setApprovalForAll\",\n args: [operator, approved],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Transfer `tokenId` from `from` to `to`. Returns the transaction hash. */\nexport function transferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n tokenId: bigint,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"transferFrom\",\n args: [from, to, tokenId],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/**\n * Safe-transfer `tokenId` from `from` to `to`. Pass `data` to invoke the\n * 4-argument `safeTransferFrom(from,to,tokenId,bytes)` overload.\n */\nexport function safeTransferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n tokenId: bigint,\n data?: Hex,\n): Promise<Hash> {\n if (data !== undefined) {\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"safeTransferFrom\",\n args: [from, to, tokenId, data],\n account: client.account as Account,\n chain: client.chain,\n });\n }\n return client.writeContract({\n address: token,\n abi: ERC721_ABI,\n functionName: \"safeTransferFrom\",\n args: [from, to, tokenId],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Namespaced ERC-721 helpers. */\nexport const erc721 = {\n balanceOf,\n ownerOf,\n tokenURI,\n getApproved,\n isApprovedForAll,\n name,\n symbol,\n metadata,\n approve,\n setApprovalForAll,\n transferFrom,\n safeTransferFrom,\n} as const;\n","/**\n * ERC-1155 conveniences over viem's `readContract` / `writeContract`, using a\n * bundled minimal ERC-1155 ABI. Read helpers take a viem `PublicClient`; write\n * helpers take a viem `WalletClient`. Mirrors the {@link erc20} style.\n */\n\nimport type {\n Account,\n Address,\n Hash,\n Hex,\n PublicClient,\n WalletClient,\n} from \"viem\";\nimport { ERC1155_ABI } from \"./abi\";\n\n/** Read the balance of token `id` held by `account`. */\nexport function balanceOf(\n client: PublicClient,\n token: Address,\n account: Address,\n id: bigint,\n): Promise<bigint> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"balanceOf\",\n args: [account, id],\n });\n}\n\n/** Read balances of `(accounts[i], ids[i])` pairs in a single call. */\nexport function balanceOfBatch(\n client: PublicClient,\n token: Address,\n accounts: readonly Address[],\n ids: readonly bigint[],\n): Promise<readonly bigint[]> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"balanceOfBatch\",\n args: [accounts, ids],\n });\n}\n\n/** Read the metadata URI template for token `id`. */\nexport function uri(\n client: PublicClient,\n token: Address,\n id: bigint,\n): Promise<string> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"uri\",\n args: [id],\n });\n}\n\n/** Read whether `operator` is approved to manage all of `account`'s tokens. */\nexport function isApprovedForAll(\n client: PublicClient,\n token: Address,\n account: Address,\n operator: Address,\n): Promise<boolean> {\n return client.readContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"isApprovedForAll\",\n args: [account, operator],\n });\n}\n\n/** Set or revoke `operator` as an approved manager for all caller tokens. */\nexport function setApprovalForAll(\n client: WalletClient,\n token: Address,\n operator: Address,\n approved: boolean,\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"setApprovalForAll\",\n args: [operator, approved],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Transfer `amount` of token `id` from `from` to `to`. */\nexport function safeTransferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n id: bigint,\n amount: bigint,\n data: Hex = \"0x\",\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"safeTransferFrom\",\n args: [from, to, id, amount, data],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Batch-transfer `amounts[i]` of token `ids[i]` from `from` to `to`. */\nexport function safeBatchTransferFrom(\n client: WalletClient,\n token: Address,\n from: Address,\n to: Address,\n ids: readonly bigint[],\n amounts: readonly bigint[],\n data: Hex = \"0x\",\n): Promise<Hash> {\n return client.writeContract({\n address: token,\n abi: ERC1155_ABI,\n functionName: \"safeBatchTransferFrom\",\n args: [from, to, ids, amounts, data],\n account: client.account as Account,\n chain: client.chain,\n });\n}\n\n/** Namespaced ERC-1155 helpers. */\nexport const erc1155 = {\n balanceOf,\n balanceOfBatch,\n uri,\n isApprovedForAll,\n setApprovalForAll,\n safeTransferFrom,\n safeBatchTransferFrom,\n} as const;\n","/**\n * Fee estimation conveniences over viem.\n *\n * {@link estimateEip1559Fees} wraps viem's `estimateFeesPerGas` to return the\n * EIP-1559 `maxFeePerGas` / `maxPriorityFeePerGas` pair; {@link gasPrice} is a\n * legacy helper returning a single gas price. Both take a viem `PublicClient`.\n */\n\nimport type { PublicClient } from \"viem\";\n\n/** EIP-1559 fee suggestion. */\nexport interface Eip1559Fees {\n /** Maximum total fee per gas (base + priority). */\n maxFeePerGas: bigint;\n /** Maximum priority (miner tip) fee per gas. */\n maxPriorityFeePerGas: bigint;\n}\n\n/**\n * Suggest EIP-1559 fees from the network, via viem's `estimateFeesPerGas`.\n *\n * @returns `{ maxFeePerGas, maxPriorityFeePerGas }`.\n */\nexport async function estimateEip1559Fees(\n client: PublicClient,\n): Promise<Eip1559Fees> {\n const { maxFeePerGas, maxPriorityFeePerGas } =\n await client.estimateFeesPerGas();\n return { maxFeePerGas, maxPriorityFeePerGas };\n}\n\n/** Legacy (pre-EIP-1559) gas price via viem's `getGasPrice`. */\nexport function gasPrice(client: PublicClient): Promise<bigint> {\n return client.getGasPrice();\n}\n\n/** Namespaced fee helpers. */\nexport const fees = {\n estimateEip1559Fees,\n gasPrice,\n} as const;\n","/**\n * Thin contract deploy/call wrappers over viem that default to the QoreChain\n * chain bound on the supplied client. These exist so the common cases need no\n * extra `chain`/`account` plumbing; for advanced use, call viem directly.\n */\n\nimport type {\n Abi,\n Account,\n Hash,\n Hex,\n PublicClient,\n WalletClient,\n} from \"viem\";\n\n/** Arguments for {@link deployContract}. */\nexport interface DeployContractArgs {\n /** Contract ABI (used for typed constructor args). */\n abi: Abi;\n /** Creation bytecode (`0x`-prefixed). */\n bytecode: Hex;\n /** Constructor arguments, if any. */\n args?: readonly unknown[];\n}\n\n/**\n * Deploy a contract using the wallet client's bound account and chain.\n * Returns the deployment transaction hash.\n */\nexport function deployContract(\n client: WalletClient,\n { abi, bytecode, args }: DeployContractArgs,\n): Promise<Hash> {\n return client.deployContract({\n abi,\n bytecode,\n args,\n account: client.account as Account,\n chain: client.chain,\n } as Parameters<WalletClient[\"deployContract\"]>[0]);\n}\n\n/**\n * Typed `readContract` passthrough. Defaults nothing beyond viem; provided so\n * callers can stay on a single import surface.\n */\nexport function readContract(\n client: PublicClient,\n params: Parameters<PublicClient[\"readContract\"]>[0],\n): ReturnType<PublicClient[\"readContract\"]> {\n return client.readContract(params);\n}\n\n/**\n * Typed `writeContract` wrapper that defaults `account` and `chain` from the\n * wallet client when the caller omits them.\n */\nexport function writeContract(\n client: WalletClient,\n params: Parameters<WalletClient[\"writeContract\"]>[0],\n): Promise<Hash> {\n const p = params as Record<string, unknown>;\n return client.writeContract({\n account: client.account as Account,\n chain: client.chain,\n ...p,\n } as Parameters<WalletClient[\"writeContract\"]>[0]);\n}\n","/**\n * Typed bindings for QoreChain's EVM precompiles — the headline capability of\n * the QoreChain EVM Engine. Each helper issues an `eth_call` against the fixed\n * precompile address using the corresponding bundled interface ABI.\n *\n * Availability note: on a default or community node these precompiles may return\n * a \"not available\" error; they are available on QoreChain network nodes. Handle\n * a thrown error from any of these helpers as \"feature not present on this node\".\n */\n\nimport {\n getAddress,\n toHex,\n type Address,\n type Hex,\n type PublicClient,\n} from \"viem\";\nimport { IQORE_PQC_ABI, IQORE_AI_ABI, IQORE_CONSENSUS_ABI } from \"./abi\";\n\n/**\n * Fixed 20-byte precompile addresses (zero-padded), matching the chain's\n * published interface registrations.\n */\nexport const PRECOMPILE_ADDRESSES = {\n /** CrossVM Bridge precompile. */\n crossVmBridge: \"0x0000000000000000000000000000000000000901\",\n /** PQC signature verification (`IQorePQC.pqcVerify`). */\n pqcVerify: \"0x0000000000000000000000000000000000000A01\",\n /** PQC key registration status (`IQorePQC.pqcKeyStatus`). */\n pqcKeyStatus: \"0x0000000000000000000000000000000000000A02\",\n /** AI transaction risk score (`IQoreAI.aiRiskScore`). */\n aiRiskScore: \"0x0000000000000000000000000000000000000B01\",\n /** AI anomaly check (`IQoreAI.aiAnomalyCheck`). */\n aiAnomalyCheck: \"0x0000000000000000000000000000000000000B02\",\n /** Consensus parameters (`IQoreConsensus.rlConsensusParams`). */\n rlConsensusParams: \"0x0000000000000000000000000000000000000C01\",\n} as const satisfies Record<string, Address>;\n\n/**\n * Fixed address of the AI transaction risk-score precompile (`IQoreAI.aiRiskScore`).\n *\n * Convenience alias of {@link PRECOMPILE_ADDRESSES.aiRiskScore}.\n */\nexport const AI_RISK_SCORE_ADDRESS: Address =\n PRECOMPILE_ADDRESSES.aiRiskScore;\n\n/**\n * Fixed address of the AI anomaly-check precompile (`IQoreAI.aiAnomalyCheck`).\n *\n * Convenience alias of {@link PRECOMPILE_ADDRESSES.aiAnomalyCheck}.\n */\nexport const AI_ANOMALY_CHECK_ADDRESS: Address =\n PRECOMPILE_ADDRESSES.aiAnomalyCheck;\n\n/** Coerce raw bytes input to a `0x`-prefixed hex string for the `bytes` ABI type. */\nfunction toHexData(data: Hex | Uint8Array): Hex {\n return typeof data === \"string\" ? data : toHex(data);\n}\n\n/**\n * Normalize a precompile address to its EIP-55 checksummed form.\n *\n * The exported {@link PRECOMPILE_ADDRESSES} preserve the chain's published\n * casing, which is not necessarily valid EIP-55; viem requires checksummed (or\n * all-lowercase) input, so calls route through this.\n */\nconst addr = (a: Address): Address => getAddress(a);\n\n/** Arguments for {@link pqcVerify}. */\nexport interface PqcVerifyArgs {\n pubkey: Hex;\n signature: Hex;\n message: Hex;\n}\n\n/** Verify a post-quantum signature on-chain. Returns `true` when valid. */\nexport function pqcVerify(\n client: PublicClient,\n { pubkey, signature, message }: PqcVerifyArgs,\n): Promise<boolean> {\n return client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.pqcVerify),\n abi: IQORE_PQC_ABI,\n functionName: \"pqcVerify\",\n args: [pubkey, signature, message],\n });\n}\n\n/** Result of {@link pqcKeyStatus}. */\nexport interface PqcKeyStatus {\n registered: boolean;\n algorithmId: number;\n pubkey: Hex;\n}\n\n/** Query the on-chain post-quantum key registration status for an account. */\nexport async function pqcKeyStatus(\n client: PublicClient,\n account: Address,\n): Promise<PqcKeyStatus> {\n const [registered, algorithmId, pubkey] = await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.pqcKeyStatus),\n abi: IQORE_PQC_ABI,\n functionName: \"pqcKeyStatus\",\n args: [account],\n });\n return { registered, algorithmId, pubkey };\n}\n\n/** Result of {@link aiRiskScore}. */\nexport interface AiRiskScore {\n score: bigint;\n level: number;\n}\n\n/** Compute an on-chain risk score for raw transaction data. */\nexport async function aiRiskScore(\n client: PublicClient,\n txData: Hex | Uint8Array,\n): Promise<AiRiskScore> {\n const [score, level] = await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.aiRiskScore),\n abi: IQORE_AI_ABI,\n functionName: \"aiRiskScore\",\n args: [toHexData(txData)],\n });\n return { score, level };\n}\n\n/** Arguments for {@link aiAnomalyCheck}. */\nexport interface AiAnomalyCheckArgs {\n sender: Address;\n amount: bigint;\n}\n\n/** Result of {@link aiAnomalyCheck}. */\nexport interface AiAnomalyCheck {\n anomalyScore: bigint;\n flagged: boolean;\n}\n\n/** Check whether a (sender, amount) pair is anomalous. */\nexport async function aiAnomalyCheck(\n client: PublicClient,\n { sender, amount }: AiAnomalyCheckArgs,\n): Promise<AiAnomalyCheck> {\n const [anomalyScore, flagged] = await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.aiAnomalyCheck),\n abi: IQORE_AI_ABI,\n functionName: \"aiAnomalyCheck\",\n args: [sender, amount],\n });\n return { anomalyScore, flagged };\n}\n\n/** Result of {@link rlConsensusParams}. */\nexport interface ConsensusParams {\n blockTime: bigint;\n baseGasPrice: bigint;\n validatorSetSize: bigint;\n epoch: bigint;\n}\n\n/** Read the live, adaptively-tuned consensus parameters. */\nexport async function rlConsensusParams(\n client: PublicClient,\n): Promise<ConsensusParams> {\n const [blockTime, baseGasPrice, validatorSetSize, epoch] =\n await client.readContract({\n address: addr(PRECOMPILE_ADDRESSES.rlConsensusParams),\n abi: IQORE_CONSENSUS_ABI,\n functionName: \"rlConsensusParams\",\n });\n return { blockTime, baseGasPrice, validatorSetSize, epoch };\n}\n\n/** Namespaced precompile helpers. */\nexport const precompiles = {\n pqcVerify,\n pqcKeyStatus,\n aiRiskScore,\n aiAnomalyCheck,\n rlConsensusParams,\n} as const;\n","/**\n * AI pre-flight risk scoring — a QoreChain-unique capability.\n *\n * QoreChain ships an on-chain inference engine (QCAI) exposed to the EVM through\n * two read-only precompiles. Any dApp can score a transaction *before* it is\n * broadcast, using nothing but `eth_call`s, and combine that with a gas estimate\n * to make an informed, policy-driven decision off-chain.\n *\n * - {@link aiRiskScore} — a model-derived risk score + bucketed level for raw\n * transaction calldata (precompile `0x..0B01`).\n * - {@link aiAnomalyCheck} — an anomaly score + boolean flag for a\n * `(sender, amount)` pair (precompile `0x..0B02`).\n * - {@link simulateWithRiskScore} — one call that bundles a gas estimate, a risk\n * score, and an anomaly check into a single advisory verdict.\n *\n * These bindings re-use the precompile address constants and ABIs in\n * `./precompiles` / `./abi`. They expose the *high-level, positional-argument*\n * surface the SDK documents; the namespaced `precompiles.*` bindings remain the\n * low-level form.\n *\n * Availability note: on a default or community node these precompiles may return\n * a \"not available\" error; they are available on QoreChain network nodes. Treat a\n * thrown error from any of these helpers as \"feature not present on this node\".\n */\n\nimport {\n encodeFunctionData,\n decodeFunctionResult,\n toHex,\n getAddress,\n type Address,\n type Hex,\n type PublicClient,\n} from \"viem\";\n\nimport { IQORE_AI_ABI } from \"./abi\";\nimport {\n AI_RISK_SCORE_ADDRESS,\n AI_ANOMALY_CHECK_ADDRESS,\n type AiRiskScore,\n type AiAnomalyCheck,\n} from \"./precompiles\";\n\nexport {\n AI_RISK_SCORE_ADDRESS,\n AI_ANOMALY_CHECK_ADDRESS,\n type AiRiskScore,\n type AiAnomalyCheck,\n};\n\n/**\n * Risk level at which {@link simulateWithRiskScore} stops reporting a transaction\n * as `safe`. The chain's example policy uses `require(level < 3)`, so a level of\n * `3` or above is treated as unsafe here.\n *\n * This threshold is **advisory**. The precompiles do not block anything on their\n * own — an off-chain dApp should pick and enforce its own policy (and a contract\n * can enforce its own on-chain `require`). It is exported so callers can reference\n * the same default the SDK documents.\n */\nexport const RISK_LEVEL_UNSAFE_THRESHOLD = 3;\n\n/** Coerce raw bytes input to a `0x`-prefixed hex string for the `bytes` ABI type. */\nfunction toHexData(data: Hex | Uint8Array): Hex {\n return typeof data === \"string\" ? data : toHex(data);\n}\n\n/**\n * Compute an on-chain risk score for raw transaction calldata.\n *\n * Issues an `eth_call` against the AI risk-score precompile, encoding\n * `aiRiskScore(bytes)` and decoding the `(uint256 score, uint8 level)` tuple.\n * Higher `level` means riskier (the chain's example policy uses `level < 3`).\n *\n * @param client - A viem public client bound to a QoreChain EVM endpoint.\n * @param txData - The transaction calldata, as hex or raw bytes.\n */\nexport async function aiRiskScore(\n client: PublicClient,\n txData: Hex | Uint8Array,\n): Promise<AiRiskScore> {\n const data = encodeFunctionData({\n abi: IQORE_AI_ABI,\n functionName: \"aiRiskScore\",\n args: [toHexData(txData)],\n });\n const result = await client.call({\n to: getAddress(AI_RISK_SCORE_ADDRESS),\n data,\n });\n const [score, level] = decodeFunctionResult({\n abi: IQORE_AI_ABI,\n functionName: \"aiRiskScore\",\n data: result.data ?? \"0x\",\n });\n return { score, level };\n}\n\n/**\n * Check whether a `(sender, amount)` pair is anomalous.\n *\n * Issues an `eth_call` against the AI anomaly-check precompile, encoding\n * `aiAnomalyCheck(address,uint256)` and decoding the\n * `(uint256 anomalyScore, bool flagged)` tuple.\n *\n * @param client - A viem public client bound to a QoreChain EVM endpoint.\n * @param sender - The transaction sender to evaluate.\n * @param amount - The transferred value (in wei) to evaluate.\n */\nexport async function aiAnomalyCheck(\n client: PublicClient,\n sender: Address,\n amount: bigint,\n): Promise<AiAnomalyCheck> {\n const data = encodeFunctionData({\n abi: IQORE_AI_ABI,\n functionName: \"aiAnomalyCheck\",\n args: [sender, amount],\n });\n const result = await client.call({\n to: getAddress(AI_ANOMALY_CHECK_ADDRESS),\n data,\n });\n const [anomalyScore, flagged] = decodeFunctionResult({\n abi: IQORE_AI_ABI,\n functionName: \"aiAnomalyCheck\",\n data: result.data ?? \"0x\",\n });\n return { anomalyScore, flagged };\n}\n\n/** A transaction shape for {@link simulateWithRiskScore}. */\nexport interface PreflightTx {\n /** The sender address (used for the anomaly check and gas estimate). */\n from: Address;\n /** The destination address (optional for contract-creation txs). */\n to?: Address;\n /** The transaction calldata, if any. */\n data?: Hex;\n /** The value to transfer, in wei. Defaults to `0`. */\n value?: bigint;\n}\n\n/** The combined result of {@link simulateWithRiskScore}. */\nexport interface PreflightResult {\n /** Estimated gas for the transaction (`eth_estimateGas`). */\n gas: bigint;\n /** On-chain risk score for the transaction calldata. */\n risk: AiRiskScore;\n /** On-chain anomaly check for `(from, value)`. */\n anomaly: AiAnomalyCheck;\n /**\n * Advisory verdict: `risk.level < RISK_LEVEL_UNSAFE_THRESHOLD && !anomaly.flagged`.\n *\n * This is a convenience signal only; enforce your own policy (see\n * {@link RISK_LEVEL_UNSAFE_THRESHOLD}).\n */\n safe: boolean;\n}\n\n/**\n * Run an AI pre-flight on a transaction: estimate gas, score its risk, and check\n * for anomalies — all read-only, before anything is signed or broadcast.\n *\n * This is a first-in-industry capability: the risk model runs *on-chain* and is\n * reachable from any dApp via plain `eth_call`/`eth_estimateGas`. The returned\n * `safe` flag is **advisory** — off-chain dApps should set and enforce their own\n * policy (and contracts can `require` on the level on-chain).\n *\n * - `gas` — `eth_estimateGas` for the transaction.\n * - `risk` — {@link aiRiskScore} over `tx.data` (or, when absent, the deployed\n * bytecode at `tx.to`, so a plain transfer to a contract is still scored).\n * - `anomaly` — {@link aiAnomalyCheck} over `(tx.from, tx.value ?? 0)`.\n * - `safe` — `risk.level < {@link RISK_LEVEL_UNSAFE_THRESHOLD} && !anomaly.flagged`.\n *\n * @param client - A viem public client bound to a QoreChain EVM endpoint.\n * @param tx - The transaction to evaluate.\n */\nexport async function simulateWithRiskScore(\n client: PublicClient,\n tx: PreflightTx,\n): Promise<PreflightResult> {\n const value = tx.value ?? 0n;\n\n // Score over the calldata, or fall back to the deployed code at `to` so a bare\n // value transfer to a contract is still given a meaningful risk signal.\n let riskData: Hex = tx.data ?? \"0x\";\n if ((riskData === \"0x\" || riskData.length <= 2) && tx.to) {\n riskData = await client.getCode({ address: tx.to }).then((c) => c ?? \"0x\");\n }\n\n const [gas, risk, anomaly] = await Promise.all([\n client.estimateGas({\n account: tx.from,\n to: tx.to,\n data: tx.data,\n value,\n }),\n aiRiskScore(client, riskData),\n aiAnomalyCheck(client, tx.from, value),\n ]);\n\n const safe = risk.level < RISK_LEVEL_UNSAFE_THRESHOLD && !anomaly.flagged;\n return { gas, risk, anomaly, safe };\n}\n\n/** Namespaced AI pre-flight helpers. */\nexport const ai = {\n aiRiskScore,\n aiAnomalyCheck,\n simulateWithRiskScore,\n RISK_LEVEL_UNSAFE_THRESHOLD,\n} as const;\n","/**\n * EVM browser-wallet integration for QoreChain (MetaMask and any EIP-1193\n * provider, with optional EIP-6963 multi-wallet discovery).\n *\n * Builds a viem `WalletClient` over an injected provider so dApps can request\n * accounts, add/switch the QoreChain EVM network, and sign + send transactions.\n *\n * ```ts\n * import { getEvmWalletClient, addQoreChainNetwork } from \"@qorechain/evm\";\n * import { getNetwork } from \"@qorechain/sdk\";\n *\n * await addQoreChainNetwork(window.ethereum, getNetwork(\"mainnet\"));\n * const { walletClient, address } = await getEvmWalletClient();\n * ```\n */\n\nimport {\n createWalletClient,\n custom,\n defineChain,\n type Address,\n type Chain,\n type WalletClient,\n} from \"viem\";\n\n/**\n * The minimal EIP-1193 provider surface used here. Declared structurally so no\n * wallet types package is required; `window.ethereum` is structurally\n * compatible.\n */\nexport interface Eip1193Provider {\n request(args: { method: string; params?: unknown[] | object }): Promise<unknown>;\n on?(event: string, listener: (...args: unknown[]) => void): void;\n removeListener?(event: string, listener: (...args: unknown[]) => void): void;\n}\n\n/** Window augmentation for the default injected EVM provider. */\ninterface EthereumWindow {\n ethereum?: Eip1193Provider;\n}\n\n/** Subset of a qorechain-sdk network needed to add the EVM chain to a wallet. */\nexport interface EvmNetworkInfo {\n /** EVM endpoints (`evmRpc`, optional `evmWs`). */\n endpoints: { evmRpc: string; evmWs?: string };\n /** Display coin info (used for the native currency). */\n coin: { display: string };\n}\n\n/** Options for {@link getEvmWalletClient}. */\nexport interface GetEvmWalletClientOptions {\n /** The EIP-1193 provider to use. Defaults to `window.ethereum`. */\n provider?: Eip1193Provider;\n /**\n * Numeric EVM chain id. If omitted, it is auto-detected via `eth_chainId` on\n * the connected provider.\n */\n chainId?: number;\n /** Native currency decimals for the viem chain. Defaults to 18. */\n decimals?: number;\n}\n\n/** The result of {@link getEvmWalletClient}. */\nexport interface EvmWalletConnection {\n /** viem wallet client bound to the connected account and chain. */\n walletClient: WalletClient;\n /** The connected (first) account address. */\n address: Address;\n /** The underlying EIP-1193 provider. */\n provider: Eip1193Provider;\n /** The viem `Chain` object describing the connected network. */\n chain: Chain;\n}\n\n/** Resolve the EIP-1193 provider from options or `window`, or throw. */\nfunction resolveProvider(provider?: Eip1193Provider): Eip1193Provider {\n if (provider) return provider;\n if (typeof window === \"undefined\") {\n throw new Error(\n \"EVM wallet: no browser `window` available. Run in a browser, or pass `provider` explicitly.\",\n );\n }\n const injected = (window as unknown as EthereumWindow).ethereum;\n if (!injected) {\n throw new Error(\n \"EVM wallet: no injected EIP-1193 provider found (window.ethereum). Install MetaMask, or pass `provider`.\",\n );\n }\n return injected;\n}\n\n/** Convert a numeric chain id to its `0x`-prefixed hex form. */\nexport function toHexChainId(chainId: number): `0x${string}` {\n return `0x${chainId.toString(16)}`;\n}\n\n/**\n * Request the provider's accounts via `eth_requestAccounts`.\n *\n * @returns The authorized account addresses (the first is the active account).\n */\nexport async function requestAccounts(\n provider: Eip1193Provider,\n): Promise<Address[]> {\n const accounts = (await provider.request({\n method: \"eth_requestAccounts\",\n })) as Address[];\n if (!accounts || accounts.length === 0) {\n throw new Error(\"EVM wallet: provider returned no accounts\");\n }\n return accounts;\n}\n\n/**\n * Add the QoreChain EVM network to the wallet via `wallet_addEthereumChain`.\n *\n * The EVM chain id is auto-detected (via `eth_chainId` against the network's\n * `evmRpc`) unless provided. Native currency is QOR with 18 decimals (the EVM\n * convention).\n */\nexport async function addQoreChainNetwork(\n provider: Eip1193Provider,\n network: EvmNetworkInfo,\n opts: { chainId?: number; blockExplorerUrl?: string } = {},\n): Promise<void> {\n const chainId =\n opts.chainId ?? Number(await provider.request({ method: \"eth_chainId\" }));\n await provider.request({\n method: \"wallet_addEthereumChain\",\n params: [\n {\n chainId: toHexChainId(chainId),\n chainName:\n network.coin.display === \"QOR\" ? \"QoreChain EVM\" : network.coin.display,\n nativeCurrency: {\n name: network.coin.display,\n symbol: network.coin.display,\n decimals: 18,\n },\n rpcUrls: [network.endpoints.evmRpc],\n ...(opts.blockExplorerUrl\n ? { blockExplorerUrls: [opts.blockExplorerUrl] }\n : {}),\n },\n ],\n });\n}\n\n/**\n * Switch the wallet to the given EVM chain via `wallet_switchEthereumChain`.\n */\nexport async function switchChain(\n provider: Eip1193Provider,\n chainId: number,\n): Promise<void> {\n await provider.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId: toHexChainId(chainId) }],\n });\n}\n\n/**\n * Connect to an injected EVM wallet and return a viem `WalletClient`.\n *\n * Requests accounts (`eth_requestAccounts`), resolves the EVM chain id (supplied\n * or auto-detected), and builds a wallet client over a viem `custom` transport.\n *\n * Browser-only: throws a clear error if no `window` or no injected provider.\n */\nexport async function getEvmWalletClient(\n opts: GetEvmWalletClientOptions = {},\n): Promise<EvmWalletConnection> {\n const provider = resolveProvider(opts.provider);\n const accounts = await requestAccounts(provider);\n const address = accounts[0];\n\n const chainId =\n opts.chainId ?? Number(await provider.request({ method: \"eth_chainId\" }));\n const decimals = opts.decimals ?? 18;\n\n const chain = defineChain({\n id: chainId,\n name: \"QoreChain EVM\",\n nativeCurrency: { name: \"QOR\", symbol: \"QOR\", decimals },\n rpcUrls: { default: { http: [] } },\n });\n\n const walletClient = createWalletClient({\n account: address,\n chain,\n transport: custom(provider),\n });\n\n return { walletClient, address, provider, chain };\n}\n\n/** A provider announced via the EIP-6963 discovery protocol. */\nexport interface Eip6963ProviderDetail {\n info: {\n uuid: string;\n name: string;\n icon: string;\n rdns: string;\n };\n provider: Eip1193Provider;\n}\n\n/**\n * Discover injected EVM providers via EIP-6963 (`eip6963:requestProvider`).\n *\n * Returns the providers that announce themselves within `timeoutMs` (default\n * 200ms). `window.ethereum` remains the baseline default for the other helpers;\n * use this when you want to let the user pick among multiple installed wallets.\n *\n * Resolves to an empty array outside a browser environment.\n */\nexport function discoverEvmProviders(\n timeoutMs = 200,\n): Promise<Eip6963ProviderDetail[]> {\n if (typeof window === \"undefined\") return Promise.resolve([]);\n\n return new Promise((resolve) => {\n const found = new Map<string, Eip6963ProviderDetail>();\n const onAnnounce = (event: Event): void => {\n const detail = (event as CustomEvent<Eip6963ProviderDetail>).detail;\n if (detail?.info?.uuid) found.set(detail.info.uuid, detail);\n };\n window.addEventListener(\"eip6963:announceProvider\", onAnnounce as EventListener);\n window.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n setTimeout(() => {\n window.removeEventListener(\n \"eip6963:announceProvider\",\n onAnnounce as EventListener,\n );\n resolve([...found.values()]);\n }, timeoutMs);\n });\n}\n","/**\n * Human-readable decoding of EVM execution errors.\n *\n * viem throws richly-typed error objects, but the useful detail (a revert\n * reason, a custom-error name and args, or a low-level RPC message) is often\n * buried several layers deep in the error's `cause` chain. {@link decodeEvmError}\n * walks that chain with viem's `BaseError.walk`, decodes custom-error revert\n * data against an optional ABI via `decodeErrorResult`, and returns a flat,\n * readable summary.\n */\n\nimport {\n BaseError,\n ContractFunctionRevertedError,\n decodeErrorResult,\n type Abi,\n type Hex,\n} from \"viem\";\n\n/** A decoded EVM error. */\nexport interface DecodedEvmError {\n /** A readable summary message. */\n message: string;\n /** A short, stable kind discriminator. */\n kind:\n | \"revert\"\n | \"custom_error\"\n | \"panic\"\n | \"rpc\"\n | \"execution\"\n | \"unknown\";\n /** The custom-error or revert function name, when decoded. */\n errorName?: string;\n /** Decoded custom-error arguments, when available. */\n args?: readonly unknown[];\n /** The raw revert data, when present. */\n data?: Hex;\n}\n\n/** Extract a `0x`-prefixed revert data blob from common viem error shapes. */\nfunction extractRevertData(err: unknown): Hex | undefined {\n const e = err as { data?: unknown; cause?: { data?: unknown } };\n const d = e?.data ?? e?.cause?.data;\n if (typeof d === \"string\" && d.startsWith(\"0x\")) return d as Hex;\n if (d && typeof d === \"object\" && \"data\" in (d as object)) {\n const inner = (d as { data?: unknown }).data;\n if (typeof inner === \"string\" && inner.startsWith(\"0x\")) return inner as Hex;\n }\n return undefined;\n}\n\n/**\n * Decode an EVM error thrown by viem into a readable, structured form.\n *\n * @param error - The thrown error (a viem `BaseError`, an RPC error, or any value).\n * @param abi - Optional contract ABI used to decode custom-error revert data.\n * @returns A {@link DecodedEvmError}.\n */\nexport function decodeEvmError(error: unknown, abi?: Abi): DecodedEvmError {\n if (error instanceof BaseError) {\n // Prefer a contract-level revert: it carries the reason or custom error.\n const revert = error.walk(\n (e) => e instanceof ContractFunctionRevertedError,\n ) as ContractFunctionRevertedError | null;\n\n if (revert instanceof ContractFunctionRevertedError) {\n const data = revert.data;\n if (data?.errorName === \"Error\") {\n const reason = (data.args?.[0] as string) ?? revert.reason ?? \"reverted\";\n return { message: `reverted: ${reason}`, kind: \"revert\", errorName: \"Error\" };\n }\n if (data?.errorName === \"Panic\") {\n return {\n message: `panic: ${String(data.args?.[0])}`,\n kind: \"panic\",\n errorName: \"Panic\",\n args: data.args,\n };\n }\n if (data?.errorName) {\n return {\n message: `custom error ${data.errorName}(${(data.args ?? [])\n .map((a) => String(a))\n .join(\", \")})`,\n kind: \"custom_error\",\n errorName: data.errorName,\n args: data.args,\n };\n }\n if (revert.reason) {\n return { message: `reverted: ${revert.reason}`, kind: \"revert\" };\n }\n }\n\n // No decoded contract revert: try to decode raw revert data with the ABI.\n const data = extractRevertData(error);\n if (data && abi) {\n try {\n const decoded = decodeErrorResult({ abi, data });\n return {\n message: `custom error ${decoded.errorName}(${(decoded.args ?? [])\n .map((a) => String(a))\n .join(\", \")})`,\n kind: \"custom_error\",\n errorName: decoded.errorName,\n args: decoded.args as readonly unknown[] | undefined,\n data,\n };\n } catch {\n // fall through to the generic message\n }\n }\n\n // Fall back to viem's own short message off the deepest cause.\n const deepest = error.walk() as BaseError;\n return {\n message: deepest.shortMessage ?? error.shortMessage ?? error.message,\n kind: \"execution\",\n data,\n };\n }\n\n if (error instanceof Error) {\n return { message: error.message, kind: \"rpc\" };\n }\n return { message: String(error), kind: \"unknown\" };\n}\n","/**\n * Real-time EVM watchers for QoreChain, over a viem websocket transport.\n *\n * {@link createEvmSubscriptionClient} builds a viem public client on a\n * `webSocket` transport pointed at the network's `evmWs` endpoint, and the\n * `watch*` helpers are thin passthroughs to viem's polling/subscription\n * watchers scoped to that client. Each returns viem's `unwatch` function.\n *\n * These are deliberately minimal: viem owns the subscription lifecycle and\n * reconnection; this module just wires the QoreChain endpoint and re-exports a\n * focused surface so callers don't construct the transport themselves.\n */\n\nimport {\n createPublicClient,\n webSocket,\n type Chain,\n type PublicClient,\n type Transport,\n type WatchBlocksParameters,\n type WatchEventParameters,\n type WatchContractEventParameters,\n type WatchPendingTransactionsParameters,\n} from \"viem\";\n\n/** Subset of a qorechain-sdk network's endpoints relevant to EVM subscriptions. */\nexport interface EvmWsEndpoints {\n /** EVM JSON-RPC WebSocket endpoint. */\n evmWs: string;\n}\n\n/** Options for {@link createEvmSubscriptionClient}. */\nexport interface CreateEvmSubscriptionClientOptions {\n /** EVM websocket URL. Mutually exclusive with `endpoints`. */\n wsUrl?: string;\n /** A qorechain-sdk network endpoints object (uses `evmWs`). */\n endpoints?: EvmWsEndpoints;\n /** Optional viem `Chain` to bind. */\n chain?: Chain;\n /** Custom viem transport (primarily for testing). Overrides `wsUrl`/`endpoints`. */\n transport?: Transport;\n}\n\n/** A function that stops a watcher. */\nexport type Unwatch = () => void;\n\nfunction resolveTransport(opts: CreateEvmSubscriptionClientOptions): Transport {\n if (opts.transport) return opts.transport;\n const url = opts.wsUrl ?? opts.endpoints?.evmWs;\n if (!url) {\n throw new Error(\n \"createEvmSubscriptionClient: provide `wsUrl`, `endpoints.evmWs`, or a `transport`\",\n );\n }\n return webSocket(url);\n}\n\n/**\n * Create a viem public client on a websocket transport for subscriptions.\n *\n * The returned client is a standard viem `PublicClient`; the `watch*` helpers in\n * this module accept it (or any viem public client).\n */\nexport function createEvmSubscriptionClient(\n opts: CreateEvmSubscriptionClientOptions,\n): PublicClient {\n const transport = resolveTransport(opts);\n return createPublicClient({ transport, chain: opts.chain });\n}\n\n/** Watch for new blocks. Returns viem's `unwatch`. */\nexport function watchBlocks(\n client: PublicClient,\n args: WatchBlocksParameters,\n): Unwatch {\n return client.watchBlocks(args as never);\n}\n\n/** Watch for logs matching an event filter. Returns viem's `unwatch`. */\nexport function watchEvent(\n client: PublicClient,\n args: WatchEventParameters,\n): Unwatch {\n return client.watchEvent(args as never);\n}\n\n/** Watch a specific contract's events (decoded). Returns viem's `unwatch`. */\nexport function watchContractEvent(\n client: PublicClient,\n args: WatchContractEventParameters,\n): Unwatch {\n return client.watchContractEvent(args as never);\n}\n\n/** Watch the mempool for pending transaction hashes. Returns viem's `unwatch`. */\nexport function watchPendingTransactions(\n client: PublicClient,\n args: WatchPendingTransactionsParameters,\n): Unwatch {\n return client.watchPendingTransactions(args as never);\n}\n","/**\n * `@qorechain/evm` — a thin, type-safe adapter over [viem](https://viem.sh) for\n * the QoreChain EVM Engine.\n *\n * It does not reimplement an EVM client; viem is a peer dependency. This package\n * adds QoreChain-specific conveniences: a chain-aware client factory with EVM\n * chain-id auto-detection, ERC-20 helpers, contract deploy/call wrappers, and\n * typed bindings for QoreChain's EVM precompiles.\n */\n\n/** Package version. */\nexport const VERSION = \"0.5.0\";\n\nexport {\n createEvmClient,\n type CreateEvmClientOptions,\n type EvmClient,\n type EvmEndpoints,\n} from \"./client\";\n\nexport { evmAccountFromPrivateKey } from \"./accounts\";\n\nexport {\n erc20,\n balanceOf,\n allowance,\n metadata,\n transfer,\n approve,\n type Erc20Metadata,\n} from \"./erc20\";\n\nexport {\n erc721,\n type Erc721Metadata,\n} from \"./erc721\";\n\nexport { erc1155 } from \"./erc1155\";\n\nexport {\n fees,\n estimateEip1559Fees,\n gasPrice,\n type Eip1559Fees,\n} from \"./fees\";\n\nexport {\n deployContract,\n readContract,\n writeContract,\n type DeployContractArgs,\n} from \"./contracts\";\n\nexport {\n precompiles,\n pqcVerify,\n pqcKeyStatus,\n rlConsensusParams,\n PRECOMPILE_ADDRESSES,\n AI_RISK_SCORE_ADDRESS,\n AI_ANOMALY_CHECK_ADDRESS,\n type PqcVerifyArgs,\n type PqcKeyStatus,\n type AiRiskScore,\n type AiAnomalyCheckArgs,\n type AiAnomalyCheck,\n type ConsensusParams,\n} from \"./precompiles\";\n\n// AI pre-flight risk scoring — the high-level, positional-argument surface for\n// QoreChain's on-chain AI precompiles (score + anomaly + a bundled simulate).\nexport {\n ai,\n aiRiskScore,\n aiAnomalyCheck,\n simulateWithRiskScore,\n RISK_LEVEL_UNSAFE_THRESHOLD,\n type PreflightTx,\n type PreflightResult,\n} from \"./ai\";\n\nexport {\n ERC20_ABI,\n ERC721_ABI,\n ERC1155_ABI,\n IQORE_PQC_ABI,\n IQORE_AI_ABI,\n IQORE_CONSENSUS_ABI,\n} from \"./abi\";\n\nexport {\n getEvmWalletClient,\n requestAccounts,\n addQoreChainNetwork,\n switchChain,\n discoverEvmProviders,\n toHexChainId,\n type Eip1193Provider,\n type EvmNetworkInfo,\n type GetEvmWalletClientOptions,\n type EvmWalletConnection,\n type Eip6963ProviderDetail,\n} from \"./wallet\";\n\nexport { decodeEvmError, type DecodedEvmError } from \"./errors\";\n\nexport {\n createEvmSubscriptionClient,\n watchBlocks,\n watchEvent,\n watchContractEvent,\n watchPendingTransactions,\n type CreateEvmSubscriptionClientOptions,\n type EvmWsEndpoints,\n type Unwatch,\n} from \"./subscribe\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qorechain/evm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "QoreChain EVM adapter: thin, type-safe conveniences over viem for the QoreChain EVM Engine, including ERC-20 helpers and bindings for QoreChain precompiles.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "QoreChain",
|
|
@@ -19,13 +19,6 @@
|
|
|
19
19
|
"files": [
|
|
20
20
|
"dist"
|
|
21
21
|
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"build": "tsup",
|
|
24
|
-
"test": "vitest run",
|
|
25
|
-
"test:watch": "vitest",
|
|
26
|
-
"typecheck": "tsc --noEmit",
|
|
27
|
-
"lint": "eslint src test"
|
|
28
|
-
},
|
|
29
22
|
"repository": {
|
|
30
23
|
"type": "git",
|
|
31
24
|
"url": "git+https://github.com/qorechain/qorechain-sdk.git",
|
|
@@ -47,5 +40,12 @@
|
|
|
47
40
|
"typescript": "^5.6.3",
|
|
48
41
|
"viem": "^2.0.0",
|
|
49
42
|
"vitest": "^2.1.2"
|
|
43
|
+
},
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "tsup",
|
|
46
|
+
"test": "vitest run",
|
|
47
|
+
"test:watch": "vitest",
|
|
48
|
+
"typecheck": "tsc --noEmit",
|
|
49
|
+
"lint": "eslint src test"
|
|
50
50
|
}
|
|
51
|
-
}
|
|
51
|
+
}
|