import type { ToolDefinition } from "../types.js";
export interface ApprovedRecord {
    /** SHA256 hex of tool.js content at approval time. */
    sha256: string;
    /** ISO timestamp of approval. */
    approvedAt: string;
    /** Reviewer's tool name as it appeared in the approved source. */
    toolName: string;
    /** Free-form note set by the reviewer. */
    note?: string;
}
export interface ExecutableCandidate {
    slug: string;
    toolJsPath: string;
    currentSha: string;
    approved: ApprovedRecord | null;
    disabled: boolean;
    /** Status the loader uses to decide whether to register. */
    status: "approved-current" | "approved-stale" | "unapproved" | "disabled" | "missing";
}
export declare function readAudit(slug: string): Promise<string>;
export declare function readToolSource(slug: string): Promise<string | null>;
/** Discover all candidates with a tool.js, regardless of approval state. */
export declare function discoverExecutableSkills(): Promise<ExecutableCandidate[]>;
/**
 * Load and dynamically import every approved-current executable skill.
 * Failure to import any one is logged but does not abort — the rest still
 * load. Returns the list of registered tools.
 */
export declare function loadApprovedExecutableTools(log?: (msg: string) => void): Promise<ToolDefinition[]>;
/**
 * Mark a skill's current tool.js as approved by recording its SHA. Called by
 * the `lisa skills approve` CLI subcommand AFTER the user has reviewed the
 * source. Re-approval after a content change requires this to be called
 * again with the new SHA.
 */
export declare function approveExecutableSkill(slug: string, opts: {
    toolName: string;
    note?: string;
}): Promise<ApprovedRecord>;
export declare function disableExecutableSkill(slug: string, reason?: string): Promise<void>;
export declare function enableExecutableSkill(slug: string): Promise<void>;
/** Quick text summary for the CLI / startup notice. */
export declare function summarizeCandidate(c: ExecutableCandidate): string;
//# sourceMappingURL=executable.d.ts.map