import { NotionClient } from "@jitl/notion-api";
export declare type AuthorsDB = {
    databaseID: string;
    articleRef: string;
    primaryKey: string;
};
export declare type ArticlesDB = {
    databaseID: string;
    authorRef: string;
    primaryKey: string;
};
interface StrictConfigInterface {
    databases: {
        authors?: AuthorsDB;
        articles: ArticlesDB;
    };
    status: {
        prefix?: string;
        colname?: string;
        states: {
            [key: string]: string;
        };
    };
    topics: {
        prefix?: string;
        colname?: string;
        topics: {
            [key: string]: string;
        };
    };
    fields: {
        prefix?: string;
        colname?: string;
        fields: {
            [key: string]: string;
        };
    };
    methods: {
        prefix?: string;
        colname?: string;
        methods: {
            [key: string]: string;
        };
    };
    folders: {
        prefix?: string;
        colname?: string;
        folder: {
            [key: string]: string;
        };
    };
    icons: {
        [bibtexKey: string]: string;
    };
}
export interface LooseConfigInterface {
    databases: {
        authors: StrictConfigInterface["databases"]["authors"] | string;
        articles: StrictConfigInterface["databases"]["articles"] | string;
    };
    status: StrictConfigInterface["status"];
    topics: StrictConfigInterface["topics"];
    fields: StrictConfigInterface["fields"];
    methods: StrictConfigInterface["methods"];
    folders: StrictConfigInterface["folders"];
    icons: StrictConfigInterface["icons"];
}
export declare const newConfig: (config: LooseConfigInterface, notion: NotionClient) => Promise<StrictConfig>;
export declare class StrictConfig implements StrictConfigInterface {
    readonly databases: StrictConfigInterface["databases"];
    readonly status: StrictConfigInterface["status"];
    readonly topics: StrictConfigInterface["topics"];
    readonly fields: StrictConfigInterface["fields"];
    readonly methods: StrictConfigInterface["methods"];
    readonly folders: StrictConfigInterface["folders"];
    readonly icons: StrictConfigInterface["icons"];
    constructor({ databases, status, topics, fields, methods, folders, icons, }: StrictConfigInterface);
    get hasAuthorDB(): boolean;
    get authorType(): "relation" | "multi_select";
}
export {};
