import { z } from "zod";
import { Action, LinkType, MatchMode } from "./constants.js";
export declare const WebhookObjectSchema: z.ZodObject<{
    url: z.ZodString;
    payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>;
export type WebhookEntry = string | z.infer<typeof WebhookObjectSchema>;
export declare const RUNTIME_CONFIG_SCHEMA: z.ZodObject<{
    delay: z.ZodNumber;
    torznab: z.ZodArray<z.ZodString>;
    useClientTorrents: z.ZodBoolean;
    dataDirs: z.ZodArray<z.ZodString>;
    matchMode: z.ZodEnum<typeof MatchMode>;
    skipRecheck: z.ZodBoolean;
    autoResumeMaxDownload: z.ZodNumber;
    ignoreNonRelevantFilesToResume: z.ZodBoolean;
    linkDirs: z.ZodArray<z.ZodString>;
    linkType: z.ZodEnum<typeof LinkType>;
    flatLinking: z.ZodBoolean;
    maxDataDepth: z.ZodNumber;
    linkCategory: z.ZodOptional<z.ZodString>;
    torrentDir: z.ZodOptional<z.ZodString>;
    outputDir: z.ZodString;
    injectDir: z.ZodOptional<z.ZodString>;
    ignoreTitles: z.ZodOptional<z.ZodBoolean>;
    includeSingleEpisodes: z.ZodBoolean;
    verbose: z.ZodBoolean;
    includeNonVideos: z.ZodBoolean;
    seasonFromEpisodes: z.ZodOptional<z.ZodNumber>;
    fuzzySizeThreshold: z.ZodNumber;
    excludeOlder: z.ZodOptional<z.ZodNumber>;
    excludeRecentSearch: z.ZodOptional<z.ZodNumber>;
    action: z.ZodEnum<typeof Action>;
    torrentClients: z.ZodArray<z.ZodString>;
    duplicateCategories: z.ZodBoolean;
    notificationWebhookUrls: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
        url: z.ZodString;
        payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.core.$strip>]>>;
    torrents: z.ZodArray<z.ZodString>;
    port: z.ZodOptional<z.ZodNumber>;
    host: z.ZodOptional<z.ZodString>;
    basePath: z.ZodOptional<z.ZodString>;
    searchCadence: z.ZodOptional<z.ZodNumber>;
    rssCadence: z.ZodOptional<z.ZodNumber>;
    snatchTimeout: z.ZodOptional<z.ZodNumber>;
    searchTimeout: z.ZodOptional<z.ZodNumber>;
    searchLimit: z.ZodOptional<z.ZodNumber>;
    blockList: z.ZodArray<z.ZodString>;
    apiKey: z.ZodOptional<z.ZodString>;
    sonarr: z.ZodArray<z.ZodString>;
    radarr: z.ZodArray<z.ZodString>;
}, z.core.$strip>;
export type RuntimeConfig = z.infer<typeof RUNTIME_CONFIG_SCHEMA>;
export declare const RUNTIME_CONFIG_OVERRIDES_SCHEMA: z.ZodObject<{
    delay: z.ZodOptional<z.ZodNumber>;
    torznab: z.ZodOptional<z.ZodArray<z.ZodString>>;
    useClientTorrents: z.ZodOptional<z.ZodBoolean>;
    dataDirs: z.ZodOptional<z.ZodArray<z.ZodString>>;
    matchMode: z.ZodOptional<z.ZodEnum<typeof MatchMode>>;
    skipRecheck: z.ZodOptional<z.ZodBoolean>;
    autoResumeMaxDownload: z.ZodOptional<z.ZodNumber>;
    ignoreNonRelevantFilesToResume: z.ZodOptional<z.ZodBoolean>;
    linkDirs: z.ZodOptional<z.ZodArray<z.ZodString>>;
    linkType: z.ZodOptional<z.ZodEnum<typeof LinkType>>;
    flatLinking: z.ZodOptional<z.ZodBoolean>;
    maxDataDepth: z.ZodOptional<z.ZodNumber>;
    linkCategory: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    torrentDir: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    outputDir: z.ZodOptional<z.ZodString>;
    injectDir: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    ignoreTitles: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    includeSingleEpisodes: z.ZodOptional<z.ZodBoolean>;
    verbose: z.ZodOptional<z.ZodBoolean>;
    includeNonVideos: z.ZodOptional<z.ZodBoolean>;
    seasonFromEpisodes: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    fuzzySizeThreshold: z.ZodOptional<z.ZodNumber>;
    excludeOlder: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    excludeRecentSearch: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    action: z.ZodOptional<z.ZodEnum<typeof Action>>;
    torrentClients: z.ZodOptional<z.ZodArray<z.ZodString>>;
    duplicateCategories: z.ZodOptional<z.ZodBoolean>;
    notificationWebhookUrls: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
        url: z.ZodString;
        payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.core.$strip>]>>>;
    torrents: z.ZodOptional<z.ZodArray<z.ZodString>>;
    port: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    host: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    basePath: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    searchCadence: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    rssCadence: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    snatchTimeout: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    searchTimeout: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    searchLimit: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    blockList: z.ZodOptional<z.ZodArray<z.ZodString>>;
    apiKey: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    sonarr: z.ZodOptional<z.ZodArray<z.ZodString>>;
    radarr: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>;
export type RuntimeConfigOverrides = z.infer<typeof RUNTIME_CONFIG_OVERRIDES_SCHEMA>;
export declare function parseRuntimeConfig(config: unknown): RuntimeConfig;
export declare function parseRuntimeConfigOverrides(config: unknown): Partial<RuntimeConfig>;
//# sourceMappingURL=configSchema.d.ts.map