import { QRGenerator, AvatarGenerator, NameGenerator } from "../../generators/types.js";
export type HardConfig = {
    apis: {
        create: string;
        poll: string;
        callback: string;
        token: string;
        lightningSignIn: string;
        nostrSignIn: string;
        avatar: string;
        qr: string;
        diagnostics: string;
    };
    ids: {
        wrapper: string;
        title: string;
        qr: string;
        copy: string;
        button: string;
        loading: string;
        error: string;
        details: string;
    };
    intervals: {
        refreshToken: number;
        idToken: number;
    };
};
export type StorageData = {
    k1: string;
    state: string;
    pubkey?: string | null;
    sig?: string | null;
    success?: boolean | null;
    [key: string | number | symbol]: unknown;
};
export type RequiredConfig = {
    baseUrl: string;
    secret: string;
    storage: {
        set: (args: {
            k1: string;
            data: {
                k1: string;
                state: string;
            };
        }, url: URL, config: Config) => Promise<undefined>;
        get: (args: {
            k1: string;
        }, url: URL, config: Config) => Promise<StorageData | null | undefined>;
        update: (args: {
            k1: string;
            data: {
                pubkey: string;
                sig: string;
                success: boolean;
            };
        }, url: URL, config: Config) => Promise<undefined>;
        delete: (args: {
            k1: string;
        }, url: URL, config: Config) => Promise<undefined>;
    };
    generateQr: QRGenerator;
};
export type ThemeStyles = {
    background: string;
    backgroundCard: string;
    text: string;
    signInButtonBackground: string;
    signInButtonText: string;
    qrBackground: string;
    qrForeground: string;
    qrMargin: number;
};
type DeepPartial<T> = T extends object ? {
    [P in keyof T]?: DeepPartial<T[P]>;
} : T;
export type OptionalConfig = {
    pages: {
        lightningSignIn: string;
        nostrSignIn: string;
        error: string;
    };
    generateAvatar: AvatarGenerator | null;
    generateName: NameGenerator | null;
    flags: {
        diagnostics: boolean;
        logs: boolean;
    };
    theme: {
        colorScheme?: "dark" | "light";
    } & ThemeStyles;
    intervals: {
        poll: number;
        create: number;
    };
};
export type UserConfig = RequiredConfig & DeepPartial<OptionalConfig>;
export type Config = HardConfig & RequiredConfig & OptionalConfig & {
    theme: ThemeStyles;
};
export {};
//# sourceMappingURL=types.d.ts.map