/**
 * Class to execute REST API calls, singleton.
 * By default, we're making API calls to the same server that serves the content.
 * This can be changed by providing different apiBase URL to the constructor.
 * All methods are asynchronous but blocking calls.
 */
export class VRSpaceAPI {
    static instance: any;
    /**
     * Returns VRSpaceAPI instance, creates one if required.
     * @param {String|null} [apiBase] API URL base
     * @param {String|null} [apiPath] API URL path
     * @returns {VRSpaceAPI}
     */
    static getInstance(apiBase?: string | null, apiPath?: string | null): VRSpaceAPI;
    /**
     * @param apiBase Base URL for all API endpoint, defaults to /vrspace/api
     */
    constructor(apiBase?: string, apiPath?: string);
    base: string;
    apiClient: ApiClient;
    endpoint: {
        /** @type {WorldsApi} */
        worlds: WorldsApi;
        oauth2: string;
        files: string;
        /** @type {UsersApi} */
        user: UsersApi;
        /** @type {GroupsApi} */
        groups: GroupsApi;
        /** @type {WebPushApi} */
        webpush: WebPushApi;
        /** @type {ServerInfoApi} */
        server: ServerInfoApi;
    };
    /**
     * Verify if given user name is valid, i.e. we can create user with that name.
     * @param name user name
     * @returns true if user name is available
     */
    verifyName(name: any): Promise<boolean>;
    /**
     * Returns current user name associated with the session.
     * @returns current user name, or null if user is anonymous (not logged in yet)
     */
    getUserName(): Promise<string>;
    /**
     * Returns true if the user is authanticated
     */
    getAuthenticated(): Promise<boolean>;
    /**
     * Initiates OAuth2 login with the server - opens login form with Oauth provider.
     * Requires Oauth2 provider id as returned by listOAuthProviders().
     * @param providerId Oauth provider as defined on the server
     * @param userName user name
     * @param avatarUrl optional Avatar URL
     */
    oauth2login(providerId: any, userName: any, avatarUrl: any): Promise<void>;
    /** Returns object of provider id: name (e.g. github: GitHub) */
    listOAuthProviders(): Promise<any>;
    /**
     * Returns User object of the current user, or null for anonymous users
     */
    getUserObject(): Promise<import("./openapi/model/User.js").User>;
    /**
     * Create a world from template
     * @returns token required to access the world
     * @param worldName unique world name
     * @param templateName optional template name, a world with this name must exist on the server
     * @param isPublic default false, i.e. only invited users (having the token) can enter
     * @param isTemporary default true, i.e. world is deleted once the last user exits
     */
    createWorldFromTemplate(worldName: any, templateName: any, isPublic?: boolean, isTemporary?: boolean): Promise<string>;
    /**
     * Internally used helper method
     */
    getJson(url: any): Promise<any>;
    /**
     * Internally used helper method
     */
    getText(url: any): Promise<string | void>;
    /**
     * Upload a file.
     * @param file File object
     * @param position an object containing x,y,z (Vector3)
     * @param rotation an object containing x,y,z (Vector3)
     */
    upload(file: any, position: any, rotation: any): void;
    /**
     * Internal used by webpushSubscribe
     * @private
     */
    private unregisterSubscription;
    /**
     * Internal used by webpushSubscribe
     * @private
     */
    private registerSubscription;
    /**
     * Internal used by webpushSubscribe
     * @private
     */
    private createSubscription;
    /**
     * Internal used by webpushSubscribe
     * @private
     */
    private urlBase64ToUint8Array;
    /**
     * Subcribe to web push, if available on the server. Requires existing service worker,
     * registered in main html file onload function. Fails silently if the registration does not exist.
     * @param {String} clientUrl path to serviceworker.js
     */
    webpushSubscribe(clientUrl: string): void;
}
import { ApiClient } from './openapi/ApiClient.js';
import { WorldsApi } from './openapi/api/WorldsApi.js';
import { UsersApi } from './openapi/api/UsersApi.js';
import { GroupsApi } from './openapi/api/GroupsApi.js';
import { WebPushApi } from './openapi/api/WebPushApi.js';
import { ServerInfoApi } from './openapi/api/ServerInfoApi.js';
