import { Transaction } from 'sequelize';
import { Model } from 'sequelize-typescript';
import { MAccountVideoRate, MAccountVideoRateAccountUrl, MAccountVideoRateAccountVideo, MAccountVideoRateFormattable } from '../../types/models';
import { AccountVideoRate, VideoRateType } from '../../../shared/models';
import { AttributesOnly } from '../../../shared/typescript-utils';
import { VideoModel } from '../video/video';
import { AccountModel } from './account';
export declare class AccountVideoRateModel extends Model<Partial<AttributesOnly<AccountVideoRateModel>>> {
    type: VideoRateType;
    url: string;
    createdAt: Date;
    updatedAt: Date;
    videoId: number;
    Video: VideoModel;
    accountId: number;
    Account: AccountModel;
    static load(accountId: number, videoId: number, transaction?: Transaction): Promise<MAccountVideoRate>;
    static loadByAccountAndVideoOrUrl(accountId: number, videoId: number, url: string, t?: Transaction): Promise<MAccountVideoRate>;
    static listByAccountForApi(options: {
        start: number;
        count: number;
        sort: string;
        type?: string;
        accountId: number;
    }): Promise<{
        rows: AccountVideoRateModel[];
        count: number;
    }>;
    static listRemoteRateUrlsOfLocalVideos(): Promise<string[]>;
    static loadLocalAndPopulateVideo(rateType: VideoRateType, accountName: string, videoId: number, t?: Transaction): Promise<MAccountVideoRateAccountVideo>;
    static loadByUrl(url: string, transaction: Transaction): Promise<AccountVideoRateModel>;
    static listAndCountAccountUrlsByVideoId(rateType: VideoRateType, videoId: number, start: number, count: number, t?: Transaction): Promise<{
        rows: MAccountVideoRateAccountUrl[];
        count: number;
    }>;
    static cleanOldRatesOf(videoId: number, type: VideoRateType, beforeUpdatedAt: Date): Promise<[undefined, number]>;
    toFormattedJSON(this: MAccountVideoRateFormattable): AccountVideoRate;
}
//# sourceMappingURL=account-video-rate.d.ts.map