import { BaseSearchSource, type SearchQueryOptions } from './BaseSearchSource';
import { FilterBuilder, type FilterBuilderOptions } from '../pagination';
import type { Channel } from '../channel';
import type { ChannelMemberResponse, MemberFilters, MemberSort, QueryMembersOptions } from '../types';
import type { SearchSourceOptions } from './types';
type CustomContext = Record<string, unknown>;
export type ChannelMemberSearchSourceFilterBuilderContext<C extends CustomContext = CustomContext> = {
    searchQuery?: string;
} & C;
export type ChannelMemberSearchSourceOptions = SearchSourceOptions & {
    /** Static base filters merged under the dynamically generated ones. */
    filters?: MemberFilters;
    sort?: MemberSort;
    searchOptions?: Omit<QueryMembersOptions, 'limit' | 'offset'>;
};
export declare class ChannelMemberSearchSource<TFilterContext extends CustomContext = CustomContext> extends BaseSearchSource<ChannelMemberResponse> {
    readonly type = "members";
    channel: Channel;
    filters: MemberFilters | undefined;
    sort: MemberSort | undefined;
    searchOptions: Omit<QueryMembersOptions, 'limit' | 'offset'> | undefined;
    filterBuilder: FilterBuilder<MemberFilters, ChannelMemberSearchSourceFilterBuilderContext<TFilterContext>>;
    constructor(channel: Channel, options?: ChannelMemberSearchSourceOptions, filterBuilderOptions?: FilterBuilderOptions<MemberFilters, ChannelMemberSearchSourceFilterBuilderContext<TFilterContext>>);
    protected query(searchQuery: string, queryOptions?: SearchQueryOptions): Promise<{
        items: ChannelMemberResponse[];
    }>;
    protected filterQueryResults(items: ChannelMemberResponse[]): ChannelMemberResponse[];
}
export {};
