import { MessageType } from './constants';
/**
 * Transport backend interface.
 */
export interface ITransportBackend {
    /**
     * Disposes the transport backend and cleans up resources.
     *
     * @returns {void}
     */
    dispose: () => void;
    /**
     * Sends a message through the transport.
     *
     * @param {any} message - The message to send.
     * @returns {void}
     */
    send: (message: any, transfer?: Transferable[]) => void;
    /**
     * Sets the callback function to handle received messages.
     *
     * @param {Function} callback - The callback function.
     * @returns {void}
     */
    setReceiveCallback: (callback: (message: any) => void) => void;
}
/**
 * Transport options.
 */
export interface ITransportOptions {
    backend?: ITransportBackend;
}
/**
 * Listener function type.
 */
export type TransportListener = (...args: any[]) => boolean | void;
/**
 * Response callback type for handling request/response pattern.
 */
export type ResponseCallback = (result: any, error?: any, transfer?: Transferable[]) => void;
/**
 * Message types for transport communication.
 */
export interface ITransportMessage {
    data?: any;
    error?: any;
    id?: number;
    result?: any;
    type: MessageType;
}
