/// <reference types="node" />
import _m0 from 'protobufjs/minimal';
import { Any } from '../../../google/protobuf/any';
import { Status } from '../../../google/rpc/status';
export declare const protobufPackage = "yandex.cloud.operation";
/** An Operation resource. For more information, see [Operation](/docs/api-design-guide/concepts/operation). */
export interface Operation {
    /** ID of the operation. */
    id: string;
    /** Description of the operation. 0-256 characters long. */
    description: string;
    /** Creation timestamp. */
    createdAt?: Date;
    /** ID of the user or service account who initiated the operation. */
    createdBy: string;
    /** The time when the Operation resource was last modified. */
    modifiedAt?: Date;
    /**
     * If the value is `false`, it means the operation is still in progress.
     * If `true`, the operation is completed, and either `error` or `response` is available.
     */
    done: boolean;
    /**
     * Service-specific metadata associated with the operation.
     * It typically contains the ID of the target resource that the operation is performed on.
     * Any method that returns a long-running operation should document the metadata type, if any.
     */
    metadata?: Any;
    /** The error result of the operation in case of failure or cancellation. */
    error?: Status | undefined;
    /**
     * The normal response of the operation in case of success.
     * If the original method returns no data on success, such as Delete,
     * the response is [google.protobuf.Empty].
     * If the original method is the standard Create/Update,
     * the response should be the target resource of the operation.
     * Any method that returns a long-running operation should document the response type, if any.
     */
    response?: Any | undefined;
}
export declare const Operation: {
    encode(message: Operation, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Operation;
    fromJSON(object: any): Operation;
    toJSON(message: Operation): unknown;
    fromPartial<I extends {
        id?: string | undefined;
        description?: string | undefined;
        createdAt?: Date | undefined;
        createdBy?: string | undefined;
        modifiedAt?: Date | undefined;
        done?: boolean | undefined;
        metadata?: {
            typeUrl?: string | undefined;
            value?: Buffer | undefined;
        } | undefined;
        error?: {
            code?: number | undefined;
            message?: string | undefined;
            details?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            }[] | undefined;
        } | undefined;
        response?: {
            typeUrl?: string | undefined;
            value?: Buffer | undefined;
        } | undefined;
    } & {
        id?: string | undefined;
        description?: string | undefined;
        createdAt?: Date | undefined;
        createdBy?: string | undefined;
        modifiedAt?: Date | undefined;
        done?: boolean | undefined;
        metadata?: ({
            typeUrl?: string | undefined;
            value?: Buffer | undefined;
        } & {
            typeUrl?: string | undefined;
            value?: Buffer | undefined;
        } & Record<Exclude<keyof I["metadata"], keyof Any>, never>) | undefined;
        error?: ({
            code?: number | undefined;
            message?: string | undefined;
            details?: {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            }[] | undefined;
        } & {
            code?: number | undefined;
            message?: string | undefined;
            details?: ({
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            }[] & ({
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } & {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            } & Record<Exclude<keyof I["error"]["details"][number], keyof Any>, never>)[] & Record<Exclude<keyof I["error"]["details"], keyof {
                typeUrl?: string | undefined;
                value?: Buffer | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["error"], keyof Status>, never>) | undefined;
        response?: ({
            typeUrl?: string | undefined;
            value?: Buffer | undefined;
        } & {
            typeUrl?: string | undefined;
            value?: Buffer | undefined;
        } & Record<Exclude<keyof I["response"], keyof Any>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof Operation>, never>>(object: I): Operation;
};
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 {};
