import type { CommunityConsentClient, CommunityRecordSignalInput, CommunitySignalEvent } from "./community-consent-client.js";
export interface CommunitySkillLifecycleRecord {
    name: string;
    createdAt: string;
    lastUsedAt?: string;
    source?: string;
    registryResourceId?: string;
    registryVersion?: string;
    registrySourceTier?: string;
    registryRiskTier?: string;
    registryEffectiveRiskTier?: string;
    registryKeptSignalAt?: string;
}
export interface CommunitySkillLifecycleStore {
    version?: number;
    records: Record<string, CommunitySkillLifecycleRecord>;
}
export interface CommunitySignalReporter {
    record(input: CommunityRecordSignalInput): Promise<"recorded" | "disabled" | "skipped" | "failed">;
    recordSkillUsage(record: CommunitySkillLifecycleRecord | undefined, outcome: CommunitySkillUsageOutcome): Promise<"recorded" | "disabled" | "skipped" | "failed">;
    recordSkillLifecycle(record: CommunitySkillLifecycleRecord | undefined, event: Extract<CommunitySignalEvent, "kept" | "uninstalled" | "endorse">): Promise<"recorded" | "disabled" | "skipped" | "failed">;
    recordKeptSignals(store: CommunitySkillLifecycleStore, options?: RecordKeptSignalsOptions): Promise<Array<{
        skillName: string;
        status: "recorded" | "disabled" | "skipped" | "failed";
    }>>;
}
export type CommunitySkillUsageOutcome = "success" | "fail" | "error" | "neutral";
export interface RecordKeptSignalsOptions {
    now?: Date;
    retentionMs?: number;
}
export declare function createCommunitySignalReporter(client: Pick<CommunityConsentClient, "getConsent" | "recordSignal"> | null): CommunitySignalReporter;
export declare function createDefaultCommunitySignalReporter(): CommunitySignalReporter | null;
