import { ClientOptions } from '@langchain/openai';
import { BehaviorSubject, Subject } from 'rxjs';
import { BusinessRoleType, ICopilot } from './types';
/**
 * Copilot Service
 */
export declare abstract class CopilotService {
    #private;
    readonly copilot$: import("rxjs").Observable<ICopilot>;
    readonly enabled$: import("rxjs").Observable<import("packages/contracts/dist/src").ICopilotProvider>;
    get secondary(): ICopilot;
    set secondary(value: ICopilot | null);
    readonly secondary$: import("rxjs").Observable<ICopilot>;
    readonly clientOptions$: BehaviorSubject<ClientOptions>;
    /**
     * Token usage event
     */
    readonly tokenUsage$: Subject<{
        copilot: ICopilot;
        tokenUsed: number;
    }>;
    constructor(copilot?: ICopilot);
    setCopilot(copilot: ICopilot): void;
    abstract roles(): BusinessRoleType[];
    abstract role(): string;
    abstract setRole(role: string): void;
    recordTokenUsage(usage: {
        copilot: ICopilot;
        tokenUsed: number;
    }): void;
}
