export interface WsResponse { event: string; data: T; } export declare type UnidentifiableModel = Omit; export type WsResponseResultPayload = { ok: true; err: false; val: T; } | { ok: false; err: true; val: E; }; export type WsResponseAsResult = WsResponse>; export type CollectionMapBase = { [key: string]: { id: string; } & object; }; export type UnknownRecord = Record; export type UnknownIdentifiableRecord = { id: string; } & Record; export type AnyIdentifiableRecord = { id: string; } & Record; type SessionResourceType = string; export type SessionClient = { id: string; info?: Info; subscriptions: Record<`${SessionResourceType}:${SessionResource['id']}`, { subscribedAt: number; }>; }; export type SessionResource = { id: string; data: TData; subscribers: Record; }; export type ClientResource = { type: TResourceType; item: { id: string; } & TData; }; export type ResourceIdentifier = { resourceType: TResourceType; resourceId: SessionResource['id']; }; export type ResourceIdentifierString = `${TResourceType}:${SessionResource['id']}`; export type StringKeys = Extract; export type UnknwownSessionResourceCollectionMap = Record>; export type AnySessionResourceCollectionMap = Record>; export type SessionStoreCollectionMap = { $clients: SessionClient; } & ResourcesCollectionMap; export type OnlySessionCollectionMapOfResourceKeys> = StringKeys>>; export {};