import { BinaryReader, BinaryWriter } from '@bufbuild/protobuf/wire';
import { IPOrDomain } from '../../common/net/address';
import { Network } from '../../common/net/network';
import { User } from '../../common/protocol/user';
export declare const protobufPackage = "xray.proxy.shadowsocks_2022";
export interface ServerConfig {
    $type: 'xray.proxy.shadowsocks_2022.ServerConfig';
    method: string;
    key: string;
    email: string;
    level: number;
    network: Network[];
}
export interface MultiUserServerConfig {
    $type: 'xray.proxy.shadowsocks_2022.MultiUserServerConfig';
    method: string;
    key: string;
    users: User[];
    network: Network[];
}
export interface RelayDestination {
    $type: 'xray.proxy.shadowsocks_2022.RelayDestination';
    key: string;
    address: IPOrDomain | undefined;
    port: number;
    email: string;
    level: number;
}
export interface RelayServerConfig {
    $type: 'xray.proxy.shadowsocks_2022.RelayServerConfig';
    method: string;
    key: string;
    destinations: RelayDestination[];
    network: Network[];
}
export interface Account {
    $type: 'xray.proxy.shadowsocks_2022.Account';
    key: string;
}
export interface ClientConfig {
    $type: 'xray.proxy.shadowsocks_2022.ClientConfig';
    address: IPOrDomain | undefined;
    port: number;
    method: string;
    key: string;
    udpOverTcp: boolean;
    udpOverTcpVersion: number;
}
export declare const ServerConfig: MessageFns<ServerConfig, 'xray.proxy.shadowsocks_2022.ServerConfig'>;
export declare const MultiUserServerConfig: MessageFns<MultiUserServerConfig, 'xray.proxy.shadowsocks_2022.MultiUserServerConfig'>;
export declare const RelayDestination: MessageFns<RelayDestination, 'xray.proxy.shadowsocks_2022.RelayDestination'>;
export declare const RelayServerConfig: MessageFns<RelayServerConfig, 'xray.proxy.shadowsocks_2022.RelayServerConfig'>;
export declare const Account: MessageFns<Account, 'xray.proxy.shadowsocks_2022.Account'>;
export declare const ClientConfig: MessageFns<ClientConfig, 'xray.proxy.shadowsocks_2022.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