/// <reference types="node" />
import _m0 from 'protobufjs/minimal';
import { Image } from '../../../../../yandex/cloud/ai/vision/v2/image';
export declare const protobufPackage = "yandex.cloud.ai.vision.v2";
/** Description of single label */
export interface Label {
    /** Label name */
    name: string;
    /** human readable description of label */
    description: string;
}
/** Image annotation for specific label */
export interface ClassAnnotation {
    /** list of annotated labels */
    label?: Label;
    /** confidence for each label */
    confidence: number;
}
/** Specification of model used for annotation */
export interface ClassifierSpecification {
    /** List of labels, annotated by service */
    labels: Label[];
    /** type of annotation: exclusive (multi-class) or non-exclusive (multi-label) */
    classificationType: ClassifierSpecification_ClassificationType;
}
export declare enum ClassifierSpecification_ClassificationType {
    CLASSIFICATION_TYPE_UNSPECIFIED = 0,
    MULTI_LABEL = 1,
    MULTI_CLASS = 2,
    UNRECOGNIZED = -1
}
export declare function classifierSpecification_ClassificationTypeFromJSON(object: any): ClassifierSpecification_ClassificationType;
export declare function classifierSpecification_ClassificationTypeToJSON(object: ClassifierSpecification_ClassificationType): string;
/**  */
export interface AnnotationResponse {
    /** internal service requestId */
    requestId: string;
    /** class specification */
    classifierSpecification?: ClassifierSpecification;
    /** annotations for each class */
    annotations: ClassAnnotation[];
}
/** request for annotation */
export interface AnnotationRequest {
    /** image to annotate */
    image?: Image;
}
export declare const Label: {
    encode(message: Label, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Label;
    fromJSON(object: any): Label;
    toJSON(message: Label): unknown;
    fromPartial<I extends {
        name?: string | undefined;
        description?: string | undefined;
    } & {
        name?: string | undefined;
        description?: string | undefined;
    } & Record<Exclude<keyof I, keyof Label>, never>>(object: I): Label;
};
export declare const ClassAnnotation: {
    encode(message: ClassAnnotation, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ClassAnnotation;
    fromJSON(object: any): ClassAnnotation;
    toJSON(message: ClassAnnotation): unknown;
    fromPartial<I extends {
        label?: {
            name?: string | undefined;
            description?: string | undefined;
        } | undefined;
        confidence?: number | undefined;
    } & {
        label?: ({
            name?: string | undefined;
            description?: string | undefined;
        } & {
            name?: string | undefined;
            description?: string | undefined;
        } & Record<Exclude<keyof I["label"], keyof Label>, never>) | undefined;
        confidence?: number | undefined;
    } & Record<Exclude<keyof I, keyof ClassAnnotation>, never>>(object: I): ClassAnnotation;
};
export declare const ClassifierSpecification: {
    encode(message: ClassifierSpecification, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ClassifierSpecification;
    fromJSON(object: any): ClassifierSpecification;
    toJSON(message: ClassifierSpecification): unknown;
    fromPartial<I extends {
        labels?: {
            name?: string | undefined;
            description?: string | undefined;
        }[] | undefined;
        classificationType?: ClassifierSpecification_ClassificationType | undefined;
    } & {
        labels?: ({
            name?: string | undefined;
            description?: string | undefined;
        }[] & ({
            name?: string | undefined;
            description?: string | undefined;
        } & {
            name?: string | undefined;
            description?: string | undefined;
        } & Record<Exclude<keyof I["labels"][number], keyof Label>, never>)[] & Record<Exclude<keyof I["labels"], keyof {
            name?: string | undefined;
            description?: string | undefined;
        }[]>, never>) | undefined;
        classificationType?: ClassifierSpecification_ClassificationType | undefined;
    } & Record<Exclude<keyof I, keyof ClassifierSpecification>, never>>(object: I): ClassifierSpecification;
};
export declare const AnnotationResponse: {
    encode(message: AnnotationResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AnnotationResponse;
    fromJSON(object: any): AnnotationResponse;
    toJSON(message: AnnotationResponse): unknown;
    fromPartial<I extends {
        requestId?: string | undefined;
        classifierSpecification?: {
            labels?: {
                name?: string | undefined;
                description?: string | undefined;
            }[] | undefined;
            classificationType?: ClassifierSpecification_ClassificationType | undefined;
        } | undefined;
        annotations?: {
            label?: {
                name?: string | undefined;
                description?: string | undefined;
            } | undefined;
            confidence?: number | undefined;
        }[] | undefined;
    } & {
        requestId?: string | undefined;
        classifierSpecification?: ({
            labels?: {
                name?: string | undefined;
                description?: string | undefined;
            }[] | undefined;
            classificationType?: ClassifierSpecification_ClassificationType | undefined;
        } & {
            labels?: ({
                name?: string | undefined;
                description?: string | undefined;
            }[] & ({
                name?: string | undefined;
                description?: string | undefined;
            } & {
                name?: string | undefined;
                description?: string | undefined;
            } & Record<Exclude<keyof I["classifierSpecification"]["labels"][number], keyof Label>, never>)[] & Record<Exclude<keyof I["classifierSpecification"]["labels"], keyof {
                name?: string | undefined;
                description?: string | undefined;
            }[]>, never>) | undefined;
            classificationType?: ClassifierSpecification_ClassificationType | undefined;
        } & Record<Exclude<keyof I["classifierSpecification"], keyof ClassifierSpecification>, never>) | undefined;
        annotations?: ({
            label?: {
                name?: string | undefined;
                description?: string | undefined;
            } | undefined;
            confidence?: number | undefined;
        }[] & ({
            label?: {
                name?: string | undefined;
                description?: string | undefined;
            } | undefined;
            confidence?: number | undefined;
        } & {
            label?: ({
                name?: string | undefined;
                description?: string | undefined;
            } & {
                name?: string | undefined;
                description?: string | undefined;
            } & Record<Exclude<keyof I["annotations"][number]["label"], keyof Label>, never>) | undefined;
            confidence?: number | undefined;
        } & Record<Exclude<keyof I["annotations"][number], keyof ClassAnnotation>, never>)[] & Record<Exclude<keyof I["annotations"], keyof {
            label?: {
                name?: string | undefined;
                description?: string | undefined;
            } | undefined;
            confidence?: number | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof AnnotationResponse>, never>>(object: I): AnnotationResponse;
};
export declare const AnnotationRequest: {
    encode(message: AnnotationRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AnnotationRequest;
    fromJSON(object: any): AnnotationRequest;
    toJSON(message: AnnotationRequest): unknown;
    fromPartial<I extends {
        image?: {
            content?: Buffer | undefined;
            imageType?: import("../../../../../yandex/cloud/ai/vision/v2/image").Image_ImageType | undefined;
        } | undefined;
    } & {
        image?: ({
            content?: Buffer | undefined;
            imageType?: import("../../../../../yandex/cloud/ai/vision/v2/image").Image_ImageType | undefined;
        } & {
            content?: Buffer | undefined;
            imageType?: import("../../../../../yandex/cloud/ai/vision/v2/image").Image_ImageType | undefined;
        } & Record<Exclude<keyof I["image"], keyof Image>, never>) | undefined;
    } & Record<Exclude<keyof I, "image">, never>>(object: I): AnnotationRequest;
};
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 {};
