///
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;
}