import { PreviousableTwitterPaginator } from './TwitterPaginator';
import { Tweetv2SearchParams, Tweetv2SearchResult, TwitterResponse, TweetV2, Tweetv2TimelineResult, TweetV2TimelineParams, TweetV2UserTimelineResult, TweetV2UserTimelineParams, ApiV2Includes, Tweetv2ListResult, TweetV2PaginableListParams, Tweetv2FieldsParams } from '../types';
/** A generic PreviousableTwitterPaginator able to consume TweetV2[]. */
declare abstract class TweetsV2Paginator<TResult extends Tweetv2ListResult, TParams extends Partial<Tweetv2FieldsParams>, TShared = any> extends PreviousableTwitterPaginator<TResult, TParams, TweetV2, TShared> {
    protected updateIncludes(data: TResult): void;
    protected getPageLengthFromRequest(result: TwitterResponse<TResult>): number;
    protected isFetchLastOver(result: TwitterResponse<TResult>): boolean;
    protected canFetchNextPage(result: TResult): boolean;
    protected getItemArray(): TweetV2[];
    /**
     * Tweets returned by paginator.
     */
    get tweets(): TweetV2[];
    get meta(): {
        result_count: number;
        next_token?: string | undefined;
        previous_token?: string | undefined;
    };
    get includes(): ApiV2Includes;
}
/** A generic PreviousableTwitterPaginator able to consume TweetV2 timelines. */
declare abstract class TweetTimelineV2Paginator<TResult extends Tweetv2TimelineResult, TParams extends TweetV2TimelineParams, TShared = any> extends TweetsV2Paginator<TResult, TParams, TShared> {
    protected refreshInstanceFromResult(response: TwitterResponse<TResult>, isNextPage: boolean): void;
    protected getNextQueryParams(maxResults?: number): {
        max_results?: number | undefined;
    } & Partial<TParams> & {
        until_id: string;
    };
    protected getPreviousQueryParams(maxResults?: number): {
        max_results?: number | undefined;
    } & Partial<TParams> & {
        since_id: string;
    };
}
export declare class TweetSearchRecentV2Paginator extends TweetTimelineV2Paginator<Tweetv2SearchResult, Tweetv2SearchParams> {
    protected _endpoint: string;
}
export declare class TweetSearchAllV2Paginator extends TweetTimelineV2Paginator<Tweetv2SearchResult, Tweetv2SearchParams> {
    protected _endpoint: string;
}
declare type TUserTimelinePaginatorShared = {
    id: string;
};
export declare class TweetUserTimelineV2Paginator extends TweetTimelineV2Paginator<TweetV2UserTimelineResult, TweetV2UserTimelineParams, TUserTimelinePaginatorShared> {
    protected _endpoint: string;
}
export declare class TweetUserMentionTimelineV2Paginator extends TweetTimelineV2Paginator<TweetV2UserTimelineResult, TweetV2UserTimelineParams, TUserTimelinePaginatorShared> {
    protected _endpoint: string;
}
/** A generic TwitterPaginator able to consume TweetV2 timelines. */
declare abstract class TweetListV2Paginator<TResult extends Tweetv2ListResult, TParams extends TweetV2PaginableListParams, TShared = any> extends TweetsV2Paginator<TResult, TParams, TShared> {
    protected refreshInstanceFromResult(response: TwitterResponse<TResult>, isNextPage: boolean): void;
    protected getNextQueryParams(maxResults?: number): {
        max_results?: number | undefined;
    } & Partial<TParams> & {
        pagination_token: string | undefined;
    };
    protected getPreviousQueryParams(maxResults?: number): {
        max_results?: number | undefined;
    } & Partial<TParams> & {
        pagination_token: string | undefined;
    };
}
export declare class TweetV2UserLikedTweetsPaginator extends TweetListV2Paginator<Tweetv2ListResult, TweetV2PaginableListParams, TUserTimelinePaginatorShared> {
    protected _endpoint: string;
}
export {};
