import { Socket } from 'socket.io-client'; import { AnyIdentifiableRecord, ClientResource, OnlySessionCollectionMapOfResourceKeys, ResourceIdentifier, SessionResource, SessionStoreCollectionMap, UnidentifiableModel, UnknownIdentifiableRecord, UnknownRecord } from './types'; import { AsyncResult } from 'ts-async-results'; type RequestsCollectionMapBase = Record; export declare class ClientSdk = Record, RequestsCollectionMap extends RequestsCollectionMapBase = Record, SessionCollectionMap extends SessionStoreCollectionMap = SessionStoreCollectionMap, SessionCollectionMapOfResourceKeys extends OnlySessionCollectionMapOfResourceKeys = OnlySessionCollectionMapOfResourceKeys> { private config; private socketInstance; private socketConnectionDelegate; private pubsy; private logger; private userId; constructor(config: { url: string; userId?: string; apiKey: string; logger?: typeof console; waitForResponseMs?: number; }); private handleIncomingMessage; get socketConnection(): Promise>; connect(): Socket; disconnect(): void; onConnect(fn: (socket: Socket) => void): () => void; onDisconnect(fn: () => void): () => void; createResource>(req: { resourceType: TResourceType; resourceData: TResourceData; resourceId?: SessionResource['id']; }): AsyncResult; updateResource(resourceIdentifier: ResourceIdentifier, resourceData: Partial>): AsyncResult; removeResource(resourceIdentifier: ResourceIdentifier): AsyncResult; getResource(resourceIdentifier: ResourceIdentifier): AsyncResult; observeResource(resourceIdentifier: ResourceIdentifier): AsyncResult; subscribeToResource(resourceIdentifier: ResourceIdentifier): AsyncResult; unsubscribeFromResource(resourceIdentifier: ResourceIdentifier): AsyncResult; onResourceUpdated(fn: (r: ClientResource) => void): () => void; onBroadcastedMsg(fn: (data: { event: TEvent; msg: TMsg; }) => void): () => void; request(k: TReqType, req: TReq): AsyncResult; private emitAndAcknowledgeResources; private emitAndAcknowledgeSubscriptions; } export {};