import { type CatalogOrigin, type CatalogSelectionPolicy, type HookTrigger, type RuntimeBinding, type SkillRiskClass, type SkillScope } from './runtime-assets.js';
export interface HookArtifact {
    hookId: string;
    version: number;
    name: string;
    description: string;
    domain?: string;
    trigger: HookTrigger;
    conditions: string[];
    guardrails: string[];
    skillSelectors: string[];
    workflowSelectors: string[];
    toolBindings: RuntimeBinding[];
    riskClass: SkillRiskClass;
    scope: SkillScope;
    provenance: string;
    validationStatus: 'pending' | 'validated' | 'rejected';
    rolloutStatus: 'staged' | 'hot' | 'promoted' | 'revoked';
    catalogOrigin: CatalogOrigin;
    catalogPath?: string;
    catalogPriority: number;
    effectiveness: {
        fired: number;
        blocked: number;
        queued: number;
    };
}
export interface HookDispatchResult {
    trigger: HookTrigger;
    blocked: boolean;
    events: Array<Record<string, unknown>>;
    notes: string[];
    workflowSelectors: string[];
    skillSelectors: string[];
    toolBindings: RuntimeBinding[];
}
export interface LifecycleTouchpoint {
    id: 'memory-review' | 'failure-summary' | 'session-close';
    trigger: HookTrigger;
    phase: 'mid-run' | 'completion';
    channel: 'hook' | 'automation';
    selectors: string[];
    deterministicOrder: 'catalog-priority-then-name';
    canonicalCatalog: '.agents';
    compatibilityCatalog: '.agent';
}
export declare const LIFECYCLE_TOUCHPOINTS: LifecycleTouchpoint[];
export declare class HookRuntime {
    private rootDir;
    private workspaceRoot;
    private artifacts;
    private bootstrapped;
    constructor(rootDir?: string, workspaceRoot?: string);
    listArtifacts(options?: {
        selectionPolicy?: CatalogSelectionPolicy;
        dedupe?: boolean;
    }): HookArtifact[];
    getArtifact(hookId: string): HookArtifact | undefined;
    findByName(name: string): HookArtifact | undefined;
    createHook(input: Omit<HookArtifact, 'hookId' | 'version' | 'validationStatus' | 'rolloutStatus' | 'catalogOrigin' | 'catalogPath' | 'catalogPriority' | 'effectiveness'>): HookArtifact;
    deploy(hookId: string, scope?: SkillScope): HookArtifact | undefined;
    revoke(hookId: string): HookArtifact | undefined;
    resolveHookSelectors(names: string[], goal: string, trigger?: HookTrigger): HookArtifact[];
    dispatch(trigger: HookTrigger, hooks: HookArtifact[], context: {
        goal: string;
        allowMutateHooks?: boolean;
        tags?: string[];
    }): HookDispatchResult;
    private stage;
    private validate;
    private lastLocalRefresh;
    private ensureBootstrapped;
    private persistArtifact;
}
export declare const createHookRuntime: (rootDir?: string, workspaceRoot?: string) => HookRuntime;
