import { Event, SkyWayError } from '@skyway-sdk/common';
import { Channel, Member, Publication, Subscription } from '@skyway-sdk/model';
import { RtcRpcApiClient } from '@skyway-sdk/rtc-rpc-api-client';
import { ChannelInit, ChannelQuery, MemberInit, PublicationInit, RtcApi, SubscriptionInit } from '../domain/api';
export declare class RtcApiImpl implements RtcApi {
    private _client;
    closed: boolean;
    readonly onClose: Event<void>;
    readonly onFatalError: Event<SkyWayError<Record<string, any>>>;
    private _token;
    constructor(_client: RtcRpcApiClient);
    /** @throws {@link SkyWayError} */
    connect(): Promise<void>;
    updateAuthToken(token: string): Promise<void>;
    close(): void;
    private _commonError;
    /**@throws {@link SkyWayError} */
    createChannel(appId: string, channelInit: ChannelInit): Promise<Channel>;
    getChannel(appId: string, { name, id }: ChannelQuery): Promise<Channel>;
    findOrCreateChannel(appId: string, query: ChannelInit): Promise<Channel>;
    deleteChannel(appId: string, id: Channel['id']): Promise<void>;
    updateChannelMetadata(appId: string, id: Channel['id'], metadata: string): Promise<void>;
    join(appId: string, channelId: Channel['id'], memberInit: MemberInit): Promise<Member>;
    updateMemberTtl(appId: string, channelId: Channel['id'], memberId: Member['id'], ttlSec: number): Promise<void>;
    /**
     * @returns Date.now()
     */
    getServerUnixtime(appId: string): Promise<number>;
    updateMemberMetadata(appId: string, channelId: Channel['id'], memberId: Member['id'], metadata: string): Promise<void>;
    leave(appId: string, channelId: Channel['id'], memberId: Member['id']): Promise<void>;
    /**@throws {@link SkyWayError} */
    publish(appId: string, init: PublicationInit): Promise<string>;
    updatePublicationMetadata(appId: string, channelId: Channel['id'], publicationId: Publication['id'], metadata: string): Promise<void>;
    disablePublication(appId: string, channelId: Channel['id'], publicationId: Publication['id']): Promise<void>;
    enablePublication(appId: string, channelId: Channel['id'], publicationId: Publication['id']): Promise<void>;
    unpublish(appId: string, channelId: Channel['id'], publicationId: Publication['id']): Promise<void>;
    /**@throws {@link SkyWayError} */
    subscribe(appId: string, init: SubscriptionInit): Promise<string>;
    unsubscribe(appId: string, channelId: Channel['id'], subscriptionId: Subscription['id']): Promise<void>;
}
//# sourceMappingURL=api.d.ts.map