import { AbstractStream, type AbstractStreamInit } from '@libp2p/utils/abstract-stream';
import { Uint8ArrayList } from 'uint8arraylist';
import type { Message } from './message-types.js';
import type { ComponentLogger } from '@libp2p/interface';
export interface Options {
    id: number;
    send(msg: Message): Promise<void>;
    name?: string;
    onEnd?(err?: Error): void;
    type?: 'initiator' | 'receiver';
    maxMsgSize?: number;
    logger: ComponentLogger;
}
interface MplexStreamInit extends AbstractStreamInit {
    streamId: number;
    name: string;
    send(msg: Message): Promise<void>;
    /**
     * The maximum allowable data size, any data larger than this will be
     * chunked and sent in multiple data messages
     */
    maxDataSize: number;
}
export declare class MplexStream extends AbstractStream {
    private readonly name;
    private readonly streamId;
    private readonly send;
    private readonly types;
    private readonly maxDataSize;
    constructor(init: MplexStreamInit);
    sendNewStream(): Promise<void>;
    sendData(data: Uint8ArrayList): Promise<void>;
    sendReset(): Promise<void>;
    sendCloseWrite(): Promise<void>;
    sendCloseRead(): Promise<void>;
}
export declare function createStream(options: Options): MplexStream;
export {};
//# sourceMappingURL=stream.d.ts.map