import { VideoClient } from '@zoom/videosdk';
import { CommandChannelAction, SharedState } from '../../shared';
import { ParticipationPermission } from '../../shared/participation';
import { AlertDialogProps } from '../DialogsProvider/context';
import { SendActionOptions, SendActionResult } from './hooks';

export type CommandChannelContext = {
    zmClient: typeof VideoClient;
    sendAction: (action: CommandChannelAction, options?: SendActionOptions) => Promise<SendActionResult>;
    sharedState: SharedState;
    canServeSharedState: boolean;
    canRespondToRecoveryRequest: boolean;
    alert: (props: AlertDialogProps) => void;
    t: (key: string | ReadonlyArray<string>, params?: Record<string, unknown>) => string;
    dispatch: (action: CommandChannelAction) => void;
    onStateRecoverySnapshot: (action: Extract<CommandChannelAction, {
        type: 'SEND-STATE-RECOVERY';
    }>) => void;
    enqueuePendingSharedStateRequester: (userId: number) => void;
    setRequestedHostRoleDialogVisible: (visible: boolean) => void;
    setParticipationGranted: (value: ParticipationPermission | null) => void;
    setParticipationRevoked: (value: boolean) => void;
    setParticipationVideoRevoked: (value: boolean) => void;
    setPendingParticipationInvite: (value: ParticipationPermission | null) => void;
};
type CommandChannelActionHandler = (action: CommandChannelAction, context: CommandChannelContext) => void | Promise<void>;
type CommandChannelActionHandlers = {
    [K in CommandChannelAction['type']]?: CommandChannelActionHandler;
};
export declare const commandChannelActionHandlers: CommandChannelActionHandlers;
export {};
