import React from "react";
import { StoreApi } from "zustand";
import { PlayerProtocol, PlayerState } from "./player-state";
interface SinglePlayerContextType {
    playerId: string;
    playerStore: StoreApi<PlayerState>;
}
interface SinglePlayerProviderProps {
    children: React.ReactNode;
    playerId?: string;
    protocol?: PlayerProtocol;
    rendition?: string;
}
/**
 * Provider component for a single player that creates a scoped context
 * This allows components to access a specific player's state without passing IDs around
 */
export declare const SinglePlayerProvider: React.FC<SinglePlayerProviderProps>;
/**
 * Hook to access the current single player context
 */
export declare function useSinglePlayerContext(): SinglePlayerContextType;
/**
 * Hook to access the current player ID from the single player context
 */
export declare function useCurrentPlayerId(): string;
/**
 * Hook to access state from the current player without needing to specify the ID
 */
export declare function useCurrentPlayerStore<U>(selector: (state: PlayerState) => U): U;
/**
 * Hook to get the protocol of the current player
 */
export declare function useCurrentPlayerProtocol(): [
    PlayerProtocol,
    (protocol: PlayerProtocol) => void
];
/**
 * Hook to get the selected rendition of the current player
 */
export declare function useCurrentPlayerRendition(): [
    string,
    (rendition: string) => void
];
/**
 * Hook to get the ingest state of the current player
 */
export declare function useCurrentPlayerIngest(): {
    connectionState: RTCPeerConnectionState | null;
    setConnectionState: (state: RTCPeerConnectionState | null) => void;
    startedTimestamp: number | null;
    setStartedTimestamp: (timestamp: number | null) => void;
};
/**
 * HOC to wrap components with a SinglePlayerProvider
 */
export declare function withSinglePlayer<P extends object>(Component: React.ComponentType<P>): React.FC<P & SinglePlayerProviderProps>;
export {};
//# sourceMappingURL=single-player-provider.d.ts.map