/**
 * In-process pub/sub channel for skill-proposal status events. The background
 * runner emits phases (running/checked/updated/error); the shell footer
 * subscribes to render a one-line status. Decoupled this way so app/ has no
 * dependency on shell rendering.
 */
export interface SkillProposalStatusToolCall {
    name: string;
    arguments: unknown;
}
export type SkillProposalStatus = {
    phase: 'running';
    toolCall?: SkillProposalStatusToolCall;
} | {
    phase: 'checked';
    count: number;
    message?: string;
} | {
    phase: 'updated';
    count: number;
    message?: string;
} | {
    phase: 'error';
    count: number;
    message: string;
};
type Listener = (status: SkillProposalStatus) => void;
/** Broadcast a status event to all current subscribers. */
export declare function emitSkillProposalStatus(status: SkillProposalStatus): void;
/** Subscribe to skill-proposal status events; returns an unsubscribe function. */
export declare function subscribeSkillProposalStatus(listener: Listener): () => void;
export {};
//# sourceMappingURL=status.d.ts.map