import type { RuntimeStore } from '../runtime/store/index.js';
import type { RuntimeEventBus } from '../runtime/events/index.js';
import type { AutomationRouteBinding } from '@pellux/goodvibes-sdk/platform/automation/routes';
import type { AutomationSurfaceKind } from '@pellux/goodvibes-sdk/platform/automation/types';
import { AutomationRouteStore } from '@pellux/goodvibes-sdk/platform/automation/store/routes';
export interface UpsertRouteBindingInput {
    readonly id?: string;
    readonly kind: AutomationRouteBinding['kind'];
    readonly surfaceKind: AutomationRouteBinding['surfaceKind'];
    readonly surfaceId: string;
    readonly externalId: string;
    readonly sessionPolicy?: AutomationRouteBinding['sessionPolicy'];
    readonly threadPolicy?: AutomationRouteBinding['threadPolicy'];
    readonly deliveryGuarantee?: AutomationRouteBinding['deliveryGuarantee'];
    readonly threadId?: string;
    readonly channelId?: string;
    readonly sessionId?: string;
    readonly jobId?: string;
    readonly runId?: string;
    readonly title?: string;
    readonly metadata?: Record<string, unknown>;
}
export interface PatchRouteBindingInput {
    readonly sessionPolicy?: AutomationRouteBinding['sessionPolicy'];
    readonly threadPolicy?: AutomationRouteBinding['threadPolicy'];
    readonly deliveryGuarantee?: AutomationRouteBinding['deliveryGuarantee'];
    readonly threadId?: string;
    readonly channelId?: string;
    readonly sessionId?: string | null;
    readonly jobId?: string | null;
    readonly runId?: string | null;
    readonly title?: string;
    readonly metadata?: Record<string, unknown>;
}
export declare class RouteBindingManager {
    private readonly store;
    private readonly bindings;
    private runtimeDispatch;
    private runtimeBus;
    private loaded;
    constructor(config?: {
        readonly store?: AutomationRouteStore;
        readonly runtimeStore?: RuntimeStore;
        readonly runtimeBus?: RuntimeEventBus;
    });
    attachRuntime(config: {
        readonly runtimeStore?: RuntimeStore | null;
        readonly runtimeBus?: RuntimeEventBus | null;
    }): void;
    start(): Promise<void>;
    listBindings(): AutomationRouteBinding[];
    getBinding(bindingId: string): AutomationRouteBinding | undefined;
    resolve(surfaceKind: AutomationSurfaceKind, externalId: string, threadId?: string): AutomationRouteBinding | undefined;
    upsertBinding(input: UpsertRouteBindingInput): Promise<AutomationRouteBinding>;
    captureReplyTarget(bindingId: string, replyTargetId: string, threadId?: string): Promise<AutomationRouteBinding | null>;
    patchBinding(bindingId: string, patch: PatchRouteBindingInput): Promise<AutomationRouteBinding | null>;
    removeBinding(bindingId: string): Promise<boolean>;
    recordFailure(surfaceKind: AutomationSurfaceKind, externalId: string, error: string): void;
}
//# sourceMappingURL=route-manager.d.ts.map