import { EASUpdateAction, EASUpdateContext } from '../../eas-update/utils';
import { UpdateChannelBasicInfoFragment } from '../../graphql/generated';
import { Connection, Edge, QueryParams } from '../../utils/relay';
/**
 * Select a channel for the project.
 *
 * @constructor
 * @param {function} options.filterPredicate - A predicate to filter the channels that are shown to the user. It takes a channelInfo object as a parameter and returns a boolean.
 * @param {string} options.printedType - The type of channel printed to the user. Defaults to 'channel'.
 * @param {number} options.pageSize - The number of channels to show per page. Defaults to 100.
 * @param {function} options.beforeEachFilterQuery Optional. If a filter predicate was specified, this callback function will be called before each query.
 * @args externalQueryParams The query params for the pagination.
 * @args totalNodesFetched The total number of nodes fetched so far.
 * @args dataset The dataset so far.
 * @param {function} options.afterEachFilterQuery Optional. If a filter predicate was specified, this callback function will be called after each query.
 * @args externalQueryParams The query params for the pagination.
 * @args totalNodesFetched The total number of nodes fetched so far.
 * @args dataset The dataset so far.
 * @args willFetchAgain If the query will fetch again to get a complete page.
 */
export declare class SelectChannel implements EASUpdateAction<UpdateChannelBasicInfoFragment | null> {
    private readonly options;
    constructor(options?: {
        filterPredicate?: (channelInfo: UpdateChannelBasicInfoFragment) => boolean;
        printedType?: string;
        pageSize?: number;
        beforeEachFilterQuery?: (externalQueryParams: QueryParams, totalNodesFetched: number, dataset: Edge<UpdateChannelBasicInfoFragment>[]) => void;
        afterEachFilterQuery?: (externalQueryParams: QueryParams, totalNodesFetched: number, dataset: Edge<UpdateChannelBasicInfoFragment>[], willFetchAgain: boolean) => void;
    });
    queryAsync(ctx: EASUpdateContext, queryParams: QueryParams): Promise<Connection<UpdateChannelBasicInfoFragment>>;
    filterQueryAsync(ctx: EASUpdateContext, queryParams: QueryParams, filterPredicate: (channelInfo: UpdateChannelBasicInfoFragment) => boolean): Promise<Connection<UpdateChannelBasicInfoFragment>>;
    runAsync(ctx: EASUpdateContext): Promise<UpdateChannelBasicInfoFragment | null>;
}
