/**
 * Configuration for Bitcoin RPC connection
 */
export interface BitcoinRpcConfig {
    protocol: string;
    host: string;
    port: number;
    user: string;
    pass: string;
    dataDir: string;
}
/**
 * Main application configuration
 */
export interface AppConfig {
    bitcoin: BitcoinRpcConfig;
    appDir: string;
    caravanDir: string;
    keysDir: string;
}
/**
 * Default application configuration
 */
export declare const DEFAULT_CONFIG: AppConfig;
/**
 * Other configuration types for Caravan-X
 * Supports Docker mode, Manual mode, snapshots, and shared configs
 */
/**
 * Setup mode for Caravan-X
 */
export declare enum SetupMode {
    DOCKER = "docker",
    MANUAL = "manual"
}
/**
 * Pre-configured test scenario
 */
export interface TestScenario {
    id: string;
    name: string;
    description: string;
    blockHeight: number;
    wallets: ScenarioWallet[];
    transactions: ScenarioTransaction[];
}
/**
 * Wallet configuration for a test scenario
 */
export interface ScenarioWallet {
    name: string;
    type: "singlesig" | "multisig";
    addressType?: string;
    balance?: number;
    utxos?: {
        txid: string;
        vout: number;
        amount: number;
        confirmations: number;
    }[];
    quorum?: {
        requiredSigners: number;
        totalSigners: number;
    };
    extendedPublicKeys?: any[];
}
/**
 * Transaction configuration for a test scenario
 */
export interface ScenarioTransaction {
    from: string;
    to: string;
    amount: number;
    confirmed: boolean;
    rbf?: boolean;
    cpfp?: boolean;
    feeRate?: number;
}
/**
 * Blockchain snapshot configuration
 */
export interface BlockchainSnapshot {
    id: string;
    name: string;
    description?: string;
    createdAt: string;
    blockHeight: number;
    blockHash: string;
    wallets: string[];
    filePath: string;
    metadata?: {
        tags?: string[];
        scenario?: string;
    };
}
/**
 * Docker configuration
 */
export interface DockerConfig {
    enabled: boolean;
    image: string;
    containerName: string;
    ports: {
        rpc: number;
        p2p: number;
        nginx?: number;
    };
    volumes: {
        bitcoinData: string;
        coordinator: string;
    };
    network: string;
    autoStart: boolean;
}
/**
 * Shared configuration that can be versioned and shared
 */
export interface SharedConfig {
    version: string;
    name: string;
    description?: string;
    mode: SetupMode;
    bitcoin: {
        network: "regtest" | "signet" | "testnet";
        rpcPort: number;
        p2pPort: number;
        rpcUser: string;
        rpcPassword: string;
    };
    docker?: DockerConfig;
    initialState: {
        blockHeight: number;
        preGenerateBlocks: boolean;
        wallets: ScenarioWallet[];
        transactions: ScenarioTransaction[];
    };
    coordinator?: {
        enabled: boolean;
        port: number;
        autoStart: boolean;
    };
    nginx?: {
        enabled: boolean;
        port: number;
        proxyRpc: boolean;
        proxyCoordinator: boolean;
    };
    snapshots?: {
        enabled: boolean;
        autoSnapshot: boolean;
        snapshotInterval?: number;
    };
    scenarios?: string[];
    walletName?: string;
}
/**
 * Extended app configuration
 */
export interface EnhancedAppConfig {
    bitcoin: {
        protocol: string;
        host: string;
        port: number;
        user: string;
        pass: string;
        dataDir: string;
    };
    appDir: string;
    caravanDir: string;
    keysDir: string;
    mode: SetupMode;
    sharedConfig?: SharedConfig;
    docker?: DockerConfig;
    snapshots: {
        enabled: boolean;
        directory: string;
        autoSnapshot: boolean;
    };
    scenariosDir: string;
    activeScenario?: string;
}
/**
 * Configuration profile that can be saved and loaded
 */
export interface ConfigProfile {
    id: string;
    name: string;
    mode: SetupMode;
    createdAt: string;
    lastUsedAt: string;
    config: EnhancedAppConfig;
}
/**
 * Profiles index file structure
 */
export interface ProfilesIndex {
    activeProfileId: string | null;
    profiles: {
        id: string;
        name: string;
        mode: SetupMode;
        createdAt: string;
        lastUsedAt: string;
        configPath: string;
    }[];
}
/**
 * Startup user choices
 */
export interface StartupChoices {
    baseDirectory: string;
    mode: SetupMode;
    useExistingConfig: boolean;
    selectedProfileId?: string;
}
/**
 * Default Docker configuration
 */
export declare const DEFAULT_DOCKER_CONFIG: DockerConfig;
/**
 * Pre-configured test scenarios
 */
export declare const BUILT_IN_SCENARIOS: {
    [key: string]: TestScenario;
};
