/// <reference types="node" />
import { ChannelCredentials, ChannelOptions, UntypedServiceImplementation, handleClientStreamingCall, handleServerStreamingCall, Client, ClientWritableStream, Metadata, CallOptions, ClientReadableStream, ServiceError } from '@grpc/grpc-js';
import _m0 from 'protobufjs/minimal';
export declare const protobufPackage = "yandex.cloud.datasphere.v1";
export interface FileMetadata {
    /** ID of the Project resource associated with the file. */
    projectId: string;
    /** File path. */
    path: string;
    /** File size in bytes. */
    sizeBytes: number;
}
export interface UploadFileRequest {
    /** Metadata of the file to upload. */
    metadata?: FileMetadata | undefined;
    /** Byte chunk of the file to upload. */
    chunk: Buffer | undefined;
}
export interface UploadFileResponse {
    /** Metadata of the uploaded file. */
    metadata?: FileMetadata;
}
export interface DownloadFileRequest {
    /** ID of the Project resource to download the file from. */
    projectId: string;
    /** Path of the file to download. */
    filePath: string;
}
export interface DownloadFileResponse {
    /** Metadata of the downloaded file. */
    metadata?: FileMetadata | undefined;
    /** Byte chunk of the downloaded file. */
    chunk: Buffer | undefined;
}
export declare const FileMetadata: {
    encode(message: FileMetadata, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): FileMetadata;
    fromJSON(object: any): FileMetadata;
    toJSON(message: FileMetadata): unknown;
    fromPartial<I extends {
        projectId?: string | undefined;
        path?: string | undefined;
        sizeBytes?: number | undefined;
    } & {
        projectId?: string | undefined;
        path?: string | undefined;
        sizeBytes?: number | undefined;
    } & Record<Exclude<keyof I, keyof FileMetadata>, never>>(object: I): FileMetadata;
};
export declare const UploadFileRequest: {
    encode(message: UploadFileRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UploadFileRequest;
    fromJSON(object: any): UploadFileRequest;
    toJSON(message: UploadFileRequest): unknown;
    fromPartial<I extends {
        metadata?: {
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } | undefined;
        chunk?: Buffer | undefined;
    } & {
        metadata?: ({
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } & {
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } & Record<Exclude<keyof I["metadata"], keyof FileMetadata>, never>) | undefined;
        chunk?: Buffer | undefined;
    } & Record<Exclude<keyof I, keyof UploadFileRequest>, never>>(object: I): UploadFileRequest;
};
export declare const UploadFileResponse: {
    encode(message: UploadFileResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UploadFileResponse;
    fromJSON(object: any): UploadFileResponse;
    toJSON(message: UploadFileResponse): unknown;
    fromPartial<I extends {
        metadata?: {
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } | undefined;
    } & {
        metadata?: ({
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } & {
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } & Record<Exclude<keyof I["metadata"], keyof FileMetadata>, never>) | undefined;
    } & Record<Exclude<keyof I, "metadata">, never>>(object: I): UploadFileResponse;
};
export declare const DownloadFileRequest: {
    encode(message: DownloadFileRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DownloadFileRequest;
    fromJSON(object: any): DownloadFileRequest;
    toJSON(message: DownloadFileRequest): unknown;
    fromPartial<I extends {
        projectId?: string | undefined;
        filePath?: string | undefined;
    } & {
        projectId?: string | undefined;
        filePath?: string | undefined;
    } & Record<Exclude<keyof I, keyof DownloadFileRequest>, never>>(object: I): DownloadFileRequest;
};
export declare const DownloadFileResponse: {
    encode(message: DownloadFileResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DownloadFileResponse;
    fromJSON(object: any): DownloadFileResponse;
    toJSON(message: DownloadFileResponse): unknown;
    fromPartial<I extends {
        metadata?: {
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } | undefined;
        chunk?: Buffer | undefined;
    } & {
        metadata?: ({
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } & {
            projectId?: string | undefined;
            path?: string | undefined;
            sizeBytes?: number | undefined;
        } & Record<Exclude<keyof I["metadata"], keyof FileMetadata>, never>) | undefined;
        chunk?: Buffer | undefined;
    } & Record<Exclude<keyof I, keyof DownloadFileResponse>, never>>(object: I): DownloadFileResponse;
};
/** A set of methods for managing data of the Project resource. */
export declare const ProjectDataServiceService: {
    /** Uploads a file to the specified project. */
    readonly uploadFile: {
        readonly path: "/yandex.cloud.datasphere.v1.ProjectDataService/UploadFile";
        readonly requestStream: true;
        readonly responseStream: false;
        readonly requestSerialize: (value: UploadFileRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => UploadFileRequest;
        readonly responseSerialize: (value: UploadFileResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => UploadFileResponse;
    };
    /** Downloads the specified file from the specified project. */
    readonly downloadFile: {
        readonly path: "/yandex.cloud.datasphere.v1.ProjectDataService/DownloadFile";
        readonly requestStream: false;
        readonly responseStream: true;
        readonly requestSerialize: (value: DownloadFileRequest) => Buffer;
        readonly requestDeserialize: (value: Buffer) => DownloadFileRequest;
        readonly responseSerialize: (value: DownloadFileResponse) => Buffer;
        readonly responseDeserialize: (value: Buffer) => DownloadFileResponse;
    };
};
export interface ProjectDataServiceServer extends UntypedServiceImplementation {
    /** Uploads a file to the specified project. */
    uploadFile: handleClientStreamingCall<UploadFileRequest, UploadFileResponse>;
    /** Downloads the specified file from the specified project. */
    downloadFile: handleServerStreamingCall<DownloadFileRequest, DownloadFileResponse>;
}
export interface ProjectDataServiceClient extends Client {
    /** Uploads a file to the specified project. */
    uploadFile(callback: (error: ServiceError | null, response: UploadFileResponse) => void): ClientWritableStream<UploadFileRequest>;
    uploadFile(metadata: Metadata, callback: (error: ServiceError | null, response: UploadFileResponse) => void): ClientWritableStream<UploadFileRequest>;
    uploadFile(options: Partial<CallOptions>, callback: (error: ServiceError | null, response: UploadFileResponse) => void): ClientWritableStream<UploadFileRequest>;
    uploadFile(metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: UploadFileResponse) => void): ClientWritableStream<UploadFileRequest>;
    /** Downloads the specified file from the specified project. */
    downloadFile(request: DownloadFileRequest, options?: Partial<CallOptions>): ClientReadableStream<DownloadFileResponse>;
    downloadFile(request: DownloadFileRequest, metadata?: Metadata, options?: Partial<CallOptions>): ClientReadableStream<DownloadFileResponse>;
}
export declare const ProjectDataServiceClient: {
    new (address: string, credentials: ChannelCredentials, options?: Partial<ChannelOptions>): ProjectDataServiceClient;
    service: typeof ProjectDataServiceService;
};
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 {};
