/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { Thumbnail } from '../../../../yandex/cloud/video/v1/thumbnail';
import { Operation } from '../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.video.v1";
export interface GetThumbnailRequest {
    /** ID of the thumbnail. */
    thumbnailId: string;
}
export interface ListThumbnailRequest {
    /** ID of the channel. */
    channelId: string;
    /**
     * The maximum number of the results per page to return.
     * Default value: 100.
     */
    pageSize: number;
    /** Page token for getting the next page of the result. */
    pageToken: string;
}
export interface ListThumbnailResponse {
    /** List of thumbnails. */
    thumbnails: Thumbnail[];
    /** Token for getting the next page. */
    nextPageToken: string;
}
export interface CreateThumbnailRequest {
    /** ID of the channel. */
    channelId: string;
}
export interface CreateThumbnailMetadata {
    /** ID of the thumbnail. */
    thumbnailId: string;
}
export interface BatchGenerateDownloadURLsRequest {
    /** ID of the channel. */
    channelId: string;
    /** List of thumbnails IDs. */
    thumbnailIds: string[];
}
export interface BatchGenerateDownloadURLsResponse {
    /** List of download urls. */
    downloadUrls: ThumbnailDownloadURL[];
}
export interface ThumbnailDownloadURL {
    /** ID of the thumbnail. */
    thumbnailId: string;
    /** Original download url. */
    originalUrl: string;
    /** List of download urls, one per each available image size. */
    scaledUrls: ThumbnailDownloadURL_ScaledURL[];
}
export declare enum ThumbnailDownloadURL_ImageFormat {
    /** IMAGE_FORMAT_UNSPECIFIED - Image format unspecified. */
    IMAGE_FORMAT_UNSPECIFIED = 0,
    /** JPEG - JPEG image format. */
    JPEG = 1,
    /** WEBP - WebP image format. */
    WEBP = 2,
    UNRECOGNIZED = -1
}
export declare function thumbnailDownloadURL_ImageFormatFromJSON(object: any): ThumbnailDownloadURL_ImageFormat;
export declare function thumbnailDownloadURL_ImageFormatToJSON(object: ThumbnailDownloadURL_ImageFormat): string;
export interface ThumbnailDownloadURL_ScaledURL {
    /** Download url. */
    url: string;
    /** Maximum width of the rectangle to inscribe the thumbnail into. */
    maxWidth: number;
    /** Maximum height of the rectangle to inscribe the thumbnail into. */
    maxHeight: number;
    /** Image format. */
    imageFormat: ThumbnailDownloadURL_ImageFormat;
}
export interface GenerateThumbnailUploadURLRequest {
    /** ID of the thumbnail. */
    thumbnailId: string;
}
export interface GenerateThumbnailUploadURLResponse {
    /** Upload url. */
    uploadUrl: string;
}
export interface DeleteThumbnailRequest {
    /** ID of the thumbnail. */
    thumbnailId: string;
}
export interface DeleteThumbnailMetadata {
    /** ID of the thumbnail. */
    thumbnailId: string;
}
export declare const GetThumbnailRequest: {
    encode(message: GetThumbnailRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetThumbnailRequest;
    fromJSON(object: any): GetThumbnailRequest;
    toJSON(message: GetThumbnailRequest): unknown;
    fromPartial<I extends {
        thumbnailId?: string | undefined;
    } & {
        thumbnailId?: string | undefined;
    } & Record<Exclude<keyof I, "thumbnailId">, never>>(object: I): GetThumbnailRequest;
};
export declare const ListThumbnailRequest: {
    encode(message: ListThumbnailRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListThumbnailRequest;
    fromJSON(object: any): ListThumbnailRequest;
    toJSON(message: ListThumbnailRequest): unknown;
    fromPartial<I extends {
        channelId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & {
        channelId?: string | undefined;
        pageSize?: number | undefined;
        pageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListThumbnailRequest>, never>>(object: I): ListThumbnailRequest;
};
export declare const ListThumbnailResponse: {
    encode(message: ListThumbnailResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListThumbnailResponse;
    fromJSON(object: any): ListThumbnailResponse;
    toJSON(message: ListThumbnailResponse): unknown;
    fromPartial<I extends {
        thumbnails?: {
            id?: string | undefined;
            channelId?: string | undefined;
            createdAt?: Date | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        thumbnails?: ({
            id?: string | undefined;
            channelId?: string | undefined;
            createdAt?: Date | undefined;
        }[] & ({
            id?: string | undefined;
            channelId?: string | undefined;
            createdAt?: Date | undefined;
        } & {
            id?: string | undefined;
            channelId?: string | undefined;
            createdAt?: Date | undefined;
        } & Record<Exclude<keyof I["thumbnails"][number], keyof Thumbnail>, never>)[] & Record<Exclude<keyof I["thumbnails"], keyof {
            id?: string | undefined;
            channelId?: string | undefined;
            createdAt?: Date | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListThumbnailResponse>, never>>(object: I): ListThumbnailResponse;
};
export declare const CreateThumbnailRequest: {
    encode(message: CreateThumbnailRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateThumbnailRequest;
    fromJSON(object: any): CreateThumbnailRequest;
    toJSON(message: CreateThumbnailRequest): unknown;
    fromPartial<I extends {
        channelId?: string | undefined;
    } & {
        channelId?: string | undefined;
    } & Record<Exclude<keyof I, "channelId">, never>>(object: I): CreateThumbnailRequest;
};
export declare const CreateThumbnailMetadata: {
    encode(message: CreateThumbnailMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateThumbnailMetadata;
    fromJSON(object: any): CreateThumbnailMetadata;
    toJSON(message: CreateThumbnailMetadata): unknown;
    fromPartial<I extends {
        thumbnailId?: string | undefined;
    } & {
        thumbnailId?: string | undefined;
    } & Record<Exclude<keyof I, "thumbnailId">, never>>(object: I): CreateThumbnailMetadata;
};
export declare const BatchGenerateDownloadURLsRequest: {
    encode(message: BatchGenerateDownloadURLsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BatchGenerateDownloadURLsRequest;
    fromJSON(object: any): BatchGenerateDownloadURLsRequest;
    toJSON(message: BatchGenerateDownloadURLsRequest): unknown;
    fromPartial<I extends {
        channelId?: string | undefined;
        thumbnailIds?: string[] | undefined;
    } & {
        channelId?: string | undefined;
        thumbnailIds?: (string[] & string[] & Record<Exclude<keyof I["thumbnailIds"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof BatchGenerateDownloadURLsRequest>, never>>(object: I): BatchGenerateDownloadURLsRequest;
};
export declare const BatchGenerateDownloadURLsResponse: {
    encode(message: BatchGenerateDownloadURLsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BatchGenerateDownloadURLsResponse;
    fromJSON(object: any): BatchGenerateDownloadURLsResponse;
    toJSON(message: BatchGenerateDownloadURLsResponse): unknown;
    fromPartial<I extends {
        downloadUrls?: {
            thumbnailId?: string | undefined;
            originalUrl?: string | undefined;
            scaledUrls?: {
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            }[] | undefined;
        }[] | undefined;
    } & {
        downloadUrls?: ({
            thumbnailId?: string | undefined;
            originalUrl?: string | undefined;
            scaledUrls?: {
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            }[] | undefined;
        }[] & ({
            thumbnailId?: string | undefined;
            originalUrl?: string | undefined;
            scaledUrls?: {
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            }[] | undefined;
        } & {
            thumbnailId?: string | undefined;
            originalUrl?: string | undefined;
            scaledUrls?: ({
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            }[] & ({
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            } & {
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            } & Record<Exclude<keyof I["downloadUrls"][number]["scaledUrls"][number], keyof ThumbnailDownloadURL_ScaledURL>, never>)[] & Record<Exclude<keyof I["downloadUrls"][number]["scaledUrls"], keyof {
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["downloadUrls"][number], keyof ThumbnailDownloadURL>, never>)[] & Record<Exclude<keyof I["downloadUrls"], keyof {
            thumbnailId?: string | undefined;
            originalUrl?: string | undefined;
            scaledUrls?: {
                url?: string | undefined;
                maxWidth?: number | undefined;
                maxHeight?: number | undefined;
                imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
            }[] | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, "downloadUrls">, never>>(object: I): BatchGenerateDownloadURLsResponse;
};
export declare const ThumbnailDownloadURL: {
    encode(message: ThumbnailDownloadURL, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ThumbnailDownloadURL;
    fromJSON(object: any): ThumbnailDownloadURL;
    toJSON(message: ThumbnailDownloadURL): unknown;
    fromPartial<I extends {
        thumbnailId?: string | undefined;
        originalUrl?: string | undefined;
        scaledUrls?: {
            url?: string | undefined;
            maxWidth?: number | undefined;
            maxHeight?: number | undefined;
            imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
        }[] | undefined;
    } & {
        thumbnailId?: string | undefined;
        originalUrl?: string | undefined;
        scaledUrls?: ({
            url?: string | undefined;
            maxWidth?: number | undefined;
            maxHeight?: number | undefined;
            imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
        }[] & ({
            url?: string | undefined;
            maxWidth?: number | undefined;
            maxHeight?: number | undefined;
            imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
        } & {
            url?: string | undefined;
            maxWidth?: number | undefined;
            maxHeight?: number | undefined;
            imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
        } & Record<Exclude<keyof I["scaledUrls"][number], keyof ThumbnailDownloadURL_ScaledURL>, never>)[] & Record<Exclude<keyof I["scaledUrls"], keyof {
            url?: string | undefined;
            maxWidth?: number | undefined;
            maxHeight?: number | undefined;
            imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof ThumbnailDownloadURL>, never>>(object: I): ThumbnailDownloadURL;
};
export declare const ThumbnailDownloadURL_ScaledURL: {
    encode(message: ThumbnailDownloadURL_ScaledURL, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ThumbnailDownloadURL_ScaledURL;
    fromJSON(object: any): ThumbnailDownloadURL_ScaledURL;
    toJSON(message: ThumbnailDownloadURL_ScaledURL): unknown;
    fromPartial<I extends {
        url?: string | undefined;
        maxWidth?: number | undefined;
        maxHeight?: number | undefined;
        imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
    } & {
        url?: string | undefined;
        maxWidth?: number | undefined;
        maxHeight?: number | undefined;
        imageFormat?: ThumbnailDownloadURL_ImageFormat | undefined;
    } & Record<Exclude<keyof I, keyof ThumbnailDownloadURL_ScaledURL>, never>>(object: I): ThumbnailDownloadURL_ScaledURL;
};
export declare const GenerateThumbnailUploadURLRequest: {
    encode(message: GenerateThumbnailUploadURLRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GenerateThumbnailUploadURLRequest;
    fromJSON(object: any): GenerateThumbnailUploadURLRequest;
    toJSON(message: GenerateThumbnailUploadURLRequest): unknown;
    fromPartial<I extends {
        thumbnailId?: string | undefined;
    } & {
        thumbnailId?: string | undefined;
    } & Record<Exclude<keyof I, "thumbnailId">, never>>(object: I): GenerateThumbnailUploadURLRequest;
};
export declare const GenerateThumbnailUploadURLResponse: {
    encode(message: GenerateThumbnailUploadURLResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GenerateThumbnailUploadURLResponse;
    fromJSON(object: any): GenerateThumbnailUploadURLResponse;
    toJSON(message: GenerateThumbnailUploadURLResponse): unknown;
    fromPartial<I extends {
        uploadUrl?: string | undefined;
    } & {
        uploadUrl?: string | undefined;
    } & Record<Exclude<keyof I, "uploadUrl">, never>>(object: I): GenerateThumbnailUploadURLResponse;
};
export declare const DeleteThumbnailRequest: {
    encode(message: DeleteThumbnailRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteThumbnailRequest;
    fromJSON(object: any): DeleteThumbnailRequest;
    toJSON(message: DeleteThumbnailRequest): unknown;
    fromPartial<I extends {
        thumbnailId?: string | undefined;
    } & {
        thumbnailId?: string | undefined;
    } & Record<Exclude<keyof I, "thumbnailId">, never>>(object: I): DeleteThumbnailRequest;
};
export declare const DeleteThumbnailMetadata: {
    encode(message: DeleteThumbnailMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteThumbnailMetadata;
    fromJSON(object: any): DeleteThumbnailMetadata;
    toJSON(message: DeleteThumbnailMetadata): unknown;
    fromPartial<I extends {
        thumbnailId?: string | undefined;
    } & {
        thumbnailId?: string | undefined;
    } & Record<Exclude<keyof I, "thumbnailId">, never>>(object: I): DeleteThumbnailMetadata;
};
/** Thumbnail management service. */
export declare const ThumbnailServiceService: {
    /** Get the specific thumbnail. */
    readonly get: {
        readonly path: "/yandex.cloud.video.v1.ThumbnailService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetThumbnailRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetThumbnailRequest;
        readonly responseSerialize: (value: Thumbnail) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Thumbnail;
    };
    /** List thumbnails for channel. */
    readonly list: {
        readonly path: "/yandex.cloud.video.v1.ThumbnailService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListThumbnailRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListThumbnailRequest;
        readonly responseSerialize: (value: ListThumbnailResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListThumbnailResponse;
    };
    /** Create thumbnail. */
    readonly create: {
        readonly path: "/yandex.cloud.video.v1.ThumbnailService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateThumbnailRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateThumbnailRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Generate urls for downloading images. */
    readonly batchGenerateDownloadURLs: {
        readonly path: "/yandex.cloud.video.v1.ThumbnailService/BatchGenerateDownloadURLs";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: BatchGenerateDownloadURLsRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => BatchGenerateDownloadURLsRequest;
        readonly responseSerialize: (value: BatchGenerateDownloadURLsResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => BatchGenerateDownloadURLsResponse;
    };
    /** Generate url for uploading an image. */
    readonly generateUploadURL: {
        readonly path: "/yandex.cloud.video.v1.ThumbnailService/GenerateUploadURL";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GenerateThumbnailUploadURLRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GenerateThumbnailUploadURLRequest;
        readonly responseSerialize: (value: GenerateThumbnailUploadURLResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => GenerateThumbnailUploadURLResponse;
    };
    /** Delete thumbnail. */
    readonly delete: {
        readonly path: "/yandex.cloud.video.v1.ThumbnailService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteThumbnailRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteThumbnailRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface ThumbnailServiceServer extends UntypedServiceImplementation {
    /** Get the specific thumbnail. */
    get: handleUnaryCall<GetThumbnailRequest, Thumbnail>;
    /** List thumbnails for channel. */
    list: handleUnaryCall<ListThumbnailRequest, ListThumbnailResponse>;
    /** Create thumbnail. */
    create: handleUnaryCall<CreateThumbnailRequest, Operation>;
    /** Generate urls for downloading images. */
    batchGenerateDownloadURLs: handleUnaryCall<BatchGenerateDownloadURLsRequest, BatchGenerateDownloadURLsResponse>;
    /** Generate url for uploading an image. */
    generateUploadURL: handleUnaryCall<GenerateThumbnailUploadURLRequest, GenerateThumbnailUploadURLResponse>;
    /** Delete thumbnail. */
    delete: handleUnaryCall<DeleteThumbnailRequest, Operation>;
}
export interface ThumbnailServiceClient extends Client {
    /** Get the specific thumbnail. */
    get(request: GetThumbnailRequest, callback: (error: ServiceError | null, response: Thumbnail) => void): ClientUnaryCall;
    get(request: GetThumbnailRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Thumbnail) => void): ClientUnaryCall;
    get(request: GetThumbnailRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Thumbnail) => void): ClientUnaryCall;
    /** List thumbnails for channel. */
    list(request: ListThumbnailRequest, callback: (error: ServiceError | null, response: ListThumbnailResponse) => void): ClientUnaryCall;
    list(request: ListThumbnailRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListThumbnailResponse) => void): ClientUnaryCall;
    list(request: ListThumbnailRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListThumbnailResponse) => void): ClientUnaryCall;
    /** Create thumbnail. */
    create(request: CreateThumbnailRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateThumbnailRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateThumbnailRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Generate urls for downloading images. */
    batchGenerateDownloadURLs(request: BatchGenerateDownloadURLsRequest, callback: (error: ServiceError | null, response: BatchGenerateDownloadURLsResponse) => void): ClientUnaryCall;
    batchGenerateDownloadURLs(request: BatchGenerateDownloadURLsRequest, metadata: Metadata, callback: (error: ServiceError | null, response: BatchGenerateDownloadURLsResponse) => void): ClientUnaryCall;
    batchGenerateDownloadURLs(request: BatchGenerateDownloadURLsRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: BatchGenerateDownloadURLsResponse) => void): ClientUnaryCall;
    /** Generate url for uploading an image. */
    generateUploadURL(request: GenerateThumbnailUploadURLRequest, callback: (error: ServiceError | null, response: GenerateThumbnailUploadURLResponse) => void): ClientUnaryCall;
    generateUploadURL(request: GenerateThumbnailUploadURLRequest, metadata: Metadata, callback: (error: ServiceError | null, response: GenerateThumbnailUploadURLResponse) => void): ClientUnaryCall;
    generateUploadURL(request: GenerateThumbnailUploadURLRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: GenerateThumbnailUploadURLResponse) => void): ClientUnaryCall;
    /** Delete thumbnail. */
    delete(request: DeleteThumbnailRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteThumbnailRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteThumbnailRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const ThumbnailServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): ThumbnailServiceClient;
    service: typeof ThumbnailServiceService;
};
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 {};
