import { Sequelize } from 'sequelize';
import { MUserAccountId, MUserId } from '../../../types/models';
import { VideoInclude, VideoPrivacy } from '../../../../shared/models';
import { AbstractRunQuery } from './shared/abstract-run-query';
export declare type DisplayOnlyForFollowerOptions = {
    actorId: number;
    orLocalVideos: boolean;
};
export declare type BuildVideosListQueryOptions = {
    attributes?: string[];
    serverAccountIdForBlock: number;
    displayOnlyForFollower: DisplayOnlyForFollowerOptions;
    count: number;
    start: number;
    sort: string;
    nsfw?: boolean;
    host?: string;
    isLive?: boolean;
    isLocal?: boolean;
    include?: VideoInclude;
    categoryOneOf?: number[];
    licenceOneOf?: number[];
    languageOneOf?: string[];
    tagsOneOf?: string[];
    tagsAllOf?: string[];
    privacyOneOf?: VideoPrivacy[];
    uuids?: string[];
    hasFiles?: boolean;
    hasHLSFiles?: boolean;
    hasWebtorrentFiles?: boolean;
    accountId?: number;
    videoChannelId?: number;
    videoPlaylistId?: number;
    trendingAlgorithm?: string;
    trendingDays?: number;
    user?: MUserAccountId;
    historyOfUser?: MUserId;
    startDate?: string;
    endDate?: string;
    originallyPublishedStartDate?: string;
    originallyPublishedEndDate?: string;
    durationMin?: number;
    durationMax?: number;
    search?: string;
    isCount?: boolean;
    group?: string;
    having?: string;
};
export declare class VideosIdListQueryBuilder extends AbstractRunQuery {
    protected readonly sequelize: Sequelize;
    protected replacements: any;
    private attributes;
    private joins;
    private readonly and;
    private readonly cte;
    private group;
    private having;
    private sort;
    private limit;
    private offset;
    constructor(sequelize: Sequelize);
    queryVideoIds(options: BuildVideosListQueryOptions): Promise<any[]>;
    countVideoIds(countOptions: BuildVideosListQueryOptions): Promise<number>;
    getQuery(options: BuildVideosListQueryOptions): {
        query: string;
        sort: string;
        replacements: any;
    };
    private buildIdsListQuery;
    private setCountAttribute;
    private joinHistory;
    private joinPlaylist;
    private whereStateAvailable;
    private wherePrivacyAvailable;
    private whereLocal;
    private whereHost;
    private whereAccountId;
    private whereChannelId;
    private whereFollowerActorId;
    private whereFileExists;
    private whereWebTorrentFileExists;
    private whereHLSFileExists;
    private buildWebTorrentFileExistsQuery;
    private buildHLSFileExistsQuery;
    private whereTagsOneOf;
    private whereTagsAllOf;
    private wherePrivacyOneOf;
    private whereUUIDs;
    private whereCategoryOneOf;
    private whereLicenceOneOf;
    private whereLanguageOneOf;
    private whereNSFW;
    private whereSFW;
    private whereLive;
    private whereVOD;
    private whereNotBlocked;
    private whereSearch;
    private whereNotBlacklisted;
    private whereStartDate;
    private whereEndDate;
    private whereOriginallyPublishedStartDate;
    private whereOriginallyPublishedEndDate;
    private whereDurationMin;
    private whereDurationMax;
    private groupForTrending;
    private groupForHotOrBest;
    private setSort;
    private buildOrder;
    private setLimit;
    private setOffset;
}
//# sourceMappingURL=videos-id-list-query-builder.d.ts.map