import { Util } from '@dra2020/baseclient'; import * as OL from './orderedlist'; export declare const DefaultPort: number; export declare const DefaultServerUrl: string; export interface QMessage { messageid: string; groupid: string; seqno?: number; contents?: any; blobid?: string; } export type QMessages = QMessage[]; interface QMessageHolder { m: QMessage; pending: boolean; deadline: Util.Deadline; } type QMessageList = OL.OrderedList; type QMessageIndex = { [key: string]: boolean; }; interface QVisibility { owner: string; deadline: Util.Deadline; index: QMessageIndex; } interface QGroup { id: string; messages: QMessageList; visibility: QVisibility; } type QGroupIndex = { [id: string]: QGroup; }; export interface QQueueOptions { timeoutVisibility?: number; timeoutDead?: number; timeoutQueueDead?: number; receiveLimit?: number; longpoll?: boolean; ownerOnly?: boolean; } declare class QQueue { id: string; groups: QGroupIndex; seqno: number; options: QQueueOptions; nHeld: number; lastActive: Util.Elapsed; constructor(id: string, options?: QQueueOptions); dumpLog(): void; setOptions(options: QQueueOptions): void; _group(id: string): QGroup; forEachGroup(cb: (g: QGroup) => boolean): void; forEachMessageHolder(g: QGroup, cb: (h: QMessageHolder) => boolean): void; get isActive(): boolean; checkTimeout(): void; send(m: QMessage): string; claim(owner: string, groupid: string): string; receive(owner: string, result: QMessages): void; removeFromGroup(g: QGroup, m: QMessage): string; remove(m: QMessage): string; } type QQueueIndex = { [id: string]: QQueue; }; export declare class QQueueManager { queues: QQueueIndex; nSent: number; nReceived: number; nRemoved: number; nCulled: number; constructor(); _queue(queueid: string): QQueue; checkTimeout(): void; forEach(cb: (q: QQueue) => void): void; dumpLog(): void; setOptions(queueid: string, options: QQueueOptions): void; isLongpoll(queueid: string): boolean; claim(queueid: string, owner: string, groupid: string): string; send(queueid: string, m: QMessage): string; receive(queueid: string, owner: string, result: QMessages): void; remove(queueid: string, m: QMessage): string; } export {};