import * as core_Address from '../core/Address.js'; import * as Errors from '../core/Errors.js'; import type { Compute } from '../core/internal/types.js'; /** An address that can be either an Ethereum hex address or a Tempo address. */ export type Address = core_Address.Address | Tempo; /** Root type for a Tempo Address. */ export type Tempo = Compute<`tempox${string}`>; /** Deeply converts all {@link ox#TempoAddress.Tempo} types to {@link ox#Address.Address}. */ export type ResolveAddresses = type extends Tempo ? core_Address.Address : type extends readonly (infer item)[] ? readonly ResolveAddresses[] : type extends object ? { [key in keyof type]: ResolveAddresses; } : type; /** * Resolves an address input (either an Ethereum hex address or a Tempo address) * to an Ethereum hex address. * * @example * ```ts twoslash * import { TempoAddress } from 'ox/tempo' * * const address = TempoAddress.resolve('tempox0x742d35cc6634c0532925a3b844bc9e7595f2bd28') * // @log: '0x742d35CC6634c0532925a3B844bc9e7595F2Bd28' * ``` * * @example * ### Hex Address Passthrough * ```ts twoslash * import { TempoAddress } from 'ox/tempo' * * const address = TempoAddress.resolve('0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28') * // @log: '0x742d35CC6634c0532925a3B844bc9e7595F2Bd28' * ``` * * @param address - An Ethereum hex address or Tempo address. * @returns The resolved Ethereum hex address. */ export declare function resolve(address: Address): core_Address.Address; /** * Formats a raw Ethereum address into a Tempo address string. * * @example * ```ts twoslash * import { TempoAddress } from 'ox/tempo' * * const address = TempoAddress.format('0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28') * // @log: 'tempox0x742d35cc6634c0532925a3b844bc9e7595f2bd28' * ``` * * @param address - The raw 20-byte Ethereum address. * @returns The encoded Tempo address string. */ export declare function format(address: Address): Tempo; export declare namespace format { type ErrorType = Errors.GlobalErrorType; } /** * Parses a Tempo address string into a raw Ethereum address. * * @example * ```ts twoslash * import { TempoAddress } from 'ox/tempo' * * const result = TempoAddress.parse( * 'tempox0x742d35cc6634c0532925a3b844bc9e7595f2bd28', * ) * // @log: { address: '0x742d35CC6634c0532925a3B844bc9e7595F2Bd28' } * ``` * * @param tempoAddress - The Tempo address string to parse. * @returns The parsed raw address. */ export declare function parse(tempoAddress: string): parse.ReturnType; export declare namespace parse { type ReturnType = { /** The raw 20-byte Ethereum address. */ address: core_Address.Address; }; type ErrorType = InvalidPrefixError | Errors.GlobalErrorType; } /** * Validates a Tempo address string. * * @example * ```ts twoslash * import { TempoAddress } from 'ox/tempo' * * const valid = TempoAddress.validate( * 'tempox0x742d35cc6634c0532925a3b844bc9e7595f2bd28', * ) * // @log: true * ``` * * @param tempoAddress - The Tempo address string to validate. * @returns Whether the address is valid. */ export declare function validate(tempoAddress: string): boolean; /** Thrown when a Tempo address has an invalid prefix. */ export declare class InvalidPrefixError extends Errors.BaseError { readonly name = "TempoAddress.InvalidPrefixError"; constructor({ address }: { address: string; }); } //# sourceMappingURL=TempoAddress.d.ts.map