import type { ChannelProfileStore } from './store.js'; import { type ChannelPermissionMode, type ChannelProfileBinding, type ChannelProfileDefaults } from './types.js'; export interface SetChannelProfileInput { readonly surfaceKind: string; readonly channelId?: string | undefined; readonly model?: string | undefined; readonly provider?: string | undefined; readonly permissionMode?: ChannelPermissionMode | undefined; readonly metadata?: Readonly> | undefined; } export declare class ChannelProfileRegistry { private readonly store; private bindings; /** Whole-store writes run one at a time, in call order. See StoreWriteQueue. */ private readonly writes; constructor(store: ChannelProfileStore); /** * Write the bindings as they stand at THIS call, after every write already * queued has finished. * * `ChannelProfileStore.save` replaces the file atomically but says nothing * about ORDER, and `bindings` is one live array `set` and `delete` both mutate * in place. Unordered, a `set` could land after the `delete` that followed it * and put the removed binding back on disk, and this binding is what decides * the model and permission mode a channel-originated session runs under, so a * deleted one returning means a channel keeps running under defaults its owner * unbound. */ private persist; private all; list(): Promise; get(surfaceKind: string, channelId?: string): Promise; set(input: SetChannelProfileInput): Promise; delete(surfaceKind: string, channelId?: string): Promise; /** * Resolve the effective profile defaults for a channel-originated session: a * channel-scoped binding (surfaceKind + channelId) wins over the surface-wide * default (surfaceKind only). Returns null when no binding applies, intake * then falls back to the host defaults, unchanged. */ resolve(surfaceKind: string, channelId?: string): Promise; } //# sourceMappingURL=registry.d.ts.map