export type CapabilityId = 'scheduler' | 'local_files' | 'notifications' | 'email' | 'calendar' | 'browser' | 'shell' | 'code_runner' | 'test_runner' | 'vector_memory' | 'ollama' | 'cloud_models' | 'telegram';
export type CapabilityStatus = 'available' | 'unavailable' | 'degraded';
export interface Capability {
    id: CapabilityId;
    label: string;
    status: CapabilityStatus;
    reason?: string;
    checkedAt?: string;
}
export interface CapabilityCheckResult {
    id: CapabilityId;
    status: CapabilityStatus;
    reason: string;
}
export type CapabilityChecker = (id: CapabilityId) => CapabilityCheckResult | Promise<CapabilityCheckResult>;
export declare class CapabilityRegistry {
    private capabilities;
    private checkers;
    /** Register a capability with its current status. */
    register(id: CapabilityId, label: string, status?: CapabilityStatus, reason?: string): void;
    /** Register a dynamic checker for a capability. */
    registerChecker(id: CapabilityId, checker: CapabilityChecker): void;
    /** Check whether a capability is available. */
    has(id: CapabilityId): boolean;
    /** Get a capability entry. */
    get(id: CapabilityId): Capability | undefined;
    /** List all registered capabilities. */
    list(): Capability[];
    /** List only available capabilities. */
    available(): Capability[];
    /** List missing capabilities. */
    missing(): Capability[];
    /** Refresh a capability by running its checker. */
    refresh(id: CapabilityId): Promise<Capability | undefined>;
    /** Refresh all capabilities with registered checkers. */
    refreshAll(): Promise<Capability[]>;
    /** Check required capabilities for an operation. Returns missing ones. */
    checkRequired(required: CapabilityId[]): Capability[];
    /** Format a human-readable limitation message for missing capabilities. */
    formatLimitations(required: CapabilityId[]): string | null;
}
export declare function createDefaultCapabilityRegistry(): CapabilityRegistry;
export declare const SERVICE_FEATURE_REQUIREMENTS: Record<string, CapabilityId[]>;
export declare function getFeatureRequirements(feature: string): CapabilityId[];
//# sourceMappingURL=capabilityRegistry.d.ts.map