import { z } from 'zod';
import { NodeTypeEnum } from '../types';
export declare const getPositiveIntegersNumberValidatior: (validator: (n: number) => boolean, message: string) => z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, string | number, string | number>;
export declare const PortValidator: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, string | number, string | number>;
export declare const AlterIdValiator: z.ZodDefault<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, string | number, string | number>>;
export declare const IntegersVersionValidator: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, string | number, string | number>;
export declare const SimpleNodeConfigValidator: z.ZodObject<{
    type: z.ZodNativeEnum<typeof NodeTypeEnum>;
    nodeName: z.ZodString;
    enable: z.ZodOptional<z.ZodBoolean>;
    tfo: z.ZodOptional<z.ZodBoolean>;
    mptcp: z.ZodOptional<z.ZodBoolean>;
    ecn: z.ZodOptional<z.ZodBoolean>;
    shadowTls: z.ZodOptional<z.ZodObject<{
        version: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, string | number, string | number>>;
        password: z.ZodString;
        sni: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        password: string;
        sni: string;
        version?: string | number | undefined;
    }, {
        password: string;
        sni: string;
        version?: string | number | undefined;
    }>>;
    blockQuic: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"auto">, z.ZodLiteral<"on">, z.ZodLiteral<"off">]>>;
    portHopping: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
    portHoppingInterval: z.ZodOptional<z.ZodNumber>;
    underlyingProxy: z.ZodOptional<z.ZodString>;
    testUrl: z.ZodOptional<z.ZodString>;
    testTimeout: z.ZodOptional<z.ZodNumber>;
    surgeConfig: z.ZodOptional<z.ZodObject<{
        resolveHostname: z.ZodOptional<z.ZodBoolean>;
        vmessAEAD: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        resolveHostname?: boolean | undefined;
        vmessAEAD?: boolean | undefined;
    }, {
        resolveHostname?: boolean | undefined;
        vmessAEAD?: boolean | undefined;
    }>>;
    surfboardConfig: z.ZodOptional<z.ZodObject<{
        vmessAEAD: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        vmessAEAD?: boolean | undefined;
    }, {
        vmessAEAD?: boolean | undefined;
    }>>;
    quantumultXConfig: z.ZodOptional<z.ZodObject<{
        vmessAEAD: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        vmessAEAD?: boolean | undefined;
    }, {
        vmessAEAD?: boolean | undefined;
    }>>;
    clashConfig: z.ZodOptional<z.ZodObject<{
        enableTuic: z.ZodOptional<z.ZodBoolean>;
        enableShadowTls: z.ZodOptional<z.ZodBoolean>;
        enableHysteria2: z.ZodOptional<z.ZodBoolean>;
        enableVless: z.ZodOptional<z.ZodBoolean>;
        clashCore: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"clash">, z.ZodLiteral<"clash.meta">, z.ZodLiteral<"stash">]>>;
    }, "strip", z.ZodTypeAny, {
        enableTuic?: boolean | undefined;
        enableShadowTls?: boolean | undefined;
        enableHysteria2?: boolean | undefined;
        enableVless?: boolean | undefined;
        clashCore?: "clash" | "clash.meta" | "stash" | undefined;
    }, {
        enableTuic?: boolean | undefined;
        enableShadowTls?: boolean | undefined;
        enableHysteria2?: boolean | undefined;
        enableVless?: boolean | undefined;
        clashCore?: "clash" | "clash.meta" | "stash" | undefined;
    }>>;
    hostnameIp: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString, "many">>>;
    binPath: z.ZodOptional<z.ZodString>;
    localPort: z.ZodOptional<z.ZodNumber>;
    interfaceName: z.ZodOptional<z.ZodString>;
    ipVersion: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: NodeTypeEnum;
    nodeName: string;
    enable?: boolean | undefined;
    tfo?: boolean | undefined;
    mptcp?: boolean | undefined;
    ecn?: boolean | undefined;
    shadowTls?: {
        password: string;
        sni: string;
        version?: string | number | undefined;
    } | undefined;
    blockQuic?: "auto" | "on" | "off" | undefined;
    portHopping?: string | undefined;
    portHoppingInterval?: number | undefined;
    underlyingProxy?: string | undefined;
    testUrl?: string | undefined;
    testTimeout?: number | 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;
    hostnameIp?: readonly string[] | undefined;
    binPath?: string | undefined;
    localPort?: number | undefined;
    interfaceName?: string | undefined;
    ipVersion?: string | undefined;
}, {
    type: NodeTypeEnum;
    nodeName: string;
    enable?: boolean | undefined;
    tfo?: boolean | undefined;
    mptcp?: boolean | undefined;
    ecn?: boolean | undefined;
    shadowTls?: {
        password: string;
        sni: string;
        version?: string | number | undefined;
    } | undefined;
    blockQuic?: "auto" | "on" | "off" | undefined;
    portHopping?: string | undefined;
    portHoppingInterval?: number | undefined;
    underlyingProxy?: string | undefined;
    testUrl?: string | undefined;
    testTimeout?: number | 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;
    hostnameIp?: readonly string[] | undefined;
    binPath?: string | undefined;
    localPort?: number | undefined;
    interfaceName?: string | undefined;
    ipVersion?: string | undefined;
}>;
export declare const TlsNodeConfigValidator: z.ZodObject<{
    type: z.ZodNativeEnum<typeof NodeTypeEnum>;
    nodeName: z.ZodString;
    enable: z.ZodOptional<z.ZodBoolean>;
    tfo: z.ZodOptional<z.ZodBoolean>;
    mptcp: z.ZodOptional<z.ZodBoolean>;
    ecn: z.ZodOptional<z.ZodBoolean>;
    shadowTls: z.ZodOptional<z.ZodObject<{
        version: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, string | number, string | number>>;
        password: z.ZodString;
        sni: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        password: string;
        sni: string;
        version?: string | number | undefined;
    }, {
        password: string;
        sni: string;
        version?: string | number | undefined;
    }>>;
    blockQuic: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"auto">, z.ZodLiteral<"on">, z.ZodLiteral<"off">]>>;
    portHopping: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
    portHoppingInterval: z.ZodOptional<z.ZodNumber>;
    underlyingProxy: z.ZodOptional<z.ZodString>;
    testUrl: z.ZodOptional<z.ZodString>;
    testTimeout: z.ZodOptional<z.ZodNumber>;
    surgeConfig: z.ZodOptional<z.ZodObject<{
        resolveHostname: z.ZodOptional<z.ZodBoolean>;
        vmessAEAD: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        resolveHostname?: boolean | undefined;
        vmessAEAD?: boolean | undefined;
    }, {
        resolveHostname?: boolean | undefined;
        vmessAEAD?: boolean | undefined;
    }>>;
    surfboardConfig: z.ZodOptional<z.ZodObject<{
        vmessAEAD: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        vmessAEAD?: boolean | undefined;
    }, {
        vmessAEAD?: boolean | undefined;
    }>>;
    quantumultXConfig: z.ZodOptional<z.ZodObject<{
        vmessAEAD: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        vmessAEAD?: boolean | undefined;
    }, {
        vmessAEAD?: boolean | undefined;
    }>>;
    clashConfig: z.ZodOptional<z.ZodObject<{
        enableTuic: z.ZodOptional<z.ZodBoolean>;
        enableShadowTls: z.ZodOptional<z.ZodBoolean>;
        enableHysteria2: z.ZodOptional<z.ZodBoolean>;
        enableVless: z.ZodOptional<z.ZodBoolean>;
        clashCore: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"clash">, z.ZodLiteral<"clash.meta">, z.ZodLiteral<"stash">]>>;
    }, "strip", z.ZodTypeAny, {
        enableTuic?: boolean | undefined;
        enableShadowTls?: boolean | undefined;
        enableHysteria2?: boolean | undefined;
        enableVless?: boolean | undefined;
        clashCore?: "clash" | "clash.meta" | "stash" | undefined;
    }, {
        enableTuic?: boolean | undefined;
        enableShadowTls?: boolean | undefined;
        enableHysteria2?: boolean | undefined;
        enableVless?: boolean | undefined;
        clashCore?: "clash" | "clash.meta" | "stash" | undefined;
    }>>;
    hostnameIp: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString, "many">>>;
    binPath: z.ZodOptional<z.ZodString>;
    localPort: z.ZodOptional<z.ZodNumber>;
    interfaceName: z.ZodOptional<z.ZodString>;
    ipVersion: z.ZodOptional<z.ZodString>;
} & {
    hostname: z.ZodString;
    port: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, string | number, string | number>;
    tls13: z.ZodOptional<z.ZodBoolean>;
    skipCertVerify: z.ZodOptional<z.ZodBoolean>;
    sni: z.ZodOptional<z.ZodString>;
    alpn: z.ZodOptional<z.ZodArray<z.ZodString, "atleastone">>;
    serverCertFingerprintSha256: z.ZodOptional<z.ZodString>;
    clientFingerprint: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    port: string | number;
    type: NodeTypeEnum;
    nodeName: string;
    hostname: string;
    enable?: boolean | undefined;
    tfo?: boolean | undefined;
    mptcp?: boolean | undefined;
    ecn?: boolean | undefined;
    sni?: string | undefined;
    shadowTls?: {
        password: string;
        sni: string;
        version?: string | number | undefined;
    } | undefined;
    blockQuic?: "auto" | "on" | "off" | undefined;
    portHopping?: string | undefined;
    portHoppingInterval?: number | undefined;
    underlyingProxy?: string | undefined;
    testUrl?: string | undefined;
    testTimeout?: number | 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;
    hostnameIp?: readonly string[] | undefined;
    binPath?: string | undefined;
    localPort?: number | undefined;
    interfaceName?: string | undefined;
    ipVersion?: string | undefined;
    tls13?: boolean | undefined;
    skipCertVerify?: boolean | undefined;
    alpn?: [string, ...string[]] | undefined;
    serverCertFingerprintSha256?: string | undefined;
    clientFingerprint?: string | undefined;
}, {
    port: string | number;
    type: NodeTypeEnum;
    nodeName: string;
    hostname: string;
    enable?: boolean | undefined;
    tfo?: boolean | undefined;
    mptcp?: boolean | undefined;
    ecn?: boolean | undefined;
    sni?: string | undefined;
    shadowTls?: {
        password: string;
        sni: string;
        version?: string | number | undefined;
    } | undefined;
    blockQuic?: "auto" | "on" | "off" | undefined;
    portHopping?: string | undefined;
    portHoppingInterval?: number | undefined;
    underlyingProxy?: string | undefined;
    testUrl?: string | undefined;
    testTimeout?: number | 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;
    hostnameIp?: readonly string[] | undefined;
    binPath?: string | undefined;
    localPort?: number | undefined;
    interfaceName?: string | undefined;
    ipVersion?: string | undefined;
    tls13?: boolean | undefined;
    skipCertVerify?: boolean | undefined;
    alpn?: [string, ...string[]] | undefined;
    serverCertFingerprintSha256?: string | undefined;
    clientFingerprint?: string | undefined;
}>;
export declare const MultiplexValidator: z.ZodObject<{
    protocol: z.ZodEnum<["smux", "yamux", "h2mux"]>;
    maxConnections: z.ZodOptional<z.ZodNumber>;
    minStreams: z.ZodOptional<z.ZodNumber>;
    maxStreams: z.ZodOptional<z.ZodNumber>;
    padding: z.ZodOptional<z.ZodBoolean>;
    brutal: z.ZodOptional<z.ZodObject<{
        upMbps: z.ZodNumber;
        downMbps: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        upMbps: number;
        downMbps: number;
    }, {
        upMbps: number;
        downMbps: number;
    }>>;
}, "strip", z.ZodTypeAny, {
    protocol: "smux" | "yamux" | "h2mux";
    maxConnections?: number | undefined;
    minStreams?: number | undefined;
    maxStreams?: number | undefined;
    padding?: boolean | undefined;
    brutal?: {
        upMbps: number;
        downMbps: number;
    } | undefined;
}, {
    protocol: "smux" | "yamux" | "h2mux";
    maxConnections?: number | undefined;
    minStreams?: number | undefined;
    maxStreams?: number | undefined;
    padding?: boolean | undefined;
    brutal?: {
        upMbps: number;
        downMbps: number;
    } | undefined;
}>;
