import { DailyEventObject } from '@daily-co/daily-js';
import { ExtendedDailyParticipant } from '../DailyParticipants';
declare type FilterParticipantsFunction = (p: ExtendedDailyParticipant, index: number, arr: ExtendedDailyParticipant[]) => boolean;
declare type SerializableFilterParticipants = 'local' | 'remote' | 'owner' | 'record' | 'screen';
declare type FilterParticipants = SerializableFilterParticipants | FilterParticipantsFunction;
declare type SortParticipantsFunction = (a: ExtendedDailyParticipant, b: ExtendedDailyParticipant) => 1 | -1 | 0;
declare type SerializableSortParticipants = 'joined_at' | 'session_id' | 'user_id' | 'user_name';
declare type SortParticipants = SerializableSortParticipants | SortParticipantsFunction;
export declare const getParticipantIdsFilterSortParam: (filter: string | null, sort: string | null) => string;
/**
 * Short-cut state selector for useParticipantIds({ filter: 'local' })
 */
export declare const participantIdsFilteredAndSortedState: (param: string) => import("jotai/esm/").WritableAtom<string[], string[], void>;
interface UseParticipantIdsArgs {
    filter?: FilterParticipants;
    onActiveSpeakerChange?(ev: DailyEventObject<'active-speaker-change'>): void;
    onParticipantJoined?(ev: DailyEventObject<'participant-joined'>): void;
    onParticipantLeft?(ev: DailyEventObject<'participant-left'>): void;
    onParticipantUpdated?(ev: DailyEventObject<'participant-updated'>): void;
    sort?: SortParticipants;
}
/**
 * Returns a list of participant ids (= session_id).
 * The list can optionally be filtered and sorted, using the filter and sort options.
 */
export declare const useParticipantIds: ({ filter, onActiveSpeakerChange, onParticipantJoined, onParticipantLeft, onParticipantUpdated, sort, }?: UseParticipantIdsArgs) => string[];
export {};
