import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { IPOrDomain } from "../../common/net/address";
import { ServerEndpoint } from "../../common/protocol/server_spec";
export declare const protobufPackage = "xray.proxy.socks";
/** AuthType is the authentication type of Socks proxy. */
export declare enum AuthType {
    /** NO_AUTH - NO_AUTH is for anonymous authentication. */
    NO_AUTH = 0,
    /** PASSWORD - PASSWORD is for username/password authentication. */
    PASSWORD = 1,
    UNRECOGNIZED = -1
}
export declare function authTypeFromJSON(object: any): AuthType;
export declare function authTypeToJSON(object: AuthType): string;
/** Account represents a Socks account. */
export interface Account {
    $type: "xray.proxy.socks.Account";
    username: string;
    password: string;
}
/** ServerConfig is the protobuf config for Socks server. */
export interface ServerConfig {
    $type: "xray.proxy.socks.ServerConfig";
    authType: AuthType;
    accounts: {
        [key: string]: string;
    };
    address: IPOrDomain | undefined;
    udpEnabled: boolean;
    userLevel: number;
}
export interface ServerConfig_AccountsEntry {
    $type: "xray.proxy.socks.ServerConfig.AccountsEntry";
    key: string;
    value: string;
}
/** ClientConfig is the protobuf config for Socks client. */
export interface ClientConfig {
    $type: "xray.proxy.socks.ClientConfig";
    /** Sever is a list of Socks server addresses. */
    server: ServerEndpoint[];
}
export declare const Account: MessageFns<Account, "xray.proxy.socks.Account">;
export declare const ServerConfig: MessageFns<ServerConfig, "xray.proxy.socks.ServerConfig">;
export declare const ServerConfig_AccountsEntry: MessageFns<ServerConfig_AccountsEntry, "xray.proxy.socks.ServerConfig.AccountsEntry">;
export declare const ClientConfig: MessageFns<ClientConfig, "xray.proxy.socks.ClientConfig">;
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