/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
export declare const protobufPackage = "yandex.cloud.loadtesting.agent.v1";
export interface AddMetricRequest {
    computeInstanceId: string;
    jobId: string;
    chunks: MetricChunk[];
    agentInstanceId: string;
}
export interface MetricChunk {
    data: Metric[];
    timestamp: number;
    comment: string;
    instanceHost: string;
}
export interface Metric {
    metricType: string;
    metricName: string;
    metricValue: number;
}
export interface AddMetricResponse {
    metricTrailId: string;
    code: number;
}
export declare const AddMetricRequest: {
    encode(message: AddMetricRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AddMetricRequest;
    fromJSON(object: any): AddMetricRequest;
    toJSON(message: AddMetricRequest): unknown;
    fromPartial<I extends {
        computeInstanceId?: string | undefined;
        jobId?: string | undefined;
        chunks?: {
            data?: {
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            }[] | undefined;
            timestamp?: number | undefined;
            comment?: string | undefined;
            instanceHost?: string | undefined;
        }[] | undefined;
        agentInstanceId?: string | undefined;
    } & {
        computeInstanceId?: string | undefined;
        jobId?: string | undefined;
        chunks?: ({
            data?: {
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            }[] | undefined;
            timestamp?: number | undefined;
            comment?: string | undefined;
            instanceHost?: string | undefined;
        }[] & ({
            data?: {
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            }[] | undefined;
            timestamp?: number | undefined;
            comment?: string | undefined;
            instanceHost?: string | undefined;
        } & {
            data?: ({
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            }[] & ({
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            } & {
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            } & Record<Exclude<keyof I["chunks"][number]["data"][number], keyof Metric>, never>)[] & Record<Exclude<keyof I["chunks"][number]["data"], keyof {
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            }[]>, never>) | undefined;
            timestamp?: number | undefined;
            comment?: string | undefined;
            instanceHost?: string | undefined;
        } & Record<Exclude<keyof I["chunks"][number], keyof MetricChunk>, never>)[] & Record<Exclude<keyof I["chunks"], keyof {
            data?: {
                metricType?: string | undefined;
                metricName?: string | undefined;
                metricValue?: number | undefined;
            }[] | undefined;
            timestamp?: number | undefined;
            comment?: string | undefined;
            instanceHost?: string | undefined;
        }[]>, never>) | undefined;
        agentInstanceId?: string | undefined;
    } & Record<Exclude<keyof I, keyof AddMetricRequest>, never>>(object: I): AddMetricRequest;
};
export declare const MetricChunk: {
    encode(message: MetricChunk, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MetricChunk;
    fromJSON(object: any): MetricChunk;
    toJSON(message: MetricChunk): unknown;
    fromPartial<I extends {
        data?: {
            metricType?: string | undefined;
            metricName?: string | undefined;
            metricValue?: number | undefined;
        }[] | undefined;
        timestamp?: number | undefined;
        comment?: string | undefined;
        instanceHost?: string | undefined;
    } & {
        data?: ({
            metricType?: string | undefined;
            metricName?: string | undefined;
            metricValue?: number | undefined;
        }[] & ({
            metricType?: string | undefined;
            metricName?: string | undefined;
            metricValue?: number | undefined;
        } & {
            metricType?: string | undefined;
            metricName?: string | undefined;
            metricValue?: number | undefined;
        } & Record<Exclude<keyof I["data"][number], keyof Metric>, never>)[] & Record<Exclude<keyof I["data"], keyof {
            metricType?: string | undefined;
            metricName?: string | undefined;
            metricValue?: number | undefined;
        }[]>, never>) | undefined;
        timestamp?: number | undefined;
        comment?: string | undefined;
        instanceHost?: string | undefined;
    } & Record<Exclude<keyof I, keyof MetricChunk>, never>>(object: I): MetricChunk;
};
export declare const Metric: {
    encode(message: Metric, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Metric;
    fromJSON(object: any): Metric;
    toJSON(message: Metric): unknown;
    fromPartial<I extends {
        metricType?: string | undefined;
        metricName?: string | undefined;
        metricValue?: number | undefined;
    } & {
        metricType?: string | undefined;
        metricName?: string | undefined;
        metricValue?: number | undefined;
    } & Record<Exclude<keyof I, keyof Metric>, never>>(object: I): Metric;
};
export declare const AddMetricResponse: {
    encode(message: AddMetricResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AddMetricResponse;
    fromJSON(object: any): AddMetricResponse;
    toJSON(message: AddMetricResponse): unknown;
    fromPartial<I extends {
        metricTrailId?: string | undefined;
        code?: number | undefined;
    } & {
        metricTrailId?: string | undefined;
        code?: number | undefined;
    } & Record<Exclude<keyof I, keyof AddMetricResponse>, never>>(object: I): AddMetricResponse;
};
export declare const MonitoringServiceService: {
    /** Saves monitoring events for specified job */
    readonly addMetric: {
        readonly path: "/yandex.cloud.loadtesting.agent.v1.MonitoringService/AddMetric";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: AddMetricRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => AddMetricRequest;
        readonly responseSerialize: (value: AddMetricResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => AddMetricResponse;
    };
};
export interface MonitoringServiceServer extends UntypedServiceImplementation {
    /** Saves monitoring events for specified job */
    addMetric: handleUnaryCall<AddMetricRequest, AddMetricResponse>;
}
export interface MonitoringServiceClient extends Client {
    /** Saves monitoring events for specified job */
    addMetric(request: AddMetricRequest, callback: (error: ServiceError | null, response: AddMetricResponse) => void): ClientUnaryCall;
    addMetric(request: AddMetricRequest, metadata: Metadata, callback: (error: ServiceError | null, response: AddMetricResponse) => void): ClientUnaryCall;
    addMetric(request: AddMetricRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: AddMetricResponse) => void): ClientUnaryCall;
}
export declare const MonitoringServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): MonitoringServiceClient;
    service: typeof MonitoringServiceService;
};
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 {};
