export interface AgentAuthInfo { name?: string; picture?: string; } export interface AgentAuth { user: string; provider: string; info?: AgentAuthInfo; } export interface AgentEnvironment { auth: AgentAuth; domain: string; server: string; session: string; context: string[]; variables: object; } export interface AgentUploadInfo { name?: string; type?: string; data?: string | ArrayBuffer; id?: string; browser?: boolean; accept?: string; } export interface SyncedStatePromise extends Promise { synced(callback?: (state: object, patch: object[]) => void): SyncedStatePromise; metadata: Promise; } export interface Agent { login(provider: string): void; logout(): void; uuid(): string; state(id: string, user?: string, domain?: string): SyncedStatePromise; metadata(id: string, user?: string, domain?: string): Promise; watch(id: string, callback: (update: { state: object }) => void, user?: string, domain?: string): void; upload(info?: AgentUploadInfo): Promise; download(id?: string): Promise; environment(userId?: string): Promise; close(info: any): void; reset(ns: string): Promise; // TODO: add query function synced(): Promise; } declare const agent: Agent; export default agent;