/// export declare function set_debug(x: boolean): void; import { EventEmitter } from "events"; import { Map } from "immutable"; export declare type Query = any; export declare type QueryOptions = any[]; export interface Client extends EventEmitter { is_project: () => boolean; dbg: (str: string) => Function; query: Function; query_cancel: Function; server_time: Function; alert_message?: Function; is_connected: () => boolean; is_signed_in: () => boolean; touch_project: (opts: any) => void; set_connected?: Function; } export interface VersionedChange { obj: { [key: string]: any; }; version: number; } export interface TimedChange { obj: { [key: string]: any; }; time: number; } export declare type State = "disconnected" | "connected" | "closed"; export declare class SyncTable extends EventEmitter { private changefeed?; private query; private client_query; private primary_keys; private options; readonly client: Client; private throttle_changes?; private throttled_emit_changes?; private last_server_time; private value?; private last_save; private changes; private versions; private initial_version; private state; table: string; private schema; private emit_change; reference_count: number; cache_key: string | undefined; private set_fields; private required_set_fields; private coerce_types; private no_db_set; private project_id?; private last_has_uncommitted_changes?; constructor(query: any, options: any[], client: Client, throttle_changes?: number, coerce_types?: boolean, no_db_set?: boolean, project_id?: string); is_ready(): boolean; has_uncommitted_changes(): boolean; get(arg?: any): Map | undefined; size(): number; get_one(arg?: any): Map | undefined; private wait_until_value; save(): Promise; private update_has_uncommitted_changes; set(changes: any, merge?: "deep" | "shallow" | "none", fire_change_event?: boolean): any; private touch_project; close_no_async(): void; close(fatal?: boolean): Promise; wait(until: Function, timeout?: number): Promise; private first_connect; private set_state; get_state(): State; get_table(): string; private set_throttle_changes; private init_throttle_changes; private dbg; private connect; private create_changefeed; private close_changefeed; private create_changefeed_connection; private wait_until_ready_to_query_db; private changefeed_options; private init_changefeed_handlers; private remove_changefeed_handlers; private changefeed_on_update; private changefeed_on_close; private disconnected; private obj_to_key; private init_query; private _save; private wait_until_versions_are_updated; private do_coerce_types; private update_all; initial_version_for_browser_client(): VersionedChange[]; init_browser_client(changes: VersionedChange[]): void; apply_changes_to_browser_client(changes: VersionedChange[]): { [key: string]: boolean; }; apply_changes_from_browser_client(changes: TimedChange[]): void; private increment_version; private null_version; private update_change; private unique_server_time; private handle_new_val; private computed_primary_key; private assert_not_closed; delete(obj: any): Promise; }