/// <reference types="node" />
import * as $dara from '@darabonba/typescript';
export declare type AwapMessageType = string;
export declare type AwapMessageFormat = 'text' | 'binary';
export interface AwapMessage {
    type: AwapMessageType;
    id: string;
    headers?: {
        [key: string]: string;
    };
    payload?: any;
    format?: AwapMessageFormat;
}
export interface AwapWebSocketHandler extends $dara.WebSocketHandler {
    handleAwapMessage(session: $dara.WebSocketSessionInfo, message: AwapMessage): Promise<void> | void;
}
export declare class AbstractAwapWebSocketHandler extends $dara.AbstractWebSocketHandler implements AwapWebSocketHandler {
    handleAwapMessage(_session: $dara.WebSocketSessionInfo, _message: AwapMessage): void;
}
export declare type AwapMessageOption = (message: AwapMessage) => void;
export declare function withType(msgType: AwapMessageType): AwapMessageOption;
export declare function withID(id: string): AwapMessageOption;
export declare function withHeader(key: string, value: string): AwapMessageOption;
export declare function newAwapMessage(payload: any, ...opts: AwapMessageOption[]): AwapMessage;
export declare function buildAwapMessageText(message: AwapMessage): string;
export declare function buildAwapMessageBinary(message: AwapMessage): Buffer;
export declare function parseAwapMessage(message: $dara.WebSocketMessage): AwapMessage;
export declare const ErrUseRawMessage: Error;
