/**
 * Task History Seeder
 *
 * Seeds the project task-history ledger with synthetic "declared"
 * entries when a team member registers. Solves the cold-start problem
 * for capability routing: on day-0, no real tasks have run yet, but
 * the team config can still declare what capabilities each member
 * holds, and the orchestrator's `recall(capability)` query finds them.
 *
 * The convention: a `TeamMember.capabilities` entry counts as a
 * canonical capability when it contains a `:` separator (e.g.
 * `gmail:read`, `oauth:gmail`). Free-form strings without `:` are
 * ignored — they aren't part of the routing vocabulary.
 *
 * @module services/memory/task-history-seeder
 */
import { IProjectMemoryService } from './project-memory.service.js';
export interface SeedDeclaredCapabilitiesArgs {
    projectPath: string;
    member: {
        sessionName: string;
        role: string;
        teamId?: string;
        capabilities?: string[];
    };
    projectMemory: IProjectMemoryService;
    /** Optional clock for tests; defaults to Date.now() */
    now?: () => Date;
}
/**
 * Filter a free-form `capabilities[]` array down to the entries that
 * look like canonical capability strings. Exported for unit testing.
 */
export declare function pickCanonicalCapabilities(raw: readonly string[] | undefined): string[];
/**
 * Emit a single synthetic `outcome: 'declared'` entry capturing every
 * canonical capability the member declares. One entry per registration,
 * keyed `th-declared-<sessionName>` so re-registration dedups cleanly
 * (the entry is overwritten in place when the same id arrives — see
 * ProjectMemoryService.addTaskHistory).
 *
 * No-op if the member has no canonical capabilities to declare.
 *
 * @returns The entry id if one was written, or null when skipped.
 */
export declare function seedDeclaredCapabilities(args: SeedDeclaredCapabilitiesArgs): Promise<string | null>;
//# sourceMappingURL=task-history-seeder.d.ts.map