export type Network = 'mainnet' | 'testnet' | 'testnet4';
export interface WalletData {
    mnemonic: string;
    address: string;
    created: string;
    network: Network;
}
export interface KeyPair {
    privateKey: Uint8Array;
    publicKey: Uint8Array;
    xOnlyPubkey: Uint8Array;
}
export interface TaprootKeys {
    privateKey: Uint8Array;
    publicKey: Uint8Array;
    xOnlyPubkey: Uint8Array;
    address: string;
    tweakedPrivateKey?: Uint8Array;
}
export interface UTXO {
    txid: string;
    vout: number;
    amount: number;
    address: string;
    scriptPubKey?: string;
    confirmations?: number;
}
export interface Output {
    address: string;
    amount: number;
}
export interface MiningData {
    hash: string;
    nonce: number;
}
export interface MiningTxParams {
    utxo: UTXO;
    miningData: MiningData;
    changeAddress: string;
    network?: Network;
    feeRate?: number;
}
export interface SimpleTxParams {
    utxos: UTXO[];
    outputs: Output[];
    changeAddress: string;
    network?: Network;
    feeRate?: number;
}
export interface SignedTransaction {
    txid: string;
    hex: string;
    size: number;
    vsize: number;
    fee: number;
}
export interface TransactionResult {
    success: boolean;
    txid?: string;
    hex?: string;
    error?: string;
    size?: number;
    vsize?: number;
    fee?: number;
}
export interface MonitorCallbacks {
    onTransaction?: (utxo: UTXO) => void;
    onStatus?: (status: MonitorStatus) => void;
    onError?: (error: Error) => void;
}
export interface MonitorStatus {
    message: string;
    checking: boolean;
    found: boolean;
    utxoCount: number;
}
export type StopMonitorFunction = () => void;
export interface StorageOptions {
    encrypt?: boolean;
    password?: string;
    storageKey?: string;
}
export interface EncryptedData {
    data: string;
    iv: string;
    salt: string;
}
export interface ValidationResult {
    valid: boolean;
    error?: string;
}
export interface AddressValidation extends ValidationResult {
    network?: Network;
    type?: 'p2tr' | 'p2wpkh' | 'p2sh' | 'legacy';
}
export declare class CharmsWalletError extends Error {
    readonly code: string;
    readonly details?: any;
    constructor(message: string, code: string, details?: any);
}
export declare class ValidationError extends CharmsWalletError {
    constructor(message: string, details?: any);
}
export declare class TransactionError extends CharmsWalletError {
    constructor(message: string, details?: any);
}
export declare class NetworkError extends CharmsWalletError {
    constructor(message: string, details?: any);
}
export declare class CryptographyError extends CharmsWalletError {
    constructor(message: string, details?: any);
}
export interface WalletConfig {
    network: Network;
    derivationPath?: string;
    addressType?: 'taproot' | 'segwit';
    storage?: StorageOptions;
}
export interface NetworkConfig {
    name: Network;
    bech32: string;
    pubKeyHash: number;
    scriptHash: number;
    wif: number;
}
export interface APIResponse<T = any> {
    success: boolean;
    data?: T;
    error?: string;
    code?: number;
}
export interface BalanceResponse {
    confirmed: number;
    unconfirmed: number;
    total: number;
}
export interface TransactionHistory {
    txid: string;
    confirmations: number;
    time: number;
    amount: number;
    fee: number;
    type: 'sent' | 'received';
}
export interface FeeEstimate {
    fastestFee: number;
    halfHourFee: number;
    hourFee: number;
    economyFee: number;
    minimumFee: number;
}
export type Mnemonic = string;
export type Address = string;
export type PrivateKey = Uint8Array;
export type PublicKey = Uint8Array;
export type TransactionHex = string;
export type PSBTHex = string;
//# sourceMappingURL=types.d.ts.map