/** Explicit enrollment, never inferred from equality of parent and child models. */ export interface ParentModelBinding { readonly childSessionId: string; readonly parentSessionId: string; } export interface FollowSelection { readonly provider: string; readonly model: string; } export interface FollowState { readonly inherited: number; readonly turn: number | null; readonly started: boolean; readonly explicit: FollowSelection | null; readonly descriptor: boolean; readonly blocked: boolean; } interface Event { readonly seq: number; readonly type: string; readonly data: unknown; } export declare const PARENT_MODEL_FOLLOW_PROJECTION = "githubCopilotParentModelFollow"; export declare function followSelection(value: unknown): FollowSelection | undefined; export declare function initialFollowState(inherited?: number): FollowState; /** Fold only the child's own suffix; copied fork selections are not child overrides. */ export declare function foldFollowState(state: FollowState, event: Event): FollowState; export declare class ParentModelFollowError extends Error { readonly code: string; constructor(code: string); } export interface FollowSubject { readonly id: string; readonly parentId?: string; readonly origin?: string; readonly state: FollowState; readonly pending: FollowSelection | null; readonly recorded?: FollowSelection; } export declare function supportsParentFollowing(subject: FollowSubject): boolean; /** Resolve a new turn's intent without changing any Session, setting or descriptor. */ export declare function resolveParentModel(child: FollowSubject, bindings: readonly ParentModelBinding[], lookup: (id: string) => FollowSubject | undefined, followAll?: boolean): FollowSelection | undefined; export {}; //# sourceMappingURL=parent-model-follow.d.ts.map