import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { DomainRule } from "../../common/geodata/geodat";
import { Endpoint } from "../../common/net/destination";
export declare const protobufPackage = "xray.proxy.dns";
export declare enum RuleAction {
    Direct = 0,
    Drop = 1,
    Reject = 2,
    Hijack = 3,
    UNRECOGNIZED = -1
}
export declare function ruleActionFromJSON(object: any): RuleAction;
export declare function ruleActionToJSON(object: RuleAction): string;
export interface DNSRuleConfig {
    $type: "xray.proxy.dns.DNSRuleConfig";
    action: RuleAction;
    qtype: number[];
    domain: DomainRule[];
}
export interface Config {
    $type: "xray.proxy.dns.Config";
    userLevel: number;
    rule: DNSRuleConfig[];
    server: Endpoint | undefined;
}
export declare const DNSRuleConfig: MessageFns<DNSRuleConfig, "xray.proxy.dns.DNSRuleConfig">;
export declare const Config: MessageFns<Config, "xray.proxy.dns.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