import { IObservable } from "../../../../../../base/common/observable.js";
import { SessionActiveClient, ClientPluginCustomization, ToolDefinition } from "../../../../../../platform/agentHost/common/state/sessionState.js";
import { IAgentRegistration } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService";
export declare const IAgentHostActiveClientService: import("../../../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IAgentHostActiveClientService>;
export interface IAgentHostActiveClientService {
    readonly _serviceBrand: undefined;
    /**
    * Constructs the per-sessionType {@link AgentCustomizationSyncProvider}
    * and {@link SyncedCustomizationBundler}, builds the `customizations`
    * observable from them, wires it to {@link IPromptsService} change events,
    * and resolves the initial value. Disposing the returned handle tears all
    * of that down. The created `syncProvider` is exposed on the returned
    * object so the contribution can pass the same instance to its
    * customization harness.
    */
    registerForAgent(sessionType: string): IAgentRegistration;
    /** Returns a {@link SessionActiveClient} for `sessionType` using the caller-supplied `clientId`. Customizations are empty when `sessionType` has not been registered. */
    getActiveClient(sessionType: string, clientId: string): SessionActiveClient;
    getCustomizations(sessionType: string): IObservable<readonly ClientPluginCustomization[]>;
    readonly clientTools: IObservable<readonly ToolDefinition[]>;
}
