import _m0 from 'protobufjs/minimal';
import { Blob } from '../../../../yandex/cloud/containerregistry/v1/blob';
export declare const protobufPackage = "yandex.cloud.containerregistry.v1";
/** An Image resource. For more information, see [Docker image](/docs/container-registry/concepts/docker-image). */
export interface Image {
    /** Output only. ID of the Docker image. */
    id: string;
    /**
     * Name of the Docker image.
     * The name is unique within the registry.
     */
    name: string;
    /** Content-addressable identifier of the Docker image. */
    digest: string;
    /** Compressed size of the Docker image, specified in bytes. */
    compressedSize: number;
    /** Configuration of the Docker image. */
    config?: Blob;
    /** Layers of the Docker image. */
    layers: Blob[];
    /**
     * Tags of the Docker image.
     *
     * Each tag is unique within the repository.
     */
    tags: string[];
    /** Output only. Creation timestamp in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. */
    createdAt?: Date;
}
export declare const Image: {
    encode(message: Image, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Image;
    fromJSON(object: any): Image;
    toJSON(message: Image): unknown;
    fromPartial<I extends {
        id?: string | undefined;
        name?: string | undefined;
        digest?: string | undefined;
        compressedSize?: number | undefined;
        config?: {
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: string[] | undefined;
        } | undefined;
        layers?: {
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: string[] | undefined;
        }[] | undefined;
        tags?: string[] | undefined;
        createdAt?: Date | undefined;
    } & {
        id?: string | undefined;
        name?: string | undefined;
        digest?: string | undefined;
        compressedSize?: number | undefined;
        config?: ({
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: string[] | undefined;
        } & {
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: (string[] & string[] & Record<Exclude<keyof I["config"]["urls"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["config"], keyof Blob>, never>) | undefined;
        layers?: ({
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: string[] | undefined;
        }[] & ({
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: string[] | undefined;
        } & {
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: (string[] & string[] & Record<Exclude<keyof I["layers"][number]["urls"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["layers"][number], keyof Blob>, never>)[] & Record<Exclude<keyof I["layers"], keyof {
            id?: string | undefined;
            digest?: string | undefined;
            size?: number | undefined;
            urls?: string[] | undefined;
        }[]>, never>) | undefined;
        tags?: (string[] & string[] & Record<Exclude<keyof I["tags"], keyof string[]>, never>) | undefined;
        createdAt?: Date | undefined;
    } & Record<Exclude<keyof I, keyof Image>, never>>(object: I): Image;
};
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 {};
