/// <reference types="node" />
import { CryptoEngine, RealEncryptionResult } from './security/CryptoEngine';
import { KeyVault } from './security/KeyVault';
import { URLhausFeed } from './feeds/URLhausFeed';
import { TrojanHorseConfig, ThreatIndicator, ThreatFeedResult, ApiKeyConfig, SecurityConfig, EncryptedVault, TrojanHorseError, SecurityError, AuthenticationError, RateLimitError, TrojanHorseEvents, SecureVaultOptions } from './types';
export declare class TrojanHorse {
    private readonly cryptoEngine;
    private readonly keyVault;
    private readonly feeds;
    private readonly circuitBreakers;
    readonly config: Required<TrojanHorseConfig>;
    private readonly eventListeners;
    private static readonly DEFAULT_CONFIG;
    constructor(config?: Partial<TrojanHorseConfig>);
    private validateConfiguration;
    private validateApiKeysFormat;
    createVault(password: string, apiKeys: ApiKeyConfig): Promise<RealEncryptionResult>;
    loadVault(vault: RealEncryptionResult): void;
    unlock(password: string): Promise<void>;
    lock(): void;
    scout(target?: string, options?: {
        sources?: string[];
        enrichment?: boolean;
        minimumConfidence?: number;
    }): Promise<ThreatFeedResult>;
    plunder(format?: 'json' | 'csv' | 'xml', options?: {
        encrypt?: boolean;
        classification?: string;
    }): Promise<string | ArrayBuffer>;
    rotateKey(provider: string, newKey: string, options?: {
        gracePeriod?: number;
        password?: string;
    }): Promise<void>;
    setupKeyRotation(config: {
        providers: string[];
        rotationInterval: number;
        keyGenerator: (provider: string) => Promise<string>;
        password: string;
    }): NodeJS.Timeout;
    on<T extends keyof TrojanHorseEvents>(event: T, listener: TrojanHorseEvents[T]): void;
    off<T extends keyof TrojanHorseEvents>(event: T, listener: TrojanHorseEvents[T]): void;
    private emit;
    destroy(): Promise<void>;
    getStatus(): {
        vault: {
            isLocked: boolean;
            keyCount: number;
            autoLockEnabled: boolean;
        };
        feeds: Array<{
            name: string;
            available: boolean;
            lastFetch?: Date;
        }>;
        crypto: {
            implementation: string;
            secureContext: boolean;
        };
        security: {
            secureContext: boolean;
            httpsOnly: boolean;
        };
    };
    private getAsciiArt;
    private mergeConfig;
    private extractApiKey;
    private initializeFeeds;
    private validateSecureEnvironment;
    private fetchFromFeed;
    getCircuitBreakerState(feedName?: string): string | Record<string, string>;
    private convertToCSV;
    private handleError;
    private auditLog;
    static createVault(password: string, apiKeys: ApiKeyConfig, options?: Partial<SecureVaultOptions>): Promise<any>;
    static loadVault(encryptedVault: any, password: string, config?: Partial<TrojanHorseConfig>): Promise<TrojanHorse>;
}
export declare function createVault(password: string, apiKeys: ApiKeyConfig, options?: Partial<TrojanHorseConfig>): Promise<{
    vault: RealEncryptionResult;
    trojan: TrojanHorse;
}>;
export type { TrojanHorseConfig, ThreatIndicator, ThreatFeedResult, ApiKeyConfig, SecurityConfig, EncryptedVault, TrojanHorseError, SecurityError, AuthenticationError, RateLimitError };
export { CryptoEngine, KeyVault, URLhausFeed };
//# sourceMappingURL=index.d.ts.map