UNPKG

caravan-x

Version:

A terminal-based utility for managing Caravan multisig wallets in regtest mode. This tool simplifies development and testing with Caravan by providing an easy-to-use interface

226 lines (225 loc) 4.7 kB
/** * 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; };