viem 0.0.1-alpha.26 → 0.0.1-alpha.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chain-4d46a747.d.ts +543 -0
- package/dist/{chain-b0cfb141.d.ts → chain-c7c44165.d.ts} +1 -1
- package/dist/chains.d.ts +5 -3
- package/dist/chains.js +46 -46
- package/dist/chains.mjs +1 -1
- package/dist/chunk-67DKKHAV.js +210 -0
- package/dist/chunk-67DKKHAV.js.map +1 -0
- package/dist/{chunk-LINNE4N4.js → chunk-7GQB4KE5.js} +219 -157
- package/dist/chunk-7GQB4KE5.js.map +1 -0
- package/dist/chunk-FPEKYEVU.js +265 -0
- package/dist/chunk-FPEKYEVU.js.map +1 -0
- package/dist/chunk-GRILGOX5.mjs +210 -0
- package/dist/chunk-GRILGOX5.mjs.map +1 -0
- package/dist/{chunk-YTG4YXMB.js → chunk-JJ4FDDDW.js} +16 -16
- package/dist/chunk-JJ4FDDDW.js.map +1 -0
- package/dist/chunk-NKO23GXR.mjs +265 -0
- package/dist/chunk-NKO23GXR.mjs.map +1 -0
- package/dist/{chunk-DSQO3E4F.js → chunk-NYWN5V47.js} +219 -59
- package/dist/chunk-NYWN5V47.js.map +1 -0
- package/dist/{chunk-BSAB6UH4.mjs → chunk-PVBEFQET.mjs} +7 -7
- package/dist/chunk-PVBEFQET.mjs.map +1 -0
- package/dist/{chunk-QSIX64VZ.mjs → chunk-RCJJFKTU.mjs} +164 -102
- package/dist/chunk-RCJJFKTU.mjs.map +1 -0
- package/dist/{chunk-PRG3BBPZ.mjs → chunk-TDOKFOQ5.mjs} +223 -63
- package/dist/chunk-TDOKFOQ5.mjs.map +1 -0
- package/dist/contract.d.ts +12 -128
- package/dist/contract.js +6 -4
- package/dist/contract.mjs +5 -3
- package/dist/{createClient-6689596e.d.ts → createClient-5d5c14d6.d.ts} +5 -3
- package/dist/createPublicClient-2b4afeac.d.ts +629 -0
- package/dist/{eip1193-617a05ae.d.ts → eip1193-f09a55af.d.ts} +2 -2
- package/dist/ens.d.ts +10 -68
- package/dist/ens.js +5 -199
- package/dist/ens.js.map +1 -1
- package/dist/ens.mjs +7 -201
- package/dist/ens.mjs.map +1 -1
- package/dist/formatAbiItem-d231fef2.d.ts +14 -0
- package/dist/{getAbiItem-d2e8bd76.d.ts → getAbiItem-0e085959.d.ts} +15 -15
- package/dist/index.d.ts +21 -12
- package/dist/index.js +368 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +358 -16
- package/dist/index.mjs.map +1 -1
- package/dist/namehash-88f4639d.d.ts +22 -0
- package/dist/parseGwei-07adffee.d.ts +344 -0
- package/dist/public.d.ts +11 -334
- package/dist/public.js +5 -3
- package/dist/public.mjs +4 -2
- package/dist/test-b9208949.d.ts +213 -0
- package/dist/test.d.ts +8 -149
- package/dist/test.js +20 -222
- package/dist/test.js.map +1 -1
- package/dist/test.mjs +30 -232
- package/dist/test.mjs.map +1 -1
- package/dist/{transactionReceipt-44dbf122.d.ts → transactionReceipt-84fc92e1.d.ts} +1 -1
- package/dist/{transactionRequest-f437b4ba.d.ts → transactionRequest-44c539b4.d.ts} +1 -1
- package/dist/utils/index.d.ts +12 -238
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.mjs +13 -13
- package/dist/wallet-9b1c6905.d.ts +104 -0
- package/dist/wallet.d.ts +7 -41
- package/dist/wallet.js +3 -3
- package/dist/wallet.mjs +2 -2
- package/dist/window.d.ts +4 -2
- package/package.json +1 -2
- package/dist/call-3476b8ee.d.ts +0 -22
- package/dist/chain-42de87e5.d.ts +0 -359
- package/dist/chunk-BSAB6UH4.mjs.map +0 -1
- package/dist/chunk-DSQO3E4F.js.map +0 -1
- package/dist/chunk-LINNE4N4.js.map +0 -1
- package/dist/chunk-PRG3BBPZ.mjs.map +0 -1
- package/dist/chunk-QSIX64VZ.mjs.map +0 -1
- package/dist/chunk-YTG4YXMB.js.map +0 -1
- package/dist/contract-9dd2f98b.d.ts +0 -166
- package/dist/createPublicClient-fd558574.d.ts +0 -19
- package/dist/createTestClient-bc1d9028.d.ts +0 -34
- package/dist/createWalletClient-4df88244.d.ts +0 -30
- package/dist/decodeErrorResult-ac835649.d.ts +0 -16
- package/dist/readContract-c460f23a.d.ts +0 -10
- package/dist/rpc-8c10fc98.d.ts +0 -119
- package/dist/sendTransaction-7ce442c0.d.ts +0 -12
- package/dist/watchEvent-569c9976.d.ts +0 -41
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain = Chain>({\n chain,\n}: {\n chain?: TChain\n retryCount?: TransportConfig['retryCount']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string = string,\n TRpcAttributes = any,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n /** An Ethereum provider with an EIP-1193 \"request\" attribute. */\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import { isDeterministicError } from '../../utils/buildRequest'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const { key = 'fallback', name = 'Fallback', retryCount, retryDelay } = config\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0 })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport { rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const { key = 'http', name = 'HTTP JSON-RPC', retryDelay } = config\n return ({ chain, retryCount: defaultRetryCount }) => {\n const retryCount = config.retryCount ?? defaultRetryCount\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n })\n return result\n },\n retryCount,\n retryDelay,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeArgs = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeResponse = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeArgs & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeResponse>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const { key = 'webSocket', name = 'WebSocket JSON-RPC', retryDelay } = config\n return ({ chain, retryCount: defaultRetryCount }) => {\n const retryCount = config.retryCount ?? defaultRetryCount\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n })\n return result\n },\n retryCount,\n retryDelay,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n onData(data)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { buildRequest } from '../utils/buildRequest'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type Client<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport (http, webSocket, custom, etc) */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = Partial<\n Pick<\n Client<TTransport, TChain, TRequests>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'\n >\n> & {\n transport: TTransport\n}\n\n/**\n * @description Creates a base RPC client with the given transport.\n *\n * - Intended to be used as a base for other RPC clients.\n * - Has access to _all_ EIP-1474 RPC methods.\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createClient, http } from 'viem/clients'\n * const client = createClient(http({ chain: mainnet }))\n */\nexport function createClient<\n TTransport extends Transport,\n TChain extends Chain,\n TRequests extends BaseRpcRequests,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain, TRequests>): Client<\n TTransport,\n TChain,\n TRequests\n> {\n const { config, request, value } = transport({ chain })\n return {\n chain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, PublicRequests>\n\n/**\n * @description Creates a public client with a given transport.\n *\n * - Only has access to \"public\" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createPublicClient, http } from 'viem/clients'\n * const client = createPublicClient(http({ chain: mainnet }))\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<TTransport, TChain> {\n chain\n return createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n })\n}\n","import type { TestRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\ntype TestClientModes = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the client. */\n key?: ClientConfig['key']\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n /** The name of the client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type TestClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = Client<TTransport, TChain, TestRequests<TMode>> & {\n mode: TMode\n}\n\n/**\n * @description Creates a test client with a given transport.\n *\n * - Only has access to \"test\" RPC methods (ie. `anvil_setBalance`,\n * `evm_mine`, etc).\n *\n * @example\n * import { createTestClient, http } from 'viem'\n * import { local } from 'viem/chains'\n * const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })\n */\nexport function createTestClient<\n TTransport extends Transport,\n TChain extends Chain,\n TMode extends TestClientModes,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TTransport, TChain, TMode>): TestClient<\n TTransport,\n TChain,\n TMode\n> {\n return {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n }\n}\n","import type { SignableRequests, WalletRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the Wallet Client. */\n key?: ClientConfig['key']\n /** The name of the Wallet Client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, SignableRequests & WalletRequests>\n\n/**\n * @description Creates a wallet client with a given transport.\n *\n * - Only has access to \"wallet\" & \"signable\" EIP-1474 RPC methods\n * (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * const client = createWalletClient(\n * custom(window.ethereum)\n * )\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain>): WalletClient<TTransport, TChain> {\n return createClient({\n key,\n name,\n pollingInterval,\n transport,\n type: 'walletClient',\n })\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/decorators/public.ts","../src/clients/decorators/test.ts","../src/clients/decorators/wallet.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":["size"],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The timeout (in ms) for requests. */\n timeout?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain = Chain>({\n chain,\n}: {\n chain?: TChain\n retryCount?: TransportConfig['retryCount']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string = string,\n TRpcAttributes = any,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n /** An Ethereum provider with an EIP-1193 \"request\" attribute. */\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import { isDeterministicError } from '../../utils/buildRequest'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const { key = 'fallback', name = 'Fallback', retryCount, retryDelay } = config\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0 })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport { rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n key = 'http',\n name = 'HTTP JSON-RPC',\n retryDelay,\n timeout = 10_000,\n } = config\n return ({ chain, retryCount: defaultRetryCount }) => {\n const retryCount = config.retryCount ?? defaultRetryCount\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeArgs = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeResponse = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeArgs & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeResponse>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for async WebSocket requests. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const {\n key = 'webSocket',\n name = 'WebSocket JSON-RPC',\n retryDelay,\n timeout = 10_000,\n } = config\n return ({ chain, retryCount: defaultRetryCount }) => {\n const retryCount = config.retryCount ?? defaultRetryCount\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n onData(data)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { buildRequest } from '../utils/buildRequest'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type Client<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport (http, webSocket, custom, etc) */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = Partial<\n Pick<\n Client<TTransport, TChain, TRequests>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'\n >\n> & {\n transport: TTransport\n}\n\n/**\n * @description Creates a base RPC client with the given transport.\n *\n * - Intended to be used as a base for other RPC clients.\n * - Has access to _all_ EIP-1474 RPC methods.\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createClient, http } from 'viem/clients'\n * const client = createClient(http({ chain: mainnet }))\n */\nexport function createClient<\n TTransport extends Transport,\n TChain extends Chain,\n TRequests extends BaseRpcRequests,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain, TRequests>): Client<\n TTransport,\n TChain,\n TRequests\n> {\n const { config, request, value } = transport({ chain })\n return {\n chain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import { Abi, AbiEvent } from 'abitype'\nimport type {\n CallArgs,\n CallResponse,\n CreateBlockFilterResponse,\n CreateContractEventFilterArgs,\n CreateContractEventFilterResponse,\n CreateEventFilterArgs,\n CreateEventFilterResponse,\n CreatePendingTransactionFilterResponse,\n EstimateGasArgs,\n EstimateGasResponse,\n EstimateContractGasArgs,\n EstimateContractGasResponse,\n GetBalanceArgs,\n GetBalanceResponse,\n GetBlockArgs,\n GetBlockNumberArgs,\n GetBlockNumberResponse,\n GetBlockResponse,\n GetBlockTransactionCountArgs,\n GetBlockTransactionCountResponse,\n GetBytecodeArgs,\n GetBytecodeResponse,\n GetChainIdResponse,\n GetFeeHistoryArgs,\n GetFeeHistoryResponse,\n GetFilterChangesArgs,\n GetFilterChangesResponse,\n GetFilterLogsArgs,\n GetFilterLogsResponse,\n GetGasPriceResponse,\n GetTransactionArgs,\n GetTransactionConfirmationsArgs,\n GetTransactionConfirmationsResponse,\n GetTransactionReceiptArgs,\n GetTransactionReceiptResponse,\n GetTransactionResponse,\n UninstallFilterArgs,\n UninstallFilterResponse,\n WaitForTransactionReceiptArgs,\n WaitForTransactionReceiptResponse,\n WatchBlockNumberArgs,\n WatchBlocksArgs,\n WatchPendingTransactionsArgs,\n GetLogsArgs,\n GetLogsResponse,\n GetStorageAtArgs,\n GetStorageAtResponse,\n MulticallArgs,\n MulticallResponse,\n ReadContractArgs,\n ReadContractResponse,\n SimulateContractArgs,\n SimulateContractResponse,\n WatchContractEventArgs,\n WatchEventArgs,\n} from '../../actions/public'\nimport {\n call,\n createBlockFilter,\n createContractEventFilter,\n createEventFilter,\n createPendingTransactionFilter,\n estimateContractGas,\n estimateGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBlockTransactionCount,\n getBytecode,\n getChainId,\n getFeeHistory,\n getFilterChanges,\n getFilterLogs,\n getGasPrice,\n getLogs,\n getTransaction,\n getTransactionConfirmations,\n getTransactionReceipt,\n uninstallFilter,\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchEvent,\n watchPendingTransactions,\n getStorageAt,\n multicall,\n readContract,\n simulateContract,\n watchContractEvent,\n} from '../../actions/public'\nimport type {\n GetEnsAddressArgs,\n GetEnsAddressResponse,\n GetEnsNameArgs,\n GetEnsNameResponse,\n} from '../../actions/ens'\nimport { getEnsAddress, getEnsName } from '../../actions/ens'\nimport type { PublicClient } from '../createPublicClient'\nimport {\n Chain,\n ContractConfig,\n FilterType,\n MaybeExtractEventArgsFromAbi,\n} from '../../types'\n\nexport type PublicActions<TChain extends Chain = Chain> = {\n call: (args: CallArgs<TChain>) => Promise<CallResponse>\n createBlockFilter: () => Promise<CreateBlockFilterResponse>\n createContractEventFilter: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args: CreateContractEventFilterArgs<TAbi, TEventName, TArgs>,\n ) => Promise<CreateContractEventFilterResponse<TAbi, TEventName, TArgs>>\n createEventFilter: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args?: CreateEventFilterArgs<TAbiEvent, TAbi, TEventName, TArgs>,\n ) => Promise<CreateEventFilterResponse<TAbiEvent, TAbi, TEventName, TArgs>>\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterResponse>\n estimateContractGas: <\n TChain extends Chain,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: EstimateContractGasArgs<TChain, TAbi, TFunctionName>,\n ) => Promise<EstimateContractGasResponse>\n estimateGas: (args: EstimateGasArgs<TChain>) => Promise<EstimateGasResponse>\n getBalance: (args: GetBalanceArgs) => Promise<GetBalanceResponse>\n getBlock: (args: GetBlockArgs) => Promise<GetBlockResponse<TChain>>\n getBlockNumber: (args?: GetBlockNumberArgs) => Promise<GetBlockNumberResponse>\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountArgs,\n ) => Promise<GetBlockTransactionCountResponse>\n getBytecode: (args: GetBytecodeArgs) => Promise<GetBytecodeResponse>\n getChainId: () => Promise<GetChainIdResponse>\n getEnsAddress: (args: GetEnsAddressArgs) => Promise<GetEnsAddressResponse>\n getEnsName: (args: GetEnsNameArgs) => Promise<GetEnsNameResponse>\n getFeeHistory: (args: GetFeeHistoryArgs) => Promise<GetFeeHistoryResponse>\n getFilterChanges: <\n TFilterType extends FilterType,\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterChangesArgs<TFilterType, TAbiEvent, TAbi, TEventName>,\n ) => Promise<\n GetFilterChangesResponse<TFilterType, TAbiEvent, TAbi, TEventName>\n >\n getFilterLogs: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterLogsArgs<TAbiEvent, TAbi, TEventName>,\n ) => Promise<GetFilterLogsResponse<TAbiEvent, TAbi, TEventName>>\n getGasPrice: () => Promise<GetGasPriceResponse>\n getLogs: <TAbiEvent extends AbiEvent | undefined>(\n args?: GetLogsArgs<TAbiEvent>,\n ) => Promise<GetLogsResponse<TAbiEvent>>\n getStorageAt: (args: GetStorageAtArgs) => Promise<GetStorageAtResponse>\n getTransaction: (\n args: GetTransactionArgs,\n ) => Promise<GetTransactionResponse<TChain>>\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsArgs<TChain>,\n ) => Promise<GetTransactionConfirmationsResponse>\n getTransactionReceipt: (\n args: GetTransactionReceiptArgs,\n ) => Promise<GetTransactionReceiptResponse<TChain>>\n multicall: <\n TContracts extends ContractConfig[],\n TAllowFailure extends boolean = true,\n >(\n args: MulticallArgs<TContracts, TAllowFailure>,\n ) => Promise<MulticallResponse<TContracts, TAllowFailure>>\n readContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: ReadContractArgs<TAbi, TFunctionName>,\n ) => Promise<ReadContractResponse>\n simulateContract: <\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n >(\n args: SimulateContractArgs<TChain, TAbi, TFunctionName>,\n ) => Promise<SimulateContractResponse<TChain, TAbi, TFunctionName>>\n uninstallFilter: (\n args: UninstallFilterArgs,\n ) => Promise<UninstallFilterResponse>\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptArgs<TChain>,\n ) => Promise<WaitForTransactionReceiptResponse<TChain>>\n watchBlockNumber: (\n args: WatchBlockNumberArgs,\n ) => ReturnType<typeof watchBlockNumber>\n watchBlocks: (args: WatchBlocksArgs<TChain>) => ReturnType<typeof watchBlocks>\n watchContractEvent: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string,\n >(\n args: WatchContractEventArgs<TAbi, TEventName>,\n ) => ReturnType<typeof watchContractEvent>\n watchEvent: <\n TAbiEvent extends AbiEvent | undefined,\n TEventName extends string | undefined,\n >(\n args: WatchEventArgs<TAbiEvent>,\n ) => ReturnType<typeof watchEvent>\n watchPendingTransactions: (\n args: WatchPendingTransactionsArgs,\n ) => ReturnType<typeof watchPendingTransactions>\n}\n\nexport const publicActions = <\n TChain extends Chain,\n TClient extends PublicClient<any, any>,\n>(\n client: TClient,\n): PublicActions<TChain> => ({\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n readContract: (args) => readContract(client, args),\n simulateContract: (args) => simulateContract(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n})\n","import type {\n DropTransactionArgs,\n GetAutomineResponse,\n GetTxPoolContentResponse,\n GetTxPoolStatusResponse,\n ImpersonateAccountArgs,\n IncreaseTimeArgs,\n InspectTxpoolResponse,\n MineArgs,\n ResetArgs,\n RevertArgs,\n SendUnsignedTransactionArgs,\n SendUnsignedTransactionResponse,\n SetBalanceArgs,\n SetBlockGasLimitArgs,\n SetBlockTimestampIntervalArgs,\n SetCodeArgs,\n SetCoinbaseArgs,\n SetIntervalMiningArgs,\n SetMinGasPriceArgs,\n SetNextBlockBaseFeePerGasArgs,\n SetNextBlockTimestampArgs,\n SetNonceArgs,\n SetStorageAtArgs,\n StopImpersonatingAccountArgs,\n} from '../../actions/test'\nimport {\n dropTransaction,\n getAutomine,\n getTxpoolContent,\n getTxpoolStatus,\n impersonateAccount,\n increaseTime,\n inspectTxpool,\n mine,\n removeBlockTimestampInterval,\n reset,\n revert,\n sendUnsignedTransaction,\n setAutomine,\n setBalance,\n setBlockGasLimit,\n setBlockTimestampInterval,\n setCode,\n setCoinbase,\n setIntervalMining,\n setLoggingEnabled,\n setMinGasPrice,\n setNextBlockBaseFeePerGas,\n setNextBlockTimestamp,\n setNonce,\n setRpcUrl,\n setStorageAt,\n snapshot,\n stopImpersonatingAccount,\n} from '../../actions/test'\nimport { Chain, Quantity } from '../../types'\nimport type { TestClient } from '../createTestClient'\n\nexport type TestActions<TChain extends Chain = Chain> = {\n dropTransaction: (args: DropTransactionArgs) => Promise<void>\n getAutomine: () => Promise<GetAutomineResponse>\n getTxPoolContent: () => Promise<GetTxPoolContentResponse>\n getTxPoolStatus: () => Promise<GetTxPoolStatusResponse>\n impersonateAccount: (args: ImpersonateAccountArgs) => Promise<void>\n increaseTime: (args: IncreaseTimeArgs) => Promise<Quantity>\n inspectTxpool: () => Promise<InspectTxpoolResponse>\n mine: (args: MineArgs) => Promise<void>\n removeBlockTimestampInterval: () => Promise<void>\n reset: (args: ResetArgs) => Promise<void>\n revert: (args: RevertArgs) => Promise<void>\n sendUnsignedTransaction: (\n args: SendUnsignedTransactionArgs,\n ) => Promise<SendUnsignedTransactionResponse>\n setAutomine: (args: boolean) => Promise<void>\n setBalance: (args: SetBalanceArgs) => Promise<void>\n setBlockGasLimit: (args: SetBlockGasLimitArgs) => Promise<void>\n setBlockTimestampInterval: (\n args: SetBlockTimestampIntervalArgs,\n ) => Promise<void>\n setCode: (args: SetCodeArgs) => Promise<void>\n setCoinbase: (args: SetCoinbaseArgs) => Promise<void>\n setIntervalMining: (args: SetIntervalMiningArgs) => Promise<void>\n setLoggingEnabled: (args: boolean) => Promise<void>\n setMinGasPrice: (args: SetMinGasPriceArgs) => Promise<void>\n setNextBlockBaseFeePerGas: (\n args: SetNextBlockBaseFeePerGasArgs,\n ) => Promise<void>\n setNextBlockTimestamp: (args: SetNextBlockTimestampArgs) => Promise<void>\n setNonce: (args: SetNonceArgs) => Promise<void>\n setRpcUrl: (args: string) => Promise<void>\n setStorageAt: (args: SetStorageAtArgs) => Promise<void>\n snapshot: () => Promise<Quantity>\n stopImpersonatingAccount: (\n args: StopImpersonatingAccountArgs,\n ) => Promise<void>\n}\n\nexport const testActions = <\n TChain extends Chain,\n TClient extends TestClient<any, any>,\n>(\n client: TClient,\n): TestActions<TChain> => ({\n dropTransaction: (args) => dropTransaction(client, args),\n getAutomine: () => getAutomine(client),\n getTxPoolContent: () => getTxpoolContent(client),\n getTxPoolStatus: () => getTxpoolStatus(client),\n impersonateAccount: (args) => impersonateAccount(client, args),\n increaseTime: (args) => increaseTime(client, args),\n inspectTxpool: () => inspectTxpool(client),\n mine: (args) => mine(client, args),\n removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),\n reset: (args) => reset(client, args),\n revert: (args) => revert(client, args),\n sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),\n setAutomine: (args) => setAutomine(client, args),\n setBalance: (args) => setBalance(client, args),\n setBlockGasLimit: (args) => setBlockGasLimit(client, args),\n setBlockTimestampInterval: (args) => setBlockTimestampInterval(client, args),\n setCode: (args) => setCode(client, args),\n setCoinbase: (args) => setCoinbase(client, args),\n setIntervalMining: (args) => setIntervalMining(client, args),\n setLoggingEnabled: (args) => setLoggingEnabled(client, args),\n setMinGasPrice: (args) => setMinGasPrice(client, args),\n setNextBlockBaseFeePerGas: (args) => setNextBlockBaseFeePerGas(client, args),\n setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),\n setNonce: (args) => setNonce(client, args),\n setRpcUrl: (args) => setRpcUrl(client, args),\n setStorageAt: (args) => setStorageAt(client, args),\n snapshot: () => snapshot(client),\n stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args),\n})\n","import { Abi } from 'abitype'\nimport {\n AddChainArgs,\n DeployContractArgs,\n DeployContractResponse,\n GetAccountsResponse,\n GetPermissionsResponse,\n RequestAccountsResponse,\n RequestPermissionsArgs,\n RequestPermissionsResponse,\n SendTransactionArgs,\n SendTransactionResponse,\n SignMessageArgs,\n SignMessageResponse,\n SwitchChainArgs,\n watchAsset,\n WatchAssetArgs,\n WatchAssetResponse,\n writeContract,\n WriteContractArgs,\n WriteContractResponse,\n} from '../../actions/wallet'\nimport {\n addChain,\n deployContract,\n getAccounts,\n getPermissions,\n requestAccounts,\n requestPermissions,\n sendTransaction,\n signMessage,\n switchChain,\n} from '../../actions/wallet'\nimport type { Chain } from '../../types'\nimport type { WalletClient } from '../createWalletClient'\n\nexport type WalletActions<TChain extends Chain = Chain> = {\n addChain: (args: AddChainArgs) => Promise<void>\n deployContract: <TAbi extends Abi | readonly unknown[]>(\n args: DeployContractArgs<TChain, TAbi>,\n ) => Promise<DeployContractResponse>\n getAccounts: () => Promise<GetAccountsResponse>\n getPermissions: () => Promise<GetPermissionsResponse>\n requestAccounts: () => Promise<RequestAccountsResponse>\n requestPermissions: (\n args: RequestPermissionsArgs,\n ) => Promise<RequestPermissionsResponse>\n sendTransaction: (\n args: SendTransactionArgs<TChain>,\n ) => Promise<SendTransactionResponse>\n signMessage: (args: SignMessageArgs) => Promise<SignMessageResponse>\n switchChain: (args: SwitchChainArgs) => Promise<void>\n watchAsset: (args: WatchAssetArgs) => Promise<WatchAssetResponse>\n writeContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: WriteContractArgs<TChain, TAbi, TFunctionName>,\n ) => Promise<WriteContractResponse>\n}\n\nexport const walletActions = <\n TChain extends Chain,\n TClient extends WalletClient<any, any>,\n>(\n client: TClient,\n): WalletActions<TChain> => ({\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAccounts: () => getAccounts(client),\n getPermissions: () => getPermissions(client),\n requestAccounts: () => requestAccounts(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n})\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { publicActions, PublicActions } from './decorators'\nimport { Chain } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TChain, PublicRequests> &\n (TIncludeActions extends true ? PublicActions<TChain> : {})\n\n/**\n * @description Creates a public client with a given transport.\n *\n * - Only has access to \"public\" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createPublicClient, http } from 'viem/clients'\n * const client = createPublicClient({ transport: http('https://...') })\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n })\n return {\n ...client,\n ...publicActions(client as PublicClient<any, any>),\n }\n}\n","import type { TestRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\nimport { testActions, TestActions } from './decorators'\n\ntype TestClientModes = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the client. */\n key?: ClientConfig['key']\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n /** The name of the client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type TestClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TChain, TestRequests<TMode>> & {\n mode: TMode\n} & (TIncludeActions extends true ? TestActions<TChain> : {})\n\n/**\n * @description Creates a test client with a given transport.\n *\n * - Only has access to \"test\" RPC methods (ie. `anvil_setBalance`,\n * `evm_mine`, etc).\n *\n * @example\n * import { createTestClient, http } from 'viem'\n * import { local } from 'viem/chains'\n * const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })\n */\nexport function createTestClient<\n TTransport extends Transport,\n TChain extends Chain,\n TMode extends TestClientModes,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TTransport, TChain, TMode>): TestClient<\n TTransport,\n TChain,\n TMode,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n }\n return {\n ...client,\n ...testActions(client as TestClient<any, any, any>),\n }\n}\n","import type { SignableRequests, WalletRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\nimport { WalletActions, walletActions } from './decorators'\nimport { wagmiContractConfig } from '../_test'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the Wallet Client. */\n key?: ClientConfig['key']\n /** The name of the Wallet Client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TChain, SignableRequests & WalletRequests> &\n (TIncludeActions extends true ? WalletActions<TChain> : {})\n\n/**\n * @description Creates a wallet client with a given transport.\n *\n * - Only has access to \"wallet\" & \"signable\" EIP-1474 RPC methods\n * (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * const client = createWalletClient(\n * custom(window.ethereum)\n * )\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain>): WalletClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n key,\n name,\n pollingInterval,\n transport,\n type: 'walletClient',\n })\n return {\n ...client,\n ...(walletActions(client as any) as any),\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
@@ -1,3 +1,86 @@
|
|
1
|
+
import {
|
2
|
+
getEnsAddress,
|
3
|
+
getEnsName,
|
4
|
+
labelhash,
|
5
|
+
namehash
|
6
|
+
} from "./chunk-GRILGOX5.mjs";
|
7
|
+
import {
|
8
|
+
call,
|
9
|
+
createBlockFilter,
|
10
|
+
createContractEventFilter,
|
11
|
+
createEventFilter,
|
12
|
+
createPendingTransactionFilter,
|
13
|
+
estimateContractGas,
|
14
|
+
estimateGas,
|
15
|
+
getBalance,
|
16
|
+
getBlock,
|
17
|
+
getBlockNumber,
|
18
|
+
getBlockTransactionCount,
|
19
|
+
getBytecode,
|
20
|
+
getChainId,
|
21
|
+
getFeeHistory,
|
22
|
+
getFilterChanges,
|
23
|
+
getFilterLogs,
|
24
|
+
getGasPrice,
|
25
|
+
getLogs,
|
26
|
+
getStorageAt,
|
27
|
+
getTransaction,
|
28
|
+
getTransactionConfirmations,
|
29
|
+
getTransactionReceipt,
|
30
|
+
multicall,
|
31
|
+
readContract,
|
32
|
+
simulateContract,
|
33
|
+
uninstallFilter,
|
34
|
+
waitForTransactionReceipt,
|
35
|
+
watchBlockNumber,
|
36
|
+
watchBlocks,
|
37
|
+
watchContractEvent,
|
38
|
+
watchEvent,
|
39
|
+
watchPendingTransactions
|
40
|
+
} from "./chunk-RCJJFKTU.mjs";
|
41
|
+
import {
|
42
|
+
dropTransaction,
|
43
|
+
getAutomine,
|
44
|
+
getTxpoolContent,
|
45
|
+
getTxpoolStatus,
|
46
|
+
impersonateAccount,
|
47
|
+
increaseTime,
|
48
|
+
inspectTxpool,
|
49
|
+
mine,
|
50
|
+
removeBlockTimestampInterval,
|
51
|
+
reset,
|
52
|
+
revert,
|
53
|
+
sendUnsignedTransaction,
|
54
|
+
setAutomine,
|
55
|
+
setBalance,
|
56
|
+
setBlockGasLimit,
|
57
|
+
setBlockTimestampInterval,
|
58
|
+
setCode,
|
59
|
+
setCoinbase,
|
60
|
+
setIntervalMining,
|
61
|
+
setLoggingEnabled,
|
62
|
+
setMinGasPrice,
|
63
|
+
setNextBlockBaseFeePerGas,
|
64
|
+
setNextBlockTimestamp,
|
65
|
+
setNonce,
|
66
|
+
setRpcUrl,
|
67
|
+
setStorageAt,
|
68
|
+
snapshot,
|
69
|
+
stopImpersonatingAccount
|
70
|
+
} from "./chunk-NKO23GXR.mjs";
|
71
|
+
import {
|
72
|
+
addChain,
|
73
|
+
deployContract,
|
74
|
+
getAccounts,
|
75
|
+
getPermissions,
|
76
|
+
requestAccounts,
|
77
|
+
requestPermissions,
|
78
|
+
sendTransaction,
|
79
|
+
signMessage,
|
80
|
+
switchChain,
|
81
|
+
watchAsset,
|
82
|
+
writeContract
|
83
|
+
} from "./chunk-PVBEFQET.mjs";
|
1
84
|
import {
|
2
85
|
AbiConstructorNotFoundError,
|
3
86
|
AbiConstructorParamsNotFoundError,
|
@@ -53,12 +136,85 @@ import {
|
|
53
136
|
UrlRequiredError,
|
54
137
|
WaitForTransactionReceiptTimeoutError,
|
55
138
|
WebSocketRequestError,
|
139
|
+
boolToBytes,
|
140
|
+
boolToHex,
|
56
141
|
buildRequest,
|
142
|
+
bytesToBigint,
|
143
|
+
bytesToBool,
|
144
|
+
bytesToHex,
|
145
|
+
bytesToNumber,
|
146
|
+
bytesToString,
|
147
|
+
decodeAbi,
|
148
|
+
decodeErrorResult,
|
149
|
+
decodeEventLog,
|
150
|
+
decodeFunctionData,
|
151
|
+
decodeFunctionResult,
|
152
|
+
defineBlock,
|
153
|
+
defineChain,
|
154
|
+
defineTransaction,
|
155
|
+
defineTransactionReceipt,
|
156
|
+
defineTransactionRequest,
|
157
|
+
encodeAbi,
|
158
|
+
encodeDeployData,
|
159
|
+
encodeErrorResult,
|
160
|
+
encodeEventTopics,
|
161
|
+
encodeFunctionData,
|
162
|
+
encodeFunctionResult,
|
163
|
+
etherUnits,
|
164
|
+
formatBlock,
|
165
|
+
formatEther,
|
166
|
+
formatGwei,
|
167
|
+
formatTransaction,
|
168
|
+
formatTransactionRequest,
|
169
|
+
formatUnit,
|
170
|
+
fromBytes,
|
171
|
+
fromHex,
|
172
|
+
fromRlp,
|
173
|
+
getAbiItem,
|
174
|
+
getAddress,
|
175
|
+
getContractAddress,
|
176
|
+
getContractError,
|
177
|
+
getCreate2Address,
|
178
|
+
getCreateAddress,
|
179
|
+
getEventSignature,
|
180
|
+
getFunctionSignature,
|
57
181
|
getSocket,
|
182
|
+
gweiUnits,
|
183
|
+
hexToBigInt,
|
184
|
+
hexToBool,
|
185
|
+
hexToBytes,
|
186
|
+
hexToNumber,
|
187
|
+
hexToString,
|
188
|
+
isAddress,
|
189
|
+
isAddressEqual,
|
190
|
+
isBytes,
|
58
191
|
isDeterministicError,
|
192
|
+
isHex,
|
193
|
+
keccak256,
|
59
194
|
multicall3Abi,
|
60
|
-
|
61
|
-
|
195
|
+
numberToBytes,
|
196
|
+
numberToHex,
|
197
|
+
pad,
|
198
|
+
padBytes,
|
199
|
+
padHex,
|
200
|
+
parseEther,
|
201
|
+
parseGwei,
|
202
|
+
parseUnit,
|
203
|
+
rpc,
|
204
|
+
size,
|
205
|
+
slice,
|
206
|
+
sliceBytes,
|
207
|
+
sliceHex,
|
208
|
+
stringToBytes,
|
209
|
+
stringToHex,
|
210
|
+
stringify,
|
211
|
+
toBytes,
|
212
|
+
toHex,
|
213
|
+
toRlp,
|
214
|
+
transactionType,
|
215
|
+
trim,
|
216
|
+
weiUnits
|
217
|
+
} from "./chunk-TDOKFOQ5.mjs";
|
62
218
|
|
63
219
|
// src/clients/transports/createTransport.ts
|
64
220
|
function createTransport({
|
@@ -67,10 +223,11 @@ function createTransport({
|
|
67
223
|
request,
|
68
224
|
retryCount = 3,
|
69
225
|
retryDelay = 150,
|
226
|
+
timeout,
|
70
227
|
type
|
71
228
|
}, value) {
|
72
229
|
return {
|
73
|
-
config: { key, name, request, retryCount, retryDelay, type },
|
230
|
+
config: { key, name, request, retryCount, retryDelay, timeout, type },
|
74
231
|
request: buildRequest(request, { retryCount, retryDelay }),
|
75
232
|
value
|
76
233
|
};
|
@@ -128,7 +285,12 @@ function fallback(transports, config = {}) {
|
|
128
285
|
|
129
286
|
// src/clients/transports/http.ts
|
130
287
|
function http(url, config = {}) {
|
131
|
-
const {
|
288
|
+
const {
|
289
|
+
key = "http",
|
290
|
+
name = "HTTP JSON-RPC",
|
291
|
+
retryDelay,
|
292
|
+
timeout = 1e4
|
293
|
+
} = config;
|
132
294
|
return ({ chain, retryCount: defaultRetryCount }) => {
|
133
295
|
const retryCount = config.retryCount ?? defaultRetryCount;
|
134
296
|
const url_ = url || chain?.rpcUrls.default.http[0];
|
@@ -143,12 +305,14 @@ function http(url, config = {}) {
|
|
143
305
|
body: {
|
144
306
|
method,
|
145
307
|
params
|
146
|
-
}
|
308
|
+
},
|
309
|
+
timeout
|
147
310
|
});
|
148
311
|
return result;
|
149
312
|
},
|
150
313
|
retryCount,
|
151
314
|
retryDelay,
|
315
|
+
timeout,
|
152
316
|
type: "http"
|
153
317
|
},
|
154
318
|
{
|
@@ -160,7 +324,12 @@ function http(url, config = {}) {
|
|
160
324
|
|
161
325
|
// src/clients/transports/webSocket.ts
|
162
326
|
function webSocket(url, config = {}) {
|
163
|
-
const {
|
327
|
+
const {
|
328
|
+
key = "webSocket",
|
329
|
+
name = "WebSocket JSON-RPC",
|
330
|
+
retryDelay,
|
331
|
+
timeout = 1e4
|
332
|
+
} = config;
|
164
333
|
return ({ chain, retryCount: defaultRetryCount }) => {
|
165
334
|
const retryCount = config.retryCount ?? defaultRetryCount;
|
166
335
|
const url_ = url || chain?.rpcUrls.default.webSocket?.[0];
|
@@ -173,12 +342,14 @@ function webSocket(url, config = {}) {
|
|
173
342
|
async request({ method, params }) {
|
174
343
|
const socket = await getSocket(url_);
|
175
344
|
const { result } = await rpc.webSocketAsync(socket, {
|
176
|
-
body: { method, params }
|
345
|
+
body: { method, params },
|
346
|
+
timeout
|
177
347
|
});
|
178
348
|
return result;
|
179
349
|
},
|
180
350
|
retryCount,
|
181
351
|
retryDelay,
|
352
|
+
timeout,
|
182
353
|
type: "webSocket"
|
183
354
|
},
|
184
355
|
{
|
@@ -228,14 +399,14 @@ function webSocket(url, config = {}) {
|
|
228
399
|
}
|
229
400
|
|
230
401
|
// src/utils/uid.ts
|
231
|
-
var
|
232
|
-
var index =
|
402
|
+
var size2 = 256;
|
403
|
+
var index = size2;
|
233
404
|
var buffer;
|
234
405
|
function uid(length = 11) {
|
235
|
-
if (!buffer || index + length >
|
406
|
+
if (!buffer || index + length > size2 * 2) {
|
236
407
|
buffer = "";
|
237
408
|
index = 0;
|
238
|
-
for (let i = 0; i <
|
409
|
+
for (let i = 0; i < size2; i++) {
|
239
410
|
buffer += (256 + Math.random() * 256 | 0).toString(16).substring(1);
|
240
411
|
}
|
241
412
|
}
|
@@ -264,6 +435,91 @@ function createClient({
|
|
264
435
|
};
|
265
436
|
}
|
266
437
|
|
438
|
+
// src/clients/decorators/public.ts
|
439
|
+
var publicActions = (client) => ({
|
440
|
+
call: (args) => call(client, args),
|
441
|
+
createBlockFilter: () => createBlockFilter(client),
|
442
|
+
createContractEventFilter: (args) => createContractEventFilter(client, args),
|
443
|
+
createEventFilter: (args) => createEventFilter(client, args),
|
444
|
+
createPendingTransactionFilter: () => createPendingTransactionFilter(client),
|
445
|
+
estimateContractGas: (args) => estimateContractGas(client, args),
|
446
|
+
estimateGas: (args) => estimateGas(client, args),
|
447
|
+
getBalance: (args) => getBalance(client, args),
|
448
|
+
getBlock: (args) => getBlock(client, args),
|
449
|
+
getBlockNumber: (args) => getBlockNumber(client, args),
|
450
|
+
getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),
|
451
|
+
getBytecode: (args) => getBytecode(client, args),
|
452
|
+
getChainId: () => getChainId(client),
|
453
|
+
getEnsAddress: (args) => getEnsAddress(client, args),
|
454
|
+
getEnsName: (args) => getEnsName(client, args),
|
455
|
+
getFeeHistory: (args) => getFeeHistory(client, args),
|
456
|
+
getFilterChanges: (args) => getFilterChanges(client, args),
|
457
|
+
getFilterLogs: (args) => getFilterLogs(client, args),
|
458
|
+
getGasPrice: () => getGasPrice(client),
|
459
|
+
getLogs: (args) => getLogs(client, args),
|
460
|
+
getStorageAt: (args) => getStorageAt(client, args),
|
461
|
+
getTransaction: (args) => getTransaction(client, args),
|
462
|
+
getTransactionConfirmations: (args) => getTransactionConfirmations(client, args),
|
463
|
+
getTransactionReceipt: (args) => getTransactionReceipt(client, args),
|
464
|
+
multicall: (args) => multicall(client, args),
|
465
|
+
readContract: (args) => readContract(client, args),
|
466
|
+
simulateContract: (args) => simulateContract(client, args),
|
467
|
+
uninstallFilter: (args) => uninstallFilter(client, args),
|
468
|
+
waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),
|
469
|
+
watchBlocks: (args) => watchBlocks(client, args),
|
470
|
+
watchBlockNumber: (args) => watchBlockNumber(client, args),
|
471
|
+
watchContractEvent: (args) => watchContractEvent(client, args),
|
472
|
+
watchEvent: (args) => watchEvent(client, args),
|
473
|
+
watchPendingTransactions: (args) => watchPendingTransactions(client, args)
|
474
|
+
});
|
475
|
+
|
476
|
+
// src/clients/decorators/test.ts
|
477
|
+
var testActions = (client) => ({
|
478
|
+
dropTransaction: (args) => dropTransaction(client, args),
|
479
|
+
getAutomine: () => getAutomine(client),
|
480
|
+
getTxPoolContent: () => getTxpoolContent(client),
|
481
|
+
getTxPoolStatus: () => getTxpoolStatus(client),
|
482
|
+
impersonateAccount: (args) => impersonateAccount(client, args),
|
483
|
+
increaseTime: (args) => increaseTime(client, args),
|
484
|
+
inspectTxpool: () => inspectTxpool(client),
|
485
|
+
mine: (args) => mine(client, args),
|
486
|
+
removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),
|
487
|
+
reset: (args) => reset(client, args),
|
488
|
+
revert: (args) => revert(client, args),
|
489
|
+
sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),
|
490
|
+
setAutomine: (args) => setAutomine(client, args),
|
491
|
+
setBalance: (args) => setBalance(client, args),
|
492
|
+
setBlockGasLimit: (args) => setBlockGasLimit(client, args),
|
493
|
+
setBlockTimestampInterval: (args) => setBlockTimestampInterval(client, args),
|
494
|
+
setCode: (args) => setCode(client, args),
|
495
|
+
setCoinbase: (args) => setCoinbase(client, args),
|
496
|
+
setIntervalMining: (args) => setIntervalMining(client, args),
|
497
|
+
setLoggingEnabled: (args) => setLoggingEnabled(client, args),
|
498
|
+
setMinGasPrice: (args) => setMinGasPrice(client, args),
|
499
|
+
setNextBlockBaseFeePerGas: (args) => setNextBlockBaseFeePerGas(client, args),
|
500
|
+
setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),
|
501
|
+
setNonce: (args) => setNonce(client, args),
|
502
|
+
setRpcUrl: (args) => setRpcUrl(client, args),
|
503
|
+
setStorageAt: (args) => setStorageAt(client, args),
|
504
|
+
snapshot: () => snapshot(client),
|
505
|
+
stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args)
|
506
|
+
});
|
507
|
+
|
508
|
+
// src/clients/decorators/wallet.ts
|
509
|
+
var walletActions = (client) => ({
|
510
|
+
addChain: (args) => addChain(client, args),
|
511
|
+
deployContract: (args) => deployContract(client, args),
|
512
|
+
getAccounts: () => getAccounts(client),
|
513
|
+
getPermissions: () => getPermissions(client),
|
514
|
+
requestAccounts: () => requestAccounts(client),
|
515
|
+
requestPermissions: (args) => requestPermissions(client, args),
|
516
|
+
sendTransaction: (args) => sendTransaction(client, args),
|
517
|
+
signMessage: (args) => signMessage(client, args),
|
518
|
+
switchChain: (args) => switchChain(client, args),
|
519
|
+
watchAsset: (args) => watchAsset(client, args),
|
520
|
+
writeContract: (args) => writeContract(client, args)
|
521
|
+
});
|
522
|
+
|
267
523
|
// src/clients/createPublicClient.ts
|
268
524
|
function createPublicClient({
|
269
525
|
chain,
|
@@ -272,8 +528,7 @@ function createPublicClient({
|
|
272
528
|
transport,
|
273
529
|
pollingInterval
|
274
530
|
}) {
|
275
|
-
|
276
|
-
return createClient({
|
531
|
+
const client = createClient({
|
277
532
|
chain,
|
278
533
|
key,
|
279
534
|
name,
|
@@ -281,6 +536,10 @@ function createPublicClient({
|
|
281
536
|
transport,
|
282
537
|
type: "publicClient"
|
283
538
|
});
|
539
|
+
return {
|
540
|
+
...client,
|
541
|
+
...publicActions(client)
|
542
|
+
};
|
284
543
|
}
|
285
544
|
|
286
545
|
// src/clients/createTestClient.ts
|
@@ -292,7 +551,7 @@ function createTestClient({
|
|
292
551
|
pollingInterval,
|
293
552
|
transport
|
294
553
|
}) {
|
295
|
-
|
554
|
+
const client = {
|
296
555
|
...createClient({
|
297
556
|
chain,
|
298
557
|
key,
|
@@ -303,6 +562,10 @@ function createTestClient({
|
|
303
562
|
}),
|
304
563
|
mode
|
305
564
|
};
|
565
|
+
return {
|
566
|
+
...client,
|
567
|
+
...testActions(client)
|
568
|
+
};
|
306
569
|
}
|
307
570
|
|
308
571
|
// src/clients/createWalletClient.ts
|
@@ -312,13 +575,17 @@ function createWalletClient({
|
|
312
575
|
name = "Wallet Client",
|
313
576
|
pollingInterval
|
314
577
|
}) {
|
315
|
-
|
578
|
+
const client = createClient({
|
316
579
|
key,
|
317
580
|
name,
|
318
581
|
pollingInterval,
|
319
582
|
transport,
|
320
583
|
type: "walletClient"
|
321
584
|
});
|
585
|
+
return {
|
586
|
+
...client,
|
587
|
+
...walletActions(client)
|
588
|
+
};
|
322
589
|
}
|
323
590
|
export {
|
324
591
|
AbiConstructorNotFoundError,
|
@@ -375,15 +642,90 @@ export {
|
|
375
642
|
UrlRequiredError,
|
376
643
|
WaitForTransactionReceiptTimeoutError,
|
377
644
|
WebSocketRequestError,
|
645
|
+
boolToBytes,
|
646
|
+
boolToHex,
|
647
|
+
bytesToBigint,
|
648
|
+
bytesToBool,
|
649
|
+
bytesToHex,
|
650
|
+
bytesToNumber,
|
651
|
+
bytesToString,
|
378
652
|
createClient,
|
379
653
|
createPublicClient,
|
380
654
|
createTestClient,
|
381
655
|
createTransport,
|
382
656
|
createWalletClient,
|
383
657
|
custom,
|
658
|
+
decodeAbi,
|
659
|
+
decodeErrorResult,
|
660
|
+
decodeEventLog,
|
661
|
+
decodeFunctionData,
|
662
|
+
decodeFunctionResult,
|
663
|
+
defineBlock,
|
664
|
+
defineChain,
|
665
|
+
defineTransaction,
|
666
|
+
defineTransactionReceipt,
|
667
|
+
defineTransactionRequest,
|
668
|
+
encodeAbi,
|
669
|
+
encodeDeployData,
|
670
|
+
encodeErrorResult,
|
671
|
+
encodeEventTopics,
|
672
|
+
encodeFunctionData,
|
673
|
+
encodeFunctionResult,
|
674
|
+
etherUnits,
|
384
675
|
fallback,
|
676
|
+
formatBlock,
|
677
|
+
formatEther,
|
678
|
+
formatGwei,
|
679
|
+
formatTransaction,
|
680
|
+
formatTransactionRequest,
|
681
|
+
formatUnit,
|
682
|
+
fromBytes,
|
683
|
+
fromHex,
|
684
|
+
fromRlp,
|
685
|
+
getAbiItem,
|
686
|
+
getAddress,
|
687
|
+
getContractAddress,
|
688
|
+
getContractError,
|
689
|
+
getCreate2Address,
|
690
|
+
getCreateAddress,
|
691
|
+
getEventSignature,
|
692
|
+
getFunctionSignature,
|
693
|
+
gweiUnits,
|
694
|
+
hexToBigInt,
|
695
|
+
hexToBool,
|
696
|
+
hexToBytes,
|
697
|
+
hexToNumber,
|
698
|
+
hexToString,
|
385
699
|
http,
|
700
|
+
isAddress,
|
701
|
+
isAddressEqual,
|
702
|
+
isBytes,
|
703
|
+
isHex,
|
704
|
+
keccak256,
|
705
|
+
labelhash,
|
386
706
|
multicall3Abi,
|
387
|
-
|
707
|
+
namehash,
|
708
|
+
numberToBytes,
|
709
|
+
numberToHex,
|
710
|
+
pad,
|
711
|
+
padBytes,
|
712
|
+
padHex,
|
713
|
+
parseEther,
|
714
|
+
parseGwei,
|
715
|
+
parseUnit,
|
716
|
+
size,
|
717
|
+
slice,
|
718
|
+
sliceBytes,
|
719
|
+
sliceHex,
|
720
|
+
stringToBytes,
|
721
|
+
stringToHex,
|
722
|
+
stringify,
|
723
|
+
toBytes,
|
724
|
+
toHex,
|
725
|
+
toRlp,
|
726
|
+
transactionType,
|
727
|
+
trim,
|
728
|
+
webSocket,
|
729
|
+
weiUnits
|
388
730
|
};
|
389
731
|
//# sourceMappingURL=index.mjs.map
|