import type { Predicate } from '../db/criteria.ts'; import type { GenesisMessage, Row, SocketLike } from '../types.ts'; export interface ViewRow { row: Row; rowRef: unknown; source: Row; timestamp: unknown; } export interface Subscription { resourceName: string; getRowRef: (row: Row) => unknown; predicate: Predicate; sequenceId: number; pending?: Map; held?: Map; maxRows?: number; maxView?: number; movingView?: boolean; order?: (a: Row, b: Row) => number; cursor?: Row; fieldNames?: string[]; encode?: (row: Row) => Row; } export declare class Connection { readonly ws: SocketLike; readonly id: `${string}-${string}-${string}-${string}-${string}`; authenticated: boolean; sessionAuthToken: string | undefined; refreshAuthToken: string | undefined; sessionId: string | undefined; userName: string | undefined; profile: string[]; permission: string[]; readonly subscriptions: Map; cookieSessionAuthToken: string | undefined; hostnameHeader: string | undefined; remoteAddress: string | undefined; readonly createdAt: number; lastReceived: number; lastSent: number; private readonly subscriptionStats; constructor(ws: SocketLike); send(payload: Row, track?: boolean): void; reply(requestMessage: GenesisMessage, payload: Row, track?: boolean): void; noteReceived(message: GenesisMessage): void; noteLogon(message: GenesisMessage): void; dataserverResources(): Record; subscribe(sourceRef: string, subscription: Subscription): void; unsubscribe(sourceRef: string): void; }