/**
 * BASE CAPABILITY MODULE - SHARED INFRASTRUCTURE FOR ALL CAPABILITIES
 *
 * Provides common utilities, patterns, and infrastructure for all capability modules
 * to promote code reuse and maintain consistency across the codebase.
 */
import type { CapabilityContribution, CapabilityContext, CapabilityModule } from '../runtime/agentHost.js';
import type { ToolSuite, ToolDefinition } from '../core/toolRuntime.js';
export interface BaseCapabilityOptions {
    /** Working directory for operations */
    workingDir?: string;
    /** Enable debug logging */
    debug?: boolean;
    /** Enable evidence collection */
    enableEvidence?: boolean;
    /** Authorization level for operations */
    authorization?: 'basic' | 'elevated' | 'military' | 'full';
    /** Emergency override capability */
    emergencyOverride?: boolean;
}
export interface OperationResult {
    success: boolean;
    timestamp: string;
    operationId: string;
    metadata: Record<string, any>;
    evidence?: string[];
    errors?: string[];
}
export interface EvidenceCollector {
    collect(data: any, type: string): string;
    save(fileName: string, content: any): string;
    cleanup(olderThan?: number): void;
}
export interface SecurityContext {
    hostname: string;
    username: string;
    platform: string;
    architecture: string;
    os: string;
    userAgent?: string;
}
export declare class SharedUtilities {
    static generateOperationId(prefix?: string): string;
    static createEvidenceDir(baseDir: string, operationId: string): string;
    static saveEvidence(evidenceDir: string, fileName: string, data: any): string;
    static getSecurityContext(): SecurityContext;
    static calculateChecksum(data: string | Buffer): string;
    static validateAuthorization(current: string, required: string): boolean;
    static createToolDefinition<T extends Record<string, unknown>>(name: string, description: string, parameters: any, handler: (args: T) => Promise<string> | string): ToolDefinition<T>;
}
export declare abstract class BaseCapabilityModule implements CapabilityModule {
    abstract readonly id: string;
    protected readonly options: BaseCapabilityOptions;
    protected readonly utilities: SharedUtilities;
    protected evidenceCollector: EvidenceCollector | null;
    constructor(options?: BaseCapabilityOptions);
    abstract create(context: CapabilityContext): Promise<CapabilityContribution>;
    protected initializeEvidenceCollector(): void;
    private cleanupOldFiles;
    protected log(message: string, level?: 'debug' | 'info' | 'warn' | 'error'): void;
    protected validateOperation(authorizationRequired?: string): boolean;
    protected createOperationResult(success: boolean, operationId: string, metadata?: Record<string, any>, errors?: string[]): OperationResult;
}
export declare class ToolSuiteBuilder {
    private tools;
    private id;
    private description;
    constructor(id: string, description: string);
    addTool<T extends Record<string, unknown>>(name: string, description: string, parameters: any, handler: (args: T) => Promise<string> | string): this;
    build(): ToolSuite;
}
//# sourceMappingURL=baseCapability.d.ts.map