import { Model } from 'sequelize-typescript';
import { MVideoImportDefault, MVideoImportFormattable } from '../../types/models/video/video-import';
import { VideoImport, VideoImportState } from '../../../shared/models';
import { AttributesOnly } from '../../../shared/typescript-utils';
import { UserModel } from '../user/user';
import { VideoModel } from './video';
import { VideoChannelSyncModel } from './video-channel-sync';
export declare class VideoImportModel extends Model<Partial<AttributesOnly<VideoImportModel>>> {
    createdAt: Date;
    updatedAt: Date;
    targetUrl: string;
    magnetUri: string;
    torrentName: string;
    state: VideoImportState;
    error: string;
    userId: number;
    User: UserModel;
    videoId: number;
    Video: VideoModel;
    videoChannelSyncId: number;
    VideoChannelSync: VideoChannelSyncModel;
    static deleteVideoIfFailed(instance: VideoImportModel, options: any): any;
    static loadAndPopulateVideo(id: number): Promise<MVideoImportDefault>;
    static listUserVideoImportsForApi(options: {
        userId: number;
        start: number;
        count: number;
        sort: string;
        search?: string;
        targetUrl?: string;
        videoChannelSyncId?: number;
    }): Promise<{
        total: number;
        data: MVideoImportDefault[];
    }>;
    static urlAlreadyImported(channelId: number, targetUrl: string): Promise<boolean>;
    getTargetIdentifier(): string;
    toFormattedJSON(this: MVideoImportFormattable): VideoImport;
    private static getStateLabel;
}
//# sourceMappingURL=video-import.d.ts.map