import { SessionManager } from "@atproto/api/dist/session-manager";
import { PlaceStreamChatProfile, PlaceStreamIngestDefs, PlaceStreamLivestream } from "streamplace";
import { StoreApi } from "zustand";
import { BrandingAsset } from "./branding";
export interface ContentMetadataResult {
    record: any;
    uri: string;
    cid: string;
    rkey?: string;
}
export interface StreamplaceState {
    url: string;
    liveUsers: PlaceStreamLivestream.LivestreamView[] | null;
    setLiveUsers: (opts: {
        liveUsers?: PlaceStreamLivestream.LivestreamView[];
        liveUsersLoading?: boolean;
        liveUsersError?: string | null;
        liveUsersRefresh?: number;
    }) => void;
    liveUsersRefresh: number;
    liveUsersLoading: boolean;
    liveUsersError: string | null;
    oauthSession: SessionManager | null | undefined;
    handle: string | null;
    chatProfile: PlaceStreamChatProfile.Record | null;
    ingests: PlaceStreamIngestDefs.Ingest[] | null;
    setIngests: (ingests: PlaceStreamIngestDefs.Ingest[] | null) => void;
    contentMetadata: ContentMetadataResult | null;
    setContentMetadata: (metadata: ContentMetadataResult | null) => void;
    broadcasterDID: string | null;
    setBroadcasterDID: (broadcasterDID: string | null) => void;
    serverDID: string | null;
    setServerDID: (serverDID: string | null) => void;
    adminDIDs: string[];
    setAdminDIDs: (adminDIDs: string[]) => void;
    playbackWorkerUrl: string | null;
    setPlaybackWorkerUrl: (url: string | null) => void;
    gamesEnabled: boolean;
    setGamesEnabled: (enabled: boolean) => void;
    branding: Record<string, BrandingAsset> | null;
    brandingLoading: boolean;
    brandingError: string | null;
    volume: number;
    muted: boolean;
    setVolume: (volume: number) => void;
    setMuted: (muted: boolean) => void;
    danmuUnlocked: boolean;
    danmuEnabled: boolean;
    danmuOpacity: number;
    danmuSpeed: number;
    danmuLaneCount: number;
    danmuMaxMessages: number;
    setDanmuUnlocked: (unlocked: boolean) => void;
    setDanmuEnabled: (enabled: boolean) => void;
    setDanmuOpacity: (opacity: number) => void;
    setDanmuSpeed: (speed: number) => void;
    setDanmuLaneCount: (laneCount: number) => void;
    setDanmuMaxMessages: (maxMessages: number) => void;
}
export type StreamplaceStore = StoreApi<StreamplaceState>;
export declare const makeStreamplaceStore: ({ url, }: {
    url: string;
}) => StoreApi<StreamplaceState>;
export declare function getStreamplaceStoreFromContext(): StreamplaceStore;
export declare function useStreamplaceStore<U>(selector: (state: StreamplaceState) => U): U;
export declare const useUrl: () => string;
export declare const useDID: () => string | undefined;
export declare const useHandle: () => string | null;
export declare const useSetHandle: () => ((handle: string) => void);
export declare const useContentMetadata: () => ContentMetadataResult | null;
export declare const useSetContentMetadata: () => (metadata: ContentMetadataResult | null) => void;
export declare const useVolume: () => number;
export declare const useMuted: () => boolean;
export declare const useSetVolume: () => (volume: number) => void;
export declare const useSetMuted: () => (muted: boolean) => void;
export declare const useEffectiveVolume: () => number;
export declare const useDanmuUnlocked: () => boolean;
export declare const useDanmuEnabled: () => boolean;
export declare const useDanmuOpacity: () => number;
export declare const useDanmuSpeed: () => number;
export declare const useDanmuLaneCount: () => number;
export declare const useDanmuMaxMessages: () => number;
export declare const useSetDanmuUnlocked: () => (unlocked: boolean) => void;
export declare const useSetDanmuEnabled: () => (enabled: boolean) => void;
export declare const useSetDanmuOpacity: () => (opacity: number) => void;
export declare const useSetDanmuSpeed: () => (speed: number) => void;
export declare const useSetDanmuLaneCount: () => (laneCount: number) => void;
export declare const useSetDanmuMaxMessages: () => (maxMessages: number) => void;
export declare const useDanmuSettings: () => {
    danmuUnlocked: boolean;
    danmuEnabled: boolean;
    danmuOpacity: number;
    danmuSpeed: number;
    danmuLaneCount: number;
    danmuMaxMessages: number;
    setDanmuUnlocked: (unlocked: boolean) => void;
    setDanmuEnabled: (enabled: boolean) => void;
    setDanmuOpacity: (opacity: number) => void;
    setDanmuSpeed: (speed: number) => void;
    setDanmuLaneCount: (laneCount: number) => void;
    setDanmuMaxMessages: (maxMessages: number) => void;
};
//# sourceMappingURL=streamplace-store.d.ts.map