import { AnkiConnectClient } from "../clients/anki-connect.client.js";
export interface AnkiCardInfo {
    cardId?: number;
    type?: number;
    queue?: number;
    interval?: number;
    due?: number;
    reps?: number;
    lapses?: number;
    factor?: number;
    deckName?: string;
}
export type ExistingAnkiCardInfo = AnkiCardInfo & {
    cardId: number;
};
export interface AnkiCardModTime {
    cardId?: number;
    mod?: number;
}
export declare class MissingCardIdsError extends Error {
    readonly missingIds: number[];
    readonly totalRequested: number;
    constructor(missingIds: number[], totalRequested: number, noOpNotice: string);
    private static buildMessage;
}
export declare function isExistingCardEntry<T extends {
    cardId?: unknown;
}>(entry: T | null | undefined): entry is T & {
    cardId: number;
};
export declare function findMissingIds(cards: number[], responses: ReadonlyArray<{
    cardId?: number;
}> | undefined): number[];
export declare function fetchExistingCards(cards: number[], client: AnkiConnectClient, noOpNotice: string): Promise<ExistingAnkiCardInfo[]>;
export declare function assertCardIdsExist(cards: number[], client: AnkiConnectClient, noOpNotice: string): Promise<void>;
