chaingate
Version:
Multi-chain cryptocurrency SDK for TypeScript — unified API for Bitcoin, Ethereum, Litecoin, Dogecoin, Bitcoin Cash, Polygon, Arbitrum, and any EVM-compatible chain. Create wallets, query balances, send transactions, and manage tokens and NFTs across UTXO
119 lines (118 loc) • 4.64 kB
TypeScript
import { Connector } from '../Connector';
import type { AddressOptions } from '../Connector';
import { UtxoExplorer } from '../../Explorer/UtxoExplorer';
import type { Wallet } from '../../Wallet/Wallet';
import { Amount } from '../../utils/Amount';
import type { UtxoAddressType, UtxoNetworkDescriptor } from '../../ChainGate/networks';
import { UtxoTransaction } from './UtxoTransaction';
import { CustomUtxoTransaction } from './CustomUtxoTransaction';
import type { CustomUtxoTransactionParams } from './CustomUtxoTransaction';
/** Options for resolving a UTXO wallet address. */
export interface UtxoAddressOptions extends AddressOptions {
/** Address type override. When omitted the network's default is used. */
addressType?: UtxoAddressType;
}
/**
* Connector for UTXO-based networks (Bitcoin, Litecoin, Dogecoin, Bitcoin Testnet).
*
* Bridges a {@link Wallet} with a {@link UtxoExplorer} to provide
* address derivation, balance queries, and transaction broadcasting.
*
* @example
* ```ts
* const cg = new ChainGate();
* const btcConn = cg.connect(cg.networks.bitcoin, wallet);
*
* // Default address (segwit for Bitcoin)
* const addr = await btcConn.address();
*
* // Taproot address (auto-resolves derivation path)
* const taprootAddr = await btcConn.address({ addressType: 'taproot' });
*
* // Legacy address with custom derivation path
* const legacyAddr = await btcConn.address({ addressType: 'legacy', derivationPath: "m/44'/0'/0'/0" });
*
* const balance = await btcConn.addressBalance();
*
* const amount = cg.networks.bitcoin.amount('0.001');
* const tx = await btcConn.transfer(amount, 'bc1q...');
* ```
*/
export declare class UtxoConnector extends Connector<Wallet, UtxoExplorer, UtxoNetworkDescriptor> {
/** @internal */
constructor(wallet: Wallet, explorer: UtxoExplorer, network: UtxoNetworkDescriptor);
/**
* Resolves the effective address type and derivation path from the given options.
* @internal
*/
private resolveAddressOptions;
/**
* Returns the address for this wallet on this UTXO network.
*
* - **HD wallets**: derives at `{derivationPath}/{index}` using the derivation
* path for the selected address type (or the network default).
* - **Single-key wallets**: only index `0` is valid. The address type determines
* the encoding (segwit, legacy, taproot) of the same public key.
* - **XpubWallet**: derives at `m/0/{index}`.
*/
address(options?: UtxoAddressOptions): Promise<string>;
/**
* Returns the confirmed and unconfirmed balance for this wallet's address.
*/
addressBalance(options?: UtxoAddressOptions): Promise<{
address: string;
confirmed: Amount;
unconfirmed: Amount;
}>;
/**
* Returns paginated transaction history for this wallet's address.
*
* @param page - Pagination cursor.
*/
addressHistory(page?: string, options?: UtxoAddressOptions): Promise<{
page: number;
transactions: Array<{
height: number;
txid: string;
amount: Amount;
addressBalance: Amount;
}>;
}>;
/**
* Returns paginated UTXOs for this wallet's address.
*
* @param page - Pagination cursor.
*/
addressUtxos(page?: string, options?: UtxoAddressOptions): Promise<{
address: string;
page: number;
utxos: Array<{
txid: string;
n: number;
amount: Amount;
height: number;
script: string;
}>;
}>;
/**
* Creates a UTXO transfer transaction with recommended fees.
*
* The returned {@link UtxoTransaction} can be inspected, have its fee adjusted,
* and then signed + broadcast.
*
* @param amount - Amount to send. Create via
* {@link NetworkDescriptor.amount | cg.networks.bitcoin.amount(0.001)} or
* {@link NetworkDescriptor.amountFromCurrency | cg.networks.bitcoin.amountFromCurrency('usd', 50)}.
* @param toAddress - Recipient address.
*
* @throws {@link UnsupportedOperationError} if the wallet is view-only.
*/
transfer(amount: Amount, toAddress: string, options?: UtxoAddressOptions): Promise<UtxoTransaction>;
/**
* Creates a custom UTXO transaction with caller-defined inputs and outputs.
*
* @param params - Inputs and outputs for the transaction.
* @throws {@link UnsupportedOperationError} if the wallet is view-only.
*/
createTransaction(params: CustomUtxoTransactionParams, options?: UtxoAddressOptions): CustomUtxoTransaction;
}