import { BinaryReader, BinaryWriter } from '@bufbuild/protobuf/wire';
import { ServerEndpoint } from '../../common/protocol/server_spec';
export declare const protobufPackage = "xray.proxy.freedom";
export interface DestinationOverride {
    $type: 'xray.proxy.freedom.DestinationOverride';
    server: ServerEndpoint | undefined;
}
export interface Fragment {
    $type: 'xray.proxy.freedom.Fragment';
    packetsFrom: number;
    packetsTo: number;
    lengthMin: number;
    lengthMax: number;
    intervalMin: number;
    intervalMax: number;
}
export interface Noise {
    $type: 'xray.proxy.freedom.Noise';
    lengthMin: number;
    lengthMax: number;
    delayMin: number;
    delayMax: number;
    packet: Uint8Array;
}
export interface Config {
    $type: 'xray.proxy.freedom.Config';
    domainStrategy: Config_DomainStrategy;
    destinationOverride: DestinationOverride | undefined;
    userLevel: number;
    fragment: Fragment | undefined;
    proxyProtocol: number;
    noises: Noise[];
}
export declare enum Config_DomainStrategy {
    AS_IS = 0,
    USE_IP = 1,
    USE_IP4 = 2,
    USE_IP6 = 3,
    USE_IP46 = 4,
    USE_IP64 = 5,
    FORCE_IP = 6,
    FORCE_IP4 = 7,
    FORCE_IP6 = 8,
    FORCE_IP46 = 9,
    FORCE_IP64 = 10,
    UNRECOGNIZED = -1
}
export declare function config_DomainStrategyFromJSON(object: any): Config_DomainStrategy;
export declare function config_DomainStrategyToJSON(object: Config_DomainStrategy): string;
export declare const DestinationOverride: MessageFns<DestinationOverride, 'xray.proxy.freedom.DestinationOverride'>;
export declare const Fragment: MessageFns<Fragment, 'xray.proxy.freedom.Fragment'>;
export declare const Noise: MessageFns<Noise, 'xray.proxy.freedom.Noise'>;
export declare const Config: MessageFns<Config, 'xray.proxy.freedom.Config'>;
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in Exclude<keyof T, '$type'>]?: DeepPartial<T[K]>;
} : Partial<T>;
export interface MessageFns<T, V extends string> {
    readonly $type: V;
    encode(message: T, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): T;
    fromJSON(object: any): T;
    toJSON(message: T): unknown;
    create(base?: DeepPartial<T>): T;
    fromPartial(object: DeepPartial<T>): T;
}
export {};
//# sourceMappingURL=config.d.ts.map