import { Buffer } from "buffer";
import { WriteOptions } from "./Bucket";
import { HttpClient } from "./http/HttpClient";
export type LabelMap = Record<string, string | number | boolean | bigint>;
type NodeReadableLike = {
    readable: boolean;
    read: () => any;
};
/**
 * Represents a record in an entry for reading
 */
export declare class ReadableRecord {
    readonly time: bigint;
    readonly entry: string;
    readonly size: bigint;
    readonly last: boolean;
    readonly stream: ReadableStream<Uint8Array>;
    readonly labels: LabelMap;
    readonly contentType: string | undefined;
    private readonly arrayBuffer;
    /**
     * Constructor which should be call from Bucket
     * @internal
     */
    constructor(entry: string, time: bigint, size: bigint, last: boolean, head: boolean, stream: ReadableStream<Uint8Array>, labels: LabelMap, contentType?: string);
    /**
     * Read content of record
     */
    read(): Promise<Buffer>;
    /**
     * Read content of record and convert to string
     */
    readAsString(): Promise<string>;
}
/**
 * Represents a record in an entry for writing
 */
export declare class WritableRecord {
    private readonly bucketName;
    private readonly entryName;
    private readonly httpClient;
    private readonly options;
    /**
     * Constructor for stream
     * @internal
     */
    constructor(bucketName: string, entryName: string, options: WriteOptions, httpClient: HttpClient);
    /**
     * Write data to record asynchronously
     * @param data stream or buffer with data
     * @param size size of data in bytes (only for streams)
     */
    write(data: Buffer | string | ReadableStream<Uint8Array> | NodeReadableLike, size?: bigint | number): Promise<void>;
}
export {};
