export declare enum CardType {
    New = 0,
    Learning = 1,
    Review = 2,
    Relearning = 3
}
export interface AnkiCard {
    cardId: number;
    fields: Record<string, {
        value: string;
        order: number;
    }>;
    fieldOrder: number;
    question: string;
    answer: string;
    modelName: string;
    ord: number;
    deckName: string;
    css: string;
    factor?: number;
    interval?: number;
    note: number;
    type: number;
    queue: number;
    due?: number;
    reps?: number;
    lapses?: number;
    left?: number;
    mod?: number;
    flags?: number;
}
export interface SimplifiedCard {
    cardId: number;
    front: string;
    back?: string;
    deckName: string;
    modelName: string;
    due: number;
    interval: number;
    factor: number;
}
export interface CardPresentation {
    cardId: number;
    front: string;
    back?: string;
    deckName: string;
    modelName: string;
    tags?: string[];
    currentInterval: number;
    easeFactor: number;
    reviews: number;
    lapses: number;
    cardType: string;
    noteId: number;
}
export interface DeckInfo {
    name: string;
    stats?: DeckStats;
}
export interface DeckStats {
    deck_id: number;
    name: string;
    new_count: number;
    learn_count: number;
    review_count: number;
    total_new: number;
    total_cards: number;
}
export interface AnkiDeckStatsResponse {
    deck_id: number;
    name: string;
    new_count: number;
    learn_count: number;
    review_count: number;
    total_in_deck: number;
}
export declare enum CardRating {
    Again = 1,
    Hard = 2,
    Good = 3,
    Easy = 4
}
export interface AnkiConnectRequest {
    action: string;
    version: number;
    params?: Record<string, any>;
    key?: string;
}
export interface AnkiConnectResponse<T = any> {
    result: T;
    error: string | null;
}
export interface NoteOptions {
    allowDuplicate?: boolean;
    duplicateScope?: "deck" | "collection";
    duplicateScopeOptions?: {
        deckName?: string;
        checkChildren?: boolean;
        checkAllModels?: boolean;
    };
}
export interface AddNoteParams {
    deckName: string;
    modelName: string;
    fields: Record<string, string>;
    tags?: string[];
    options?: NoteOptions;
}
export interface Model {
    name: string;
    id: number;
    css: string;
    fields: string[];
}
export interface NoteInfo {
    noteId: number;
    modelName: string;
    tags: string[];
    fields: Record<string, {
        value: string;
        order: number;
    }>;
    cards: number[];
    mod?: number;
}
export interface UpdateNoteFieldsParams {
    note: {
        id: number;
        fields: Record<string, string>;
        audio?: Array<{
            url: string;
            filename: string;
            fields: string[];
        }>;
        picture?: Array<{
            url: string;
            filename: string;
            fields: string[];
        }>;
    };
}
export interface CardTemplate {
    Name: string;
    Front: string;
    Back: string;
}
export interface CreateModelParams {
    modelName: string;
    inOrderFields: string[];
    cardTemplates: CardTemplate[];
    css?: string;
    isCloze?: boolean;
}
export interface UpdateModelStylingParams {
    model: {
        name: string;
        css: string;
    };
}
export interface GuiCurrentCardInfo {
    answer: string;
    question: string;
    deckName: string;
    modelName: string;
    cardId: number;
    buttons: number[];
    nextReviews: string[];
    fields?: Record<string, {
        value: string;
        order: number;
    }>;
}
export interface GuiBrowseParams {
    query: string;
    reorderCards?: {
        order: "ascending" | "descending";
        columnId: string;
    };
}
export interface GuiAddCardsParams {
    note: {
        deckName: string;
        modelName: string;
        fields: Record<string, string>;
        tags?: string[];
    };
}
