/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleUnaryCall, Client, ClientUnaryCall, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
import { Subtitle } from '../../../../yandex/cloud/video/v1/subtitle';
import { Operation } from '../../../../yandex/cloud/operation/operation';
export declare const protobufPackage = "yandex.cloud.video.v1";
export interface GetSubtitleRequest {
    /** ID of the subtitle. */
    subtitleId: string;
}
export interface ListSubtitlesRequest {
    /**
     * 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;
    /** ID of the video. */
    videoId: string | undefined;
}
export interface ListSubtitlesResponse {
    subtitles: Subtitle[];
    /** Token for getting the next page. */
    nextPageToken: string;
}
export interface CreateSubtitleRequest {
    /**
     * Subtitle language in any of the following formats:
     * * three-letter code according to ISO 639-2/T, ISO 639-2/B, or ISO 639-3
     * * two-letter code according to ISO 639-1
     */
    language: string;
    /**
     * Contains the subtitle label (or title) that will be displayed on screen during video playback.
     * Should provide a concise and accurate representation of the spoken content.
     * If not provided, it will be auto-generated based on the specified language.
     */
    label: string;
    /** ID of the video. */
    videoId: string | undefined;
    /** Upload subtitle. */
    upload?: SubtitleUploadParams | undefined;
}
export interface SubtitleUploadParams {
    filename: string;
}
export interface CreateSubtitleMetadata {
    /** ID of the subtitle. */
    subtitleId: string;
}
export interface GenerateSubtitleUploadURLRequest {
    /** ID of the subtitle. */
    subtitleId: string;
}
export interface GenerateSubtitleUploadURLResponse {
    /** Upload url. */
    uploadUrl: string;
}
export interface DeleteSubtitleRequest {
    /** ID of the subtitle. */
    subtitleId: string;
}
export interface DeleteSubtitleMetadata {
    /** ID of the subtitle. */
    subtitleId: string;
}
export declare const GetSubtitleRequest: {
    encode(message: GetSubtitleRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GetSubtitleRequest;
    fromJSON(object: any): GetSubtitleRequest;
    toJSON(message: GetSubtitleRequest): unknown;
    fromPartial<I extends {
        subtitleId?: string | undefined;
    } & {
        subtitleId?: string | undefined;
    } & Record<Exclude<keyof I, "subtitleId">, never>>(object: I): GetSubtitleRequest;
};
export declare const ListSubtitlesRequest: {
    encode(message: ListSubtitlesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSubtitlesRequest;
    fromJSON(object: any): ListSubtitlesRequest;
    toJSON(message: ListSubtitlesRequest): unknown;
    fromPartial<I extends {
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        videoId?: string | undefined;
    } & {
        pageSize?: number | undefined;
        pageToken?: string | undefined;
        videoId?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSubtitlesRequest>, never>>(object: I): ListSubtitlesRequest;
};
export declare const ListSubtitlesResponse: {
    encode(message: ListSubtitlesResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ListSubtitlesResponse;
    fromJSON(object: any): ListSubtitlesResponse;
    toJSON(message: ListSubtitlesResponse): unknown;
    fromPartial<I extends {
        subtitles?: {
            id?: string | undefined;
            language?: string | undefined;
            label?: string | undefined;
            status?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleStatus | undefined;
            sourceType?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleSourceType | undefined;
            filename?: string | undefined;
            createdAt?: Date | undefined;
            updatedAt?: Date | undefined;
            videoId?: string | undefined;
        }[] | undefined;
        nextPageToken?: string | undefined;
    } & {
        subtitles?: ({
            id?: string | undefined;
            language?: string | undefined;
            label?: string | undefined;
            status?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleStatus | undefined;
            sourceType?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleSourceType | undefined;
            filename?: string | undefined;
            createdAt?: Date | undefined;
            updatedAt?: Date | undefined;
            videoId?: string | undefined;
        }[] & ({
            id?: string | undefined;
            language?: string | undefined;
            label?: string | undefined;
            status?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleStatus | undefined;
            sourceType?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleSourceType | undefined;
            filename?: string | undefined;
            createdAt?: Date | undefined;
            updatedAt?: Date | undefined;
            videoId?: string | undefined;
        } & {
            id?: string | undefined;
            language?: string | undefined;
            label?: string | undefined;
            status?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleStatus | undefined;
            sourceType?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleSourceType | undefined;
            filename?: string | undefined;
            createdAt?: Date | undefined;
            updatedAt?: Date | undefined;
            videoId?: string | undefined;
        } & Record<Exclude<keyof I["subtitles"][number], keyof Subtitle>, never>)[] & Record<Exclude<keyof I["subtitles"], keyof {
            id?: string | undefined;
            language?: string | undefined;
            label?: string | undefined;
            status?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleStatus | undefined;
            sourceType?: import("../../../../yandex/cloud/video/v1/subtitle").Subtitle_SubtitleSourceType | undefined;
            filename?: string | undefined;
            createdAt?: Date | undefined;
            updatedAt?: Date | undefined;
            videoId?: string | undefined;
        }[]>, never>) | undefined;
        nextPageToken?: string | undefined;
    } & Record<Exclude<keyof I, keyof ListSubtitlesResponse>, never>>(object: I): ListSubtitlesResponse;
};
export declare const CreateSubtitleRequest: {
    encode(message: CreateSubtitleRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSubtitleRequest;
    fromJSON(object: any): CreateSubtitleRequest;
    toJSON(message: CreateSubtitleRequest): unknown;
    fromPartial<I extends {
        language?: string | undefined;
        label?: string | undefined;
        videoId?: string | undefined;
        upload?: {
            filename?: string | undefined;
        } | undefined;
    } & {
        language?: string | undefined;
        label?: string | undefined;
        videoId?: string | undefined;
        upload?: ({
            filename?: string | undefined;
        } & {
            filename?: string | undefined;
        } & Record<Exclude<keyof I["upload"], "filename">, never>) | undefined;
    } & Record<Exclude<keyof I, keyof CreateSubtitleRequest>, never>>(object: I): CreateSubtitleRequest;
};
export declare const SubtitleUploadParams: {
    encode(message: SubtitleUploadParams, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SubtitleUploadParams;
    fromJSON(object: any): SubtitleUploadParams;
    toJSON(message: SubtitleUploadParams): unknown;
    fromPartial<I extends {
        filename?: string | undefined;
    } & {
        filename?: string | undefined;
    } & Record<Exclude<keyof I, "filename">, never>>(object: I): SubtitleUploadParams;
};
export declare const CreateSubtitleMetadata: {
    encode(message: CreateSubtitleMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateSubtitleMetadata;
    fromJSON(object: any): CreateSubtitleMetadata;
    toJSON(message: CreateSubtitleMetadata): unknown;
    fromPartial<I extends {
        subtitleId?: string | undefined;
    } & {
        subtitleId?: string | undefined;
    } & Record<Exclude<keyof I, "subtitleId">, never>>(object: I): CreateSubtitleMetadata;
};
export declare const GenerateSubtitleUploadURLRequest: {
    encode(message: GenerateSubtitleUploadURLRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GenerateSubtitleUploadURLRequest;
    fromJSON(object: any): GenerateSubtitleUploadURLRequest;
    toJSON(message: GenerateSubtitleUploadURLRequest): unknown;
    fromPartial<I extends {
        subtitleId?: string | undefined;
    } & {
        subtitleId?: string | undefined;
    } & Record<Exclude<keyof I, "subtitleId">, never>>(object: I): GenerateSubtitleUploadURLRequest;
};
export declare const GenerateSubtitleUploadURLResponse: {
    encode(message: GenerateSubtitleUploadURLResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GenerateSubtitleUploadURLResponse;
    fromJSON(object: any): GenerateSubtitleUploadURLResponse;
    toJSON(message: GenerateSubtitleUploadURLResponse): unknown;
    fromPartial<I extends {
        uploadUrl?: string | undefined;
    } & {
        uploadUrl?: string | undefined;
    } & Record<Exclude<keyof I, "uploadUrl">, never>>(object: I): GenerateSubtitleUploadURLResponse;
};
export declare const DeleteSubtitleRequest: {
    encode(message: DeleteSubtitleRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteSubtitleRequest;
    fromJSON(object: any): DeleteSubtitleRequest;
    toJSON(message: DeleteSubtitleRequest): unknown;
    fromPartial<I extends {
        subtitleId?: string | undefined;
    } & {
        subtitleId?: string | undefined;
    } & Record<Exclude<keyof I, "subtitleId">, never>>(object: I): DeleteSubtitleRequest;
};
export declare const DeleteSubtitleMetadata: {
    encode(message: DeleteSubtitleMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DeleteSubtitleMetadata;
    fromJSON(object: any): DeleteSubtitleMetadata;
    toJSON(message: DeleteSubtitleMetadata): unknown;
    fromPartial<I extends {
        subtitleId?: string | undefined;
    } & {
        subtitleId?: string | undefined;
    } & Record<Exclude<keyof I, "subtitleId">, never>>(object: I): DeleteSubtitleMetadata;
};
/** Subtitle management service. */
export declare const SubtitleServiceService: {
    /** Get a specific subtitle. */
    readonly get: {
        readonly path: "/yandex.cloud.video.v1.SubtitleService/Get";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GetSubtitleRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GetSubtitleRequest;
        readonly responseSerialize: (value: Subtitle) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Subtitle;
    };
    /** List subtitles. */
    readonly list: {
        readonly path: "/yandex.cloud.video.v1.SubtitleService/List";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: ListSubtitlesRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => ListSubtitlesRequest;
        readonly responseSerialize: (value: ListSubtitlesResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => ListSubtitlesResponse;
    };
    /** Create a new subtitle. */
    readonly create: {
        readonly path: "/yandex.cloud.video.v1.SubtitleService/Create";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: CreateSubtitleRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => CreateSubtitleRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
    /** Generate an upload URL to add a new subtitle file. */
    readonly generateUploadURL: {
        readonly path: "/yandex.cloud.video.v1.SubtitleService/GenerateUploadURL";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: GenerateSubtitleUploadURLRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => GenerateSubtitleUploadURLRequest;
        readonly responseSerialize: (value: GenerateSubtitleUploadURLResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => GenerateSubtitleUploadURLResponse;
    };
    /** Delete a specific subtitle. */
    readonly delete: {
        readonly path: "/yandex.cloud.video.v1.SubtitleService/Delete";
        readonly requestStream: false;
        readonly responseStream: false;
        readonly requestSerialize: (value: DeleteSubtitleRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DeleteSubtitleRequest;
        readonly responseSerialize: (value: Operation) => Buffer;
        readonly responseDeserialize: (value: Buffer) => Operation;
    };
};
export interface SubtitleServiceServer extends UntypedServiceImplementation {
    /** Get a specific subtitle. */
    get: handleUnaryCall<GetSubtitleRequest, Subtitle>;
    /** List subtitles. */
    list: handleUnaryCall<ListSubtitlesRequest, ListSubtitlesResponse>;
    /** Create a new subtitle. */
    create: handleUnaryCall<CreateSubtitleRequest, Operation>;
    /** Generate an upload URL to add a new subtitle file. */
    generateUploadURL: handleUnaryCall<GenerateSubtitleUploadURLRequest, GenerateSubtitleUploadURLResponse>;
    /** Delete a specific subtitle. */
    delete: handleUnaryCall<DeleteSubtitleRequest, Operation>;
}
export interface SubtitleServiceClient extends Client {
    /** Get a specific subtitle. */
    get(request: GetSubtitleRequest, callback: (error: ServiceError | null, response: Subtitle) => void): ClientUnaryCall;
    get(request: GetSubtitleRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Subtitle) => void): ClientUnaryCall;
    get(request: GetSubtitleRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Subtitle) => void): ClientUnaryCall;
    /** List subtitles. */
    list(request: ListSubtitlesRequest, callback: (error: ServiceError | null, response: ListSubtitlesResponse) => void): ClientUnaryCall;
    list(request: ListSubtitlesRequest, metadata: Metadata, callback: (error: ServiceError | null, response: ListSubtitlesResponse) => void): ClientUnaryCall;
    list(request: ListSubtitlesRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: ListSubtitlesResponse) => void): ClientUnaryCall;
    /** Create a new subtitle. */
    create(request: CreateSubtitleRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateSubtitleRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    create(request: CreateSubtitleRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    /** Generate an upload URL to add a new subtitle file. */
    generateUploadURL(request: GenerateSubtitleUploadURLRequest, callback: (error: ServiceError | null, response: GenerateSubtitleUploadURLResponse) => void): ClientUnaryCall;
    generateUploadURL(request: GenerateSubtitleUploadURLRequest, metadata: Metadata, callback: (error: ServiceError | null, response: GenerateSubtitleUploadURLResponse) => void): ClientUnaryCall;
    generateUploadURL(request: GenerateSubtitleUploadURLRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: GenerateSubtitleUploadURLResponse) => void): ClientUnaryCall;
    /** Delete a specific subtitle. */
    delete(request: DeleteSubtitleRequest, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteSubtitleRequest, metadata: Metadata, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
    delete(request: DeleteSubtitleRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: Operation) => void): ClientUnaryCall;
}
export declare const SubtitleServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): SubtitleServiceClient;
    service: typeof SubtitleServiceService;
};
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 {};
