import { Promisable } from 'type-fest';
import { BlackSSLProviderConfig, ClashProviderConfig, CommandConfigBeforeNormalize, CustomProviderConfig, PossibleProviderConfigType, ShadowsocksJsonSubscribeProviderConfig, ShadowsocksrSubscribeProviderConfig, ShadowsocksSubscribeProviderConfig, SsdProviderConfig, TrojanProviderConfig, V2rayNSubscribeProviderConfig } from './types';
export declare const defineSurgioConfig: (config: CommandConfigBeforeNormalize) => {
    artifacts: {
        name: string;
        template: string;
        provider: string;
        templateType?: "default" | "json" | undefined;
        extendTemplate?: ((args_0: unknown, ...args: unknown[]) => unknown) | undefined;
        categories?: string[] | undefined;
        combineProviders?: string[] | undefined;
        customParams?: Record<string, any> | undefined;
        customFilters?: Record<string, (...args: unknown[]) => unknown> | undefined;
        destDir?: string | undefined;
        destDirs?: string[] | undefined;
        downloadUrl?: string | undefined;
        templateString?: string | undefined;
        subscriptionUserInfoProvider?: string | undefined;
    }[];
    customParams?: Record<string, any> | undefined;
    customFilters?: Record<string, ((nodeConfig: import("./types").PossibleNodeConfigType) => boolean) | {
        readonly filter: <T extends import("./types").PossibleNodeConfigType>(nodeList: ReadonlyArray<T>) => ReadonlyArray<T>;
        readonly supportSort: true;
    }> | undefined;
    resolveHostname?: boolean | undefined;
    surgeConfig?: {
        resolveHostname?: boolean | undefined;
        vmessAEAD?: boolean | undefined;
    } | undefined;
    surfboardConfig?: {
        vmessAEAD?: boolean | undefined;
    } | undefined;
    quantumultXConfig?: {
        vmessAEAD?: boolean | undefined;
    } | undefined;
    clashConfig?: {
        enableTuic?: boolean | undefined;
        enableShadowTls?: boolean | undefined;
        enableHysteria2?: boolean | undefined;
        enableVless?: boolean | undefined;
        clashCore?: "clash" | "clash.meta" | "stash" | undefined;
    } | undefined;
    binPath?: {
        shadowsocksr: string;
    } | undefined;
    remoteSnippets?: {
        name: string;
        url: string;
        surgioSnippet?: boolean | undefined;
    }[] | undefined;
    urlBase?: string | undefined;
    upload?: {
        bucket: string;
        accessKeyId: string;
        accessKeySecret: string;
        endpoint?: string | undefined;
        prefix?: string | undefined;
        region?: string | undefined;
    } | undefined;
    flags?: Record<string, string | RegExp | (string | RegExp)[]> | undefined;
    gateway?: {
        accessToken?: string | undefined;
        viewerToken?: string | undefined;
        auth?: boolean | undefined;
        cookieMaxAge?: number | undefined;
        useCacheOnError?: boolean | undefined;
        passRequestUserAgent?: boolean | undefined;
        passRequestHeaders?: string[] | undefined;
    } | undefined;
    checkHostname?: boolean | undefined;
    proxyTestUrl?: string | undefined;
    proxyTestInterval?: number | undefined;
    internetTestUrl?: string | undefined;
    internetTestInterval?: number | undefined;
    analytics?: boolean | undefined;
    cache?: {
        type?: "default" | "redis" | undefined;
        redisUrl?: string | undefined;
    } | undefined;
};
export type ProviderDefineFunction<T extends PossibleProviderConfigType, U = Omit<T, 'type'>> = (config: U) => T | Promisable<T>;
export declare const defineBlackSSLProvider: ProviderDefineFunction<BlackSSLProviderConfig>;
export declare const defineClashProvider: ProviderDefineFunction<ClashProviderConfig>;
export declare const defineCustomProvider: ProviderDefineFunction<CustomProviderConfig>;
export declare const defineShadowsocksJsonSubscribeProvider: ProviderDefineFunction<ShadowsocksJsonSubscribeProviderConfig>;
export declare const defineShadowsocksSubscribeProvider: ProviderDefineFunction<ShadowsocksSubscribeProviderConfig>;
export declare const defineShadowsocksrSubscribeProvider: ProviderDefineFunction<ShadowsocksrSubscribeProviderConfig>;
export declare const defineSsdProvider: ProviderDefineFunction<SsdProviderConfig>;
export declare const defineTrojanProvider: ProviderDefineFunction<TrojanProviderConfig>;
export declare const defineV2rayNSubscribeProvider: ProviderDefineFunction<V2rayNSubscribeProviderConfig>;
