import { VideoAbuseModel } from '../../../models/abuse/video-abuse';
import { VideoCommentAbuseModel } from '../../../models/abuse/video-comment-abuse';
import { VideoCommentModel } from '../../../models/video/video-comment';
import { PickWith } from '../../../../shared/typescript-utils';
import { AbuseModel } from '../../../models/abuse/abuse';
import { MAccountDefault, MAccountFormattable, MAccountLight, MAccountUrl } from '../account';
import { MComment, MCommentOwner, MCommentUrl, MCommentVideo, MVideoUrl } from '../video';
import { MVideo, MVideoAccountLightBlacklistAllFiles } from '../video/video';
declare type Use<K extends keyof AbuseModel, M> = PickWith<AbuseModel, K, M>;
declare type UseVideoAbuse<K extends keyof VideoAbuseModel, M> = PickWith<VideoAbuseModel, K, M>;
declare type UseCommentAbuse<K extends keyof VideoCommentAbuseModel, M> = PickWith<VideoCommentAbuseModel, K, M>;
export declare type MAbuse = Omit<AbuseModel, 'VideoCommentAbuse' | 'VideoAbuse' | 'ReporterAccount' | 'FlaggedAccount' | 'toActivityPubObject'>;
export declare type MVideoAbuse = Omit<VideoAbuseModel, 'Abuse' | 'Video'>;
export declare type MCommentAbuse = Omit<VideoCommentAbuseModel, 'Abuse' | 'VideoComment'>;
export declare type MAbuseReporter = MAbuse & Use<'ReporterAccount', MAccountDefault>;
export declare type MVideoAbuseVideo = MVideoAbuse & UseVideoAbuse<'Video', MVideo>;
export declare type MVideoAbuseVideoUrl = MVideoAbuse & UseVideoAbuse<'Video', MVideoUrl>;
export declare type MVideoAbuseVideoFull = MVideoAbuse & UseVideoAbuse<'Video', Omit<MVideoAccountLightBlacklistAllFiles, 'VideoFiles' | 'VideoStreamingPlaylists'>>;
export declare type MVideoAbuseFormattable = MVideoAbuse & UseVideoAbuse<'Video', Pick<MVideoAccountLightBlacklistAllFiles, 'id' | 'uuid' | 'name' | 'nsfw' | 'getMiniatureStaticPath' | 'isBlacklisted' | 'VideoChannel'>>;
export declare type MCommentAbuseAccount = MCommentAbuse & UseCommentAbuse<'VideoComment', MCommentOwner>;
export declare type MCommentAbuseAccountVideo = MCommentAbuse & UseCommentAbuse<'VideoComment', MCommentOwner & PickWith<VideoCommentModel, 'Video', MVideo>>;
export declare type MCommentAbuseUrl = MCommentAbuse & UseCommentAbuse<'VideoComment', MCommentUrl>;
export declare type MCommentAbuseFormattable = MCommentAbuse & UseCommentAbuse<'VideoComment', MComment & PickWith<MCommentVideo, 'Video', Pick<MVideo, 'id' | 'uuid' | 'name'>>>;
export declare type MAbuseId = Pick<AbuseModel, 'id'>;
export declare type MAbuseVideo = MAbuse & Pick<AbuseModel, 'toActivityPubObject'> & Use<'VideoAbuse', MVideoAbuseVideo>;
export declare type MAbuseUrl = MAbuse & Use<'VideoAbuse', MVideoAbuseVideoUrl> & Use<'VideoCommentAbuse', MCommentAbuseUrl>;
export declare type MAbuseAccountVideo = MAbuse & Pick<AbuseModel, 'toActivityPubObject'> & Use<'VideoAbuse', MVideoAbuseVideoFull> & Use<'ReporterAccount', MAccountDefault>;
export declare type MAbuseFull = MAbuse & Pick<AbuseModel, 'toActivityPubObject'> & Use<'ReporterAccount', MAccountLight> & Use<'FlaggedAccount', MAccountLight> & Use<'VideoAbuse', MVideoAbuseVideoFull> & Use<'VideoCommentAbuse', MCommentAbuseAccountVideo>;
export declare type MAbuseAdminFormattable = MAbuse & Use<'ReporterAccount', MAccountFormattable> & Use<'FlaggedAccount', MAccountFormattable> & Use<'VideoAbuse', MVideoAbuseFormattable> & Use<'VideoCommentAbuse', MCommentAbuseFormattable>;
export declare type MAbuseUserFormattable = MAbuse & Use<'FlaggedAccount', MAccountFormattable> & Use<'VideoAbuse', MVideoAbuseFormattable> & Use<'VideoCommentAbuse', MCommentAbuseFormattable>;
export declare type MAbuseAP = MAbuse & Pick<AbuseModel, 'toActivityPubObject'> & Use<'ReporterAccount', MAccountUrl> & Use<'FlaggedAccount', MAccountUrl> & Use<'VideoAbuse', MVideoAbuseVideo> & Use<'VideoCommentAbuse', MCommentAbuseAccount>;
export {};
//# sourceMappingURL=abuse.d.ts.map