import { DmChannelSettingValue, GdmChannelSettingValue, GetSettingsResponse, SpaceChannelSettingValue, WebPushSubscriptionObject, PlainMessage } from '@towns-protocol/proto';
import { DescMessage, MessageShape } from '@bufbuild/protobuf';
import { SignerContext } from './signerContext';
import { RpcOptions } from './rpcCommon';
import { StreamsView } from './views/streamsView';
import { NotificationSettingsModel } from './views/streams/notificationSettings';
export interface INotificationStore {
    getItem<Desc extends DescMessage>(schema: Desc, key: string): MessageShape<Desc> | undefined;
    setItem<Desc extends DescMessage>(schema: Desc, key: string, value: MessageShape<Desc>): void;
}
export declare class NotificationsClient {
    private readonly signerContext;
    private readonly url;
    private readonly store;
    private readonly opts;
    readonly streamsView: StreamsView;
    get notificationSettings(): NotificationSettingsModel;
    private _client?;
    private startResponseKey;
    private finishResponseKey;
    private settingsKey;
    private getClientPromise;
    private getSettingsPromise;
    constructor(signerContext: SignerContext, url: string, store: INotificationStore | undefined, opts: RpcOptions | undefined, streamsView: StreamsView);
    get userId(): string;
    private getLocalStartResponse;
    private setLocalStartResponse;
    private getLocalFinishResponse;
    private setLocalFinishResponse;
    private getLocalSettings;
    private setLocalSettings;
    private updateLocalSettings;
    private getClient;
    private _getClient;
    private withClient;
    getSettings(): Promise<GetSettingsResponse | undefined>;
    private _getSettings;
    subscribeWebPush(subscription: PlainMessage<WebPushSubscriptionObject>): Promise<import("@bufbuild/protobuf").Message<"river.SubscribeWebPushResponse"> | undefined>;
    unsubscribeWebPush(subscription: PlainMessage<WebPushSubscriptionObject>): Promise<import("@bufbuild/protobuf").Message<"river.UnsubscribeWebPushResponse"> | undefined>;
    setDmGlobalSetting(value: DmChannelSettingValue): Promise<void | undefined>;
    setGdmGlobalSetting(value: GdmChannelSettingValue): Promise<void | undefined>;
    setDmChannelSetting(channelId: string, value: DmChannelSettingValue): Promise<void | undefined>;
    setGdmChannelSetting(channelId: string, value: GdmChannelSettingValue): Promise<void | undefined>;
    setSpaceSetting(spaceId: string, value: SpaceChannelSettingValue): Promise<void | undefined>;
    setChannelSetting(channelId: string, value: SpaceChannelSettingValue): Promise<void | undefined>;
}
export declare function getMutedChannelIds(settings?: PlainMessage<GetSettingsResponse>): Set<string> | undefined;
//# sourceMappingURL=notificationsClient.d.ts.map