import { Amount } from '../../utils/Amount'; import type { BaseValue, FiatCurrency } from '../../utils/Amount'; import type { MarketsResponse } from '../../Client'; import type { TTLCache } from '../../utils/TTLCache'; import type { Network, NetworkInfoInternal, UtxoNetworkParams, AddressType, AddressTypeConfig } from './types'; /** * Describes a blockchain network supported by ChainGate. * * Each instance carries the full network metadata and exposes the network * identifier via its {@link id} property. * * @example * ```ts * const cg = new ChainGate({ apiKey: '...' }); * const btc = cg.networks.bitcoin; * console.log(btc.name); // 'Bitcoin' * console.log(btc.symbol); // 'BTC' * * // Create an Amount for transfers * const amount = btc.amount('0.001'); * ``` */ export declare class NetworkDescriptor { /** Network identifier used in API calls (e.g. `"bitcoin"`, `"ethereum"`). */ readonly id: Network; readonly name: string; readonly symbol: string; readonly type: 'evm' | 'utxo'; readonly decimals: number; readonly isTestnet: boolean; readonly hasOwnToken: boolean; readonly nativeToken: { readonly symbol: string; readonly name: string; }; readonly chainId?: number; readonly defaultAddressType: TAddressType; readonly addressTypes: Partial>; /** * Full JSON-RPC endpoint URL for this network on the ChainGate RPC proxy, * with the API key already appended. * * @example * ```ts * console.log(cg.networks.ethereum.rpcUrl); * // → "https://api.chaingate.dev/rpc/ethereum?api_key=your-key" * ``` */ readonly rpcUrl: string; /** @internal */ readonly networkParams?: UtxoNetworkParams; /** @internal */ private readonly marketsCache; /** @internal */ constructor(id: Network, info: NetworkInfoInternal, marketsCache: TTLCache, apiKey: string); /** * Derives a blockchain address from a compressed public key. * * Each network subclass implements the appropriate derivation algorithm: * - **UTXO** networks: segwit, legacy, or taproot. * - **Bitcoin Cash**: CashAddr or legacy. * - **EVM** networks: EIP-55 checksummed address. * * @param publicKey - Compressed (33-byte) public key. * @param addressType - Address encoding to use. Defaults to the network's * {@link defaultAddressType}. * @returns The derived address string. */ publicKeyToAddress(publicKey: Uint8Array, addressType?: TAddressType): string; /** * Checks whether a string is a valid address for this network. * * Each network subclass implements the appropriate validation: * - **UTXO** networks: base58check and bech32/bech32m decoding. * - **Bitcoin Cash**: CashAddr and legacy Base58Check formats. * - **EVM** networks: hex format and EIP-55 checksum. * * @param address - The address string to validate. * @returns `true` if the address is valid for this network. */ isValidAddress(address: string): boolean; /** * Creates an {@link Amount} in base units of the native coin * (e.g. `0.001` for 0.001 BTC, `0.1` for 0.1 ETH). * * Accepts `number`, `string`, `bigint`, or a {@link DecimalLike} instance * (e.g. `decimal.js`) for precision-safe input: * - `btc.amount(0.001)` — convenient shorthand. * - `btc.amount('0.00000001')` — full decimal precision. * - `btc.amount(1n)` — exact integer (1 whole coin). * - `btc.amount(new Decimal('0.001'))` — from a `decimal.js` instance. * * @example * ```ts * const amount = cg.networks.bitcoin.amount('0.001'); * const tx = await btc.transfer(amount, 'bc1q...'); * ``` */ amount(value: BaseValue): Amount; /** * Creates an {@link Amount} from a fiat currency value, converting it to the * native coin at the current market rate. * * @param fiat - Fiat currency symbol, case-insensitive (e.g. `"usd"`, `"EUR"`). * @param value - The fiat amount (e.g. `50` for $50). Accepts `number`, `string`, `bigint`, or {@link DecimalLike}. * * @example * ```ts * const amount = await cg.networks.ethereum.amountFromCurrency('usd', 50); * const tx = await eth.transfer(amount, '0x...'); * ``` */ amountFromCurrency(fiat: FiatCurrency, value: BaseValue): Promise; /** Returns the network identifier string. */ toString(): string; /** @internal */ private nativeAmountData; }