import { StreamVideoParticipant } from './types';
import { Comparator } from './sorting';
/**
 * The options for a {@link CallType}.
 */
export type CallTypeOptions = {
    /**
     * The {@link Comparator} to use to sorting the participants in the call.
     */
    sortParticipantsBy?: Comparator<StreamVideoParticipant>;
};
/**
 * Represents a call type.
 */
export declare class CallType {
    /**
     * The name of the call type.
     */
    name: string;
    /**
     * The options for the call type.
     */
    options: CallTypeOptions;
    /**
     * Constructs a new CallType.
     *
     * @param name the name of the call type.
     * @param options the options for the call type.
     */
    constructor(name: string, options?: CallTypeOptions);
}
/**
 * A registry of {@link CallType}s.
 * You can register and unregister call types.
 */
declare class CallTypesRegistry {
    /**
     * The call types registered in this registry.
     * @private
     */
    private readonly callTypes;
    /**
     * Constructs a new CallTypesRegistry.
     *
     * @param callTypes the initial call types to register.
     */
    constructor(callTypes: CallType[]);
    /**
     * Registers a new call type.
     *
     * @param callType the call type to register.
     */
    register: (callType: CallType) => void;
    /**
     * Unregisters a call type.
     *
     * @param name the name of the call type to unregister.
     */
    unregister: (name: string) => void;
    /**
     * Gets a call type by name.
     *
     * @param name the name of the call type to get.
     */
    get: (name: string) => CallType;
}
/**
 * The default call types registry.
 * You can use this instance to dynamically register and unregister call types.
 */
export declare const CallTypes: CallTypesRegistry;
export {};
