import _m0 from 'protobufjs/minimal';
import { Secret } from '../../../../../yandex/cloud/datatransfer/v1/endpoint/common';
export declare const protobufPackage = "yandex.cloud.datatransfer.v1.endpoint";
export declare enum MetrikaStreamType {
    METRIKA_STREAM_TYPE_UNSPECIFIED = 0,
    METRIKA_STREAM_TYPE_HITS = 1,
    METRIKA_STREAM_TYPE_VISITS = 2,
    METRIKA_STREAM_TYPE_HITS_V2 = 3,
    UNRECOGNIZED = -1
}
export declare function metrikaStreamTypeFromJSON(object: any): MetrikaStreamType;
export declare function metrikaStreamTypeToJSON(object: MetrikaStreamType): string;
export interface MetrikaStream {
    type: MetrikaStreamType;
    columns: string[];
}
export interface MetrikaSource {
    counterIds: number[];
    token?: Secret;
    streams: MetrikaStream[];
}
export declare const MetrikaStream: {
    encode(message: MetrikaStream, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MetrikaStream;
    fromJSON(object: any): MetrikaStream;
    toJSON(message: MetrikaStream): unknown;
    fromPartial<I extends {
        type?: MetrikaStreamType | undefined;
        columns?: string[] | undefined;
    } & {
        type?: MetrikaStreamType | undefined;
        columns?: (string[] & string[] & Record<Exclude<keyof I["columns"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof MetrikaStream>, never>>(object: I): MetrikaStream;
};
export declare const MetrikaSource: {
    encode(message: MetrikaSource, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MetrikaSource;
    fromJSON(object: any): MetrikaSource;
    toJSON(message: MetrikaSource): unknown;
    fromPartial<I extends {
        counterIds?: number[] | undefined;
        token?: {
            raw?: string | undefined;
        } | undefined;
        streams?: {
            type?: MetrikaStreamType | undefined;
            columns?: string[] | undefined;
        }[] | undefined;
    } & {
        counterIds?: (number[] & number[] & Record<Exclude<keyof I["counterIds"], keyof number[]>, never>) | undefined;
        token?: ({
            raw?: string | undefined;
        } & {
            raw?: string | undefined;
        } & Record<Exclude<keyof I["token"], "raw">, never>) | undefined;
        streams?: ({
            type?: MetrikaStreamType | undefined;
            columns?: string[] | undefined;
        }[] & ({
            type?: MetrikaStreamType | undefined;
            columns?: string[] | undefined;
        } & {
            type?: MetrikaStreamType | undefined;
            columns?: (string[] & string[] & Record<Exclude<keyof I["streams"][number]["columns"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["streams"][number], keyof MetrikaStream>, never>)[] & Record<Exclude<keyof I["streams"], keyof {
            type?: MetrikaStreamType | undefined;
            columns?: string[] | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof MetrikaSource>, never>>(object: I): MetrikaSource;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & Record<Exclude<keyof I, KeysOfUnion<P>>, never>;
export {};
