declare module "src/log" {
    export const debug: {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    export const log: {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    export const alert: {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    export const warn: {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    export const error: {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    export const styled: {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
}
declare module "src/validate" {
    import { JSONValue, JSONObject, RecordData } from "@deepstream/client/dist/src/constants";
    import { SubscriptionCallback as OriginalSubscriptionCallback } from "@deepstream/client/dist/src/record/record";
    export { JSONValue, JSONObject, RecordData };
    export type UserData = unknown;
    export type SubscriptionCallback = OriginalSubscriptionCallback | ((...args: Parameters<OriginalSubscriptionCallback>) => Promise<void>);
    /**
     * checks if `value` is JSONValue (JSON serializable)
     * logs error message if not
     *
     * @param value value to check
     * @param name the name of the value to use in debugging messages
     * @returns if the value is JSONValue
     */
    export function isJSONValue(value: UserData, name?: string): value is JSONValue;
    /**
     * checks if `value` is JSONObject (JSON serializable + object)
     * logs error message if not
     *
     * @param value value to check
     * @returns if the value is JSONObject
     */
    export function isJSONObject(value: UserData, name?: string): value is JSONObject;
    export function isEmpty(o: any): boolean;
}
declare module "src/patch" {
    import { JSONObject } from "src/validate";
    /**
     * patches _old to deep equal _new
     * needed so objects can be updated without breaking references to them
     *
     * @param oldObject object to be updated
     * @param newObject object with values to use for update
     * @param path path to the object to be updated
     */
    export function patchInPlace(oldObject: JSONObject, newObject: JSONObject, path?: string): void;
}
declare module "src/Record" {
    import { DeepstreamClient } from "@deepstream/client";
    import { SubscriptionCallback } from "src/validate";
    import { UserData, JSONValue, JSONObject } from "src/validate";
    export class Record {
        #private;
        constructor(ds: DeepstreamClient, name: string);
        load(initObject?: UserData, overwrite?: boolean): Promise<void>;
        get whenLoaded(): Promise<void>;
        /**
         * sets initial data on the record only if the record is empty
         *
         * @param data initial data to set on the record
         */
        initData(data: UserData, overwrite?: boolean): Promise<void>;
        setData(data: UserData): void;
        watchShared(callback: SubscriptionCallback, triggerNow?: boolean): void;
        watchShared(path: string, callback: SubscriptionCallback, triggerNow?: boolean): void;
        get shared(): JSONObject;
        get name(): string;
        delete(): Promise<unknown>;
        _set(path: string, value: JSONValue): Promise<void>;
        _get(key?: string): JSONValue;
        static recordForShared(watchedShared: JSONObject): Record | undefined;
    }
}
declare module "src/Room" {
    import { SubscriptionCallback } from "src/validate";
    import { UserData, JSONObject } from "src/validate";
    import { Record } from "src/Record";
    export class Room {
        #private;
        constructor(host: string, appName: string, roomName: string);
        isConnected(): boolean;
        get whenConnected(): Promise<void>;
        disconnect(): void;
        info(): {
            appName: string;
            roomName: string;
            guestNames: string[];
            guestName: string;
            isConnected: boolean;
            isHost: boolean;
        };
        getRecord(name: string): Record;
        subscribe(event: string, cb: SubscriptionCallback): void;
        unsubscribe(event: string, cb?: SubscriptionCallback): void;
        emit(event: string, data?: UserData): void;
        get hostName(): string | undefined;
        get _guestNames(): string[];
        get myGuestRecord(): Record;
        get guestShareds(): JSONObject[];
        isHost(): boolean;
    }
}
declare module "version" {
    export const version: "0.5.0";
}
declare module "src/core" {
    import { JSONObject, UserData } from "src/validate";
    import { SubscriptionCallback } from "@deepstream/client/dist/src/record/record";
    import { Room } from "src/Room";
    import { Record } from "src/Record";
    export const partyConnect: (host: string, appName: string, roomName?: string, cb?: () => void) => void;
    export const partyDisconnect: () => void;
    export const partyLoadShared: (name: string, initObject?: UserData, cb?: (shared: JSONObject) => void) => JSONObject | undefined;
    export const partyLoadMyShared: (initObject?: {}, cb?: (shared: JSONObject) => void) => JSONObject | undefined;
    export const partyLoadGuestShareds: () => JSONObject[] | undefined;
    export const partyIsHost: () => boolean;
    export const partySetShared: (shared: JSONObject, object: JSONObject) => void;
    export const partyWatchShared: (shared: JSONObject, a: any, b: any, c: any) => void;
    export const partyEmit: (event: string, data?: UserData) => void;
    export const partySubscribe: (event: string, cb: SubscriptionCallback) => void;
    export const partyUnsubscribe: (event: string, cb?: SubscriptionCallback) => void;
    export const partyCountGuests: () => number | undefined;
    export const partyGetRoom: () => Room | null;
    export { Room as PartyRoom, Record as PartyRecord };
}
declare module "src/addons/info_panel/index" {
    /**
     * @param {boolean} show
     */
    export function partyToggleInfo(show: boolean): void;
}
declare module "src/index" {
    export * from "src/core";
    export { partyToggleInfo } from "src/addons/info_panel/index";
}
declare module "src/web" { }
//# sourceMappingURL=vanilla-party.d.ts.map