import type { Address } from 'abitype'; import * as Hex from 'ox/Hex'; import type { Account } from '../../accounts/types.js'; import type { WriteContractReturnType } from '../../actions/wallet/writeContract.js'; import { writeContract } from '../../actions/wallet/writeContract.js'; import { writeContractSync } from '../../actions/wallet/writeContractSync.js'; import type { Client } from '../../clients/createClient.js'; import type { Transport } from '../../clients/transports/createTransport.js'; import type { BaseErrorType } from '../../errors/base.js'; import type { Chain } from '../../types/chain.js'; import type { GetEventArgs } from '../../types/contract.js'; import type { Compute } from '../../types/utils.js'; import * as Abis from '../Abis.js'; import type { ReadParameters, WriteParameters } from '../internal/types.js'; import type { TransactionReceipt } from '../Transaction.js'; /** * Gets the master address for a given master ID. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const address = await Actions.virtualAddress.getMasterAddress(client, { * masterId: '0xdeadbeef', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The master address, or null if unregistered. */ export declare function getMasterAddress(client: Client, parameters: getMasterAddress.Parameters): Promise; export declare namespace getMasterAddress { type Parameters = ReadParameters & Args; type Args = { /** The master ID (bytes4). */ masterId: Hex.Hex; }; type ReturnValue = Address | null; type ErrorType = BaseErrorType; /** * Defines a call to the `getMaster` function. * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "getMaster"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "bytes4"; readonly name: "masterId"; }]; readonly outputs: readonly [{ readonly type: "address"; }]; }]; functionName: "getMaster"; } & { args: readonly [`0x${string}`]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; } /** * Resolves a virtual address to its master address. * * - Non-virtual addresses are returned unchanged. * - Virtual addresses with a registered master return the master address. * - Virtual addresses with an unregistered master return null. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const recipient = await Actions.virtualAddress.resolve(client, { * address: '0x...', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The resolved address, or null if virtual and unregistered. */ export declare function resolve(client: Client, parameters: resolve.Parameters): Promise; export declare namespace resolve { type Parameters = ReadParameters & Args; type Args = { /** The address to resolve. */ address: Address; }; type ReturnValue = Address | null; type ErrorType = BaseErrorType; } /** * Registers a virtual master address. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const hash = await Actions.virtualAddress.registerMaster(client, { * salt: '0x...', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash. */ export declare function registerMaster(client: Client, parameters: registerMaster.Parameters): Promise; export declare namespace registerMaster { type Parameters = WriteParameters & Args; type Args = { /** The salt (bytes32) used for proof-of-work master ID derivation. */ salt: Hex.Hex; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner(action: action, client: Client, parameters: registerMaster.Parameters): Promise>; /** * Defines a call to the `registerVirtualMaster` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }).extend(walletActions) * * const { result } = await client.sendCalls({ * calls: [ * Actions.virtualAddress.registerMaster.call({ * salt: '0x...', * }), * ] * }) * ``` * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "registerVirtualMaster"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "bytes32"; readonly name: "salt"; }]; readonly outputs: readonly [{ readonly type: "bytes4"; readonly name: "masterId"; }]; }]; functionName: "registerVirtualMaster"; } & { args: readonly [salt: `0x${string}`]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; function extractEvent(logs: import('../../types/log.js').Log[]): import("../../types/log.js").Log; } /** * Registers a virtual master address and waits for confirmation. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const { receipt, masterId, masterAddress } = await Actions.virtualAddress.registerMasterSync(client, { * salt: '0x...', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction receipt and extracted event data. */ export declare function registerMasterSync(client: Client, parameters: registerMasterSync.Parameters): Promise; export declare namespace registerMasterSync { type Parameters = registerMaster.Parameters; type Args = registerMaster.Args; type ReturnValue = Compute & { receipt: TransactionReceipt; }>; type ErrorType = BaseErrorType; } //# sourceMappingURL=virtualAddress.d.ts.map