import type { NonEmptyReadonlyArray } from './types';
export type CuratedChoice<TId extends string> = Readonly<{
    id: TId;
    note?: string;
}>;
export type UnknownPersistedChoice = Readonly<{
    kind: 'unknown';
    raw: string;
}>;
export type CuratedChoiceRequest<TId extends string> = TId | UnknownPersistedChoice | null;
export type CuratedChoiceResolution<TId extends string> = Readonly<{
    kind: 'accepted';
    resolved: TId;
}> | Readonly<{
    kind: 'defaulted-empty';
    resolved: TId;
}> | Readonly<{
    kind: 'defaulted-rejected';
    requested: string;
    resolved: TId;
    reason: 'unknown' | 'not-curated-for-style';
}>;
export declare function defaultCuratedChoice<TId extends string>(choices: NonEmptyReadonlyArray<CuratedChoice<TId>>): TId;
export declare function resolveCuratedChoice<TId extends string>(requested: CuratedChoiceRequest<TId>, choices: NonEmptyReadonlyArray<CuratedChoice<TId>>): CuratedChoiceResolution<TId>;
export declare function requireEntriesForCuratedChoices<TEntry extends Readonly<{
    id: string;
}>, TId extends TEntry['id']>(entries: readonly TEntry[], choices: NonEmptyReadonlyArray<CuratedChoice<TId>>): NonEmptyReadonlyArray<TEntry>;
