import { BinaryReader, BinaryWriter } from '@bufbuild/protobuf/wire';
export declare const protobufPackage = "xray.app.policy";
export interface Second {
    $type: 'xray.app.policy.Second';
    value: number;
}
export interface Policy {
    $type: 'xray.app.policy.Policy';
    timeout: Policy_Timeout | undefined;
    stats: Policy_Stats | undefined;
    buffer: Policy_Buffer | undefined;
}
/** Timeout is a message for timeout settings in various stages, in seconds. */
export interface Policy_Timeout {
    $type: 'xray.app.policy.Policy.Timeout';
    handshake: Second | undefined;
    connectionIdle: Second | undefined;
    uplinkOnly: Second | undefined;
    downlinkOnly: Second | undefined;
}
export interface Policy_Stats {
    $type: 'xray.app.policy.Policy.Stats';
    userUplink: boolean;
    userDownlink: boolean;
    userOnline: boolean;
}
export interface Policy_Buffer {
    $type: 'xray.app.policy.Policy.Buffer';
    /** Buffer size per connection, in bytes. -1 for unlimited buffer. */
    connection: number;
}
export interface SystemPolicy {
    $type: 'xray.app.policy.SystemPolicy';
    stats: SystemPolicy_Stats | undefined;
}
export interface SystemPolicy_Stats {
    $type: 'xray.app.policy.SystemPolicy.Stats';
    inboundUplink: boolean;
    inboundDownlink: boolean;
    outboundUplink: boolean;
    outboundDownlink: boolean;
}
export interface Config {
    $type: 'xray.app.policy.Config';
    level: {
        [key: number]: Policy;
    };
    system: SystemPolicy | undefined;
}
export interface Config_LevelEntry {
    $type: 'xray.app.policy.Config.LevelEntry';
    key: number;
    value: Policy | undefined;
}
export declare const Second: MessageFns<Second, 'xray.app.policy.Second'>;
export declare const Policy: MessageFns<Policy, 'xray.app.policy.Policy'>;
export declare const Policy_Timeout: MessageFns<Policy_Timeout, 'xray.app.policy.Policy.Timeout'>;
export declare const Policy_Stats: MessageFns<Policy_Stats, 'xray.app.policy.Policy.Stats'>;
export declare const Policy_Buffer: MessageFns<Policy_Buffer, 'xray.app.policy.Policy.Buffer'>;
export declare const SystemPolicy: MessageFns<SystemPolicy, 'xray.app.policy.SystemPolicy'>;
export declare const SystemPolicy_Stats: MessageFns<SystemPolicy_Stats, 'xray.app.policy.SystemPolicy.Stats'>;
export declare const Config: MessageFns<Config, 'xray.app.policy.Config'>;
export declare const Config_LevelEntry: MessageFns<Config_LevelEntry, 'xray.app.policy.Config.LevelEntry'>;
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