/// <reference types="node" />
import express, { VideoUploadFile } from 'express';
import { PathLike } from 'fs-extra';
import { Transaction } from 'sequelize/types';
import { AbuseModel } from '../models/abuse/abuse';
import { VideoFileModel } from '../models/video/video-file';
import { FilteredModelAttributes } from '../types';
import { MAbuseFull, MAccountDefault, MAccountLight, MComment, MCommentOwnerVideo, MUser, MVideoAccountLightBlacklistAllFiles } from '../types/models';
import { LiveVideoCreate, VideoCreate, VideoImportCreate } from '../../shared/models/videos';
import { VideoCommentCreate } from '../../shared/models/videos/comment';
import { UserModel } from '../models/user/user';
import { VideoModel } from '../models/video/video';
import { VideoCommentModel } from '../models/video/video-comment';
export declare type AcceptResult = {
    accepted: boolean;
    errorMessage?: string;
};
declare function isLocalVideoAccepted(object: {
    videoBody: VideoCreate;
    videoFile: VideoUploadFile;
    user: UserModel;
}): AcceptResult;
declare function isLocalLiveVideoAccepted(object: {
    liveVideoBody: LiveVideoCreate;
    user: UserModel;
}): AcceptResult;
declare function isLocalVideoThreadAccepted(_object: {
    req: express.Request;
    commentBody: VideoCommentCreate;
    video: VideoModel;
    user: UserModel;
}): AcceptResult;
declare function isLocalVideoCommentReplyAccepted(_object: {
    req: express.Request;
    commentBody: VideoCommentCreate;
    parentComment: VideoCommentModel;
    video: VideoModel;
    user: UserModel;
}): AcceptResult;
declare function isRemoteVideoCommentAccepted(_object: {
    comment: MComment;
}): AcceptResult;
declare function isPreImportVideoAccepted(object: {
    videoImportBody: VideoImportCreate;
    user: MUser;
}): AcceptResult;
declare function isPostImportVideoAccepted(object: {
    videoFilePath: PathLike;
    videoFile: VideoFileModel;
    user: MUser;
}): AcceptResult;
declare function createVideoAbuse(options: {
    baseAbuse: FilteredModelAttributes<AbuseModel>;
    videoInstance: MVideoAccountLightBlacklistAllFiles;
    startAt: number;
    endAt: number;
    transaction: Transaction;
    reporterAccount: MAccountDefault;
    skipNotification: boolean;
}): Promise<import("../../shared/models").AdminAbuse>;
declare function createVideoCommentAbuse(options: {
    baseAbuse: FilteredModelAttributes<AbuseModel>;
    commentInstance: MCommentOwnerVideo;
    transaction: Transaction;
    reporterAccount: MAccountDefault;
    skipNotification: boolean;
}): Promise<import("../../shared/models").AdminAbuse>;
declare function createAccountAbuse(options: {
    baseAbuse: FilteredModelAttributes<AbuseModel>;
    accountInstance: MAccountDefault;
    transaction: Transaction;
    reporterAccount: MAccountDefault;
    skipNotification: boolean;
}): Promise<import("../../shared/models").AdminAbuse>;
export { isLocalLiveVideoAccepted, isLocalVideoAccepted, isLocalVideoThreadAccepted, isRemoteVideoCommentAccepted, isLocalVideoCommentReplyAccepted, isPreImportVideoAccepted, isPostImportVideoAccepted, createAbuse, createVideoAbuse, createVideoCommentAbuse, createAccountAbuse };
declare function createAbuse(options: {
    base: FilteredModelAttributes<AbuseModel>;
    reporterAccount: MAccountDefault;
    flaggedAccount: MAccountLight;
    associateFun: (abuseInstance: MAbuseFull) => Promise<{
        isOwned: boolean;
    }>;
    skipNotification: boolean;
    transaction: Transaction;
}): Promise<import("../../shared/models").AdminAbuse>;
//# sourceMappingURL=moderation.d.ts.map