import { type Selectable } from 'kysely';
import { ModerationEvent } from '../db/schema/moderation_event';
import { ModerationSubjectStatus } from '../db/schema/moderation_subject_status';
import { ModEventView } from '../lexicon/types/tools/ozone/moderation/defs';
import { ModSubject } from './subject';
export type ModerationEventRow = Selectable<ModerationEvent>;
export type ReversibleModerationEvent = Pick<ModerationEventRow, 'createdBy' | 'comment' | 'action'> & {
    createdAt?: Date;
    subject: ModSubject;
};
export type ModerationEventRowWithHandle = ModerationEventRow & {
    subjectHandle?: string | null;
    creatorHandle?: string | null;
};
export type ModerationSubjectStatusRow = Selectable<ModerationSubjectStatus>;
export type ModerationSubjectStatusRowWithStats = ModerationSubjectStatusRow & {
    takedownCount: number | null;
    suspendCount: number | null;
    escalateCount: number | null;
    reportCount: number | null;
    appealCount: number | null;
    totalReports: number | null;
    reportedCount: number | null;
    escalatedCount: number | null;
    appealedCount: number | null;
    subjectCount: number | null;
    pendingCount: number | null;
    processedCount: number | null;
    takendownCount: number | null;
    strikeCount: number | null;
    totalStrikeCount: number | null;
    firstStrikeAt: string | null;
    lastStrikeAt: string | null;
};
export type ModerationSubjectStatusRowWithHandle = ModerationSubjectStatusRowWithStats & {
    handle: string | null;
};
export type ModEventType = ModEventView['event'];
type AccountHostingView = {
    $type: 'tools.ozone.moderation.defs#accountHosting';
    status: 'active' | 'takendown' | 'suspended' | 'deleted' | 'deactivated';
    createdAt?: Date;
    updatedAt?: Date;
    deletedAt?: Date;
    deactivatedAt?: Date;
    reactivatedAt?: Date;
};
type RecordHostingView = {
    $type: 'tools.ozone.moderation.defs#recordHosting';
    status: 'active' | 'deleted';
    createdAt?: Date;
    updatedAt?: Date;
    deletedAt?: Date;
};
export type ModerationSubjectHostingView = AccountHostingView | RecordHostingView;
export type ReporterStats = {
    did: string;
    accountReportCount: number;
    recordReportCount: number;
    reportedAccountCount: number;
    reportedRecordCount: number;
    takendownAccountCount: number;
    takendownRecordCount: number;
    labeledAccountCount: number;
    labeledRecordCount: number;
};
export type ReporterStatsResult = {
    accountReportCount?: number;
    recordReportCount?: number;
    reportedAccountCount?: number;
    reportedRecordCount?: number;
    takendownAccountCount?: number;
    takendownRecordCount?: number;
    labeledAccountCount?: number;
    labeledRecordCount?: number;
};
export {};
//# sourceMappingURL=types.d.ts.map