import { AppBskyActorDefs, AppBskyFeedDefs, AppBskyGraphDefs, ComAtprotoLabelDefs } from '../client/index';
export declare type Label = ComAtprotoLabelDefs.Label;
export declare type LabelPreference = 'ignore' | 'warn' | 'hide';
export declare type LabelDefinitionFlag = 'no-override' | 'adult' | 'unauthed';
export declare type LabelDefinitionOnWarnBehavior = 'blur' | 'blur-media' | 'alert' | null;
export interface LabelDefinitionLocalizedStrings {
    name: string;
    description: string;
}
export declare type LabelDefinitionLocalizedStringsMap = Record<string, LabelDefinitionLocalizedStrings>;
export interface LabelDefinition {
    id: string;
    groupId: string;
    configurable: boolean;
    preferences: LabelPreference[];
    flags: LabelDefinitionFlag[];
    onwarn: LabelDefinitionOnWarnBehavior;
    strings: {
        settings: LabelDefinitionLocalizedStringsMap;
        account: LabelDefinitionLocalizedStringsMap;
        content: LabelDefinitionLocalizedStringsMap;
    };
}
export interface LabelGroupDefinition {
    id: string;
    configurable: boolean;
    labels: LabelDefinition[];
    strings: {
        settings: LabelDefinitionLocalizedStringsMap;
    };
}
export declare type LabelDefinitionMap = Record<string, LabelDefinition>;
export declare type LabelGroupDefinitionMap = Record<string, LabelGroupDefinition>;
interface Labeler {
    did: string;
    displayName: string;
}
export interface LabelerSettings {
    labeler: Labeler;
    labels: Record<string, LabelPreference>;
}
export declare type ModerationSubjectProfile = AppBskyActorDefs.ProfileViewBasic | AppBskyActorDefs.ProfileView | AppBskyActorDefs.ProfileViewDetailed;
export declare type ModerationSubjectPost = AppBskyFeedDefs.PostView;
export declare type ModerationSubjectFeedGenerator = AppBskyFeedDefs.GeneratorView;
export declare type ModerationSubjectUserList = AppBskyGraphDefs.ListViewBasic | AppBskyGraphDefs.ListView;
export declare type ModerationSubject = ModerationSubjectProfile | ModerationSubjectPost | ModerationSubjectFeedGenerator | ModerationSubjectUserList;
export declare type ModerationCauseSource = {
    type: 'user';
} | {
    type: 'list';
    list: AppBskyGraphDefs.ListViewBasic;
} | {
    type: 'labeler';
    labeler: Labeler;
};
export declare type ModerationCause = {
    type: 'blocking';
    source: ModerationCauseSource;
    priority: 3;
} | {
    type: 'blocked-by';
    source: ModerationCauseSource;
    priority: 4;
} | {
    type: 'block-other';
    source: ModerationCauseSource;
    priority: 4;
} | {
    type: 'label';
    source: ModerationCauseSource;
    label: Label;
    labelDef: LabelDefinition;
    setting: LabelPreference;
    priority: 1 | 2 | 5 | 7 | 8;
} | {
    type: 'muted';
    source: ModerationCauseSource;
    priority: 6;
};
export interface ModerationOpts {
    userDid: string;
    adultContentEnabled: boolean;
    labels: Record<string, LabelPreference>;
    labelers: LabelerSettings[];
}
export declare class ModerationDecision {
    cause: ModerationCause | undefined;
    alert: boolean;
    blur: boolean;
    blurMedia: boolean;
    filter: boolean;
    noOverride: boolean;
    additionalCauses: ModerationCause[];
    did: string;
    static noop(): ModerationDecision;
    constructor(cause?: ModerationCause | undefined, alert?: boolean, blur?: boolean, blurMedia?: boolean, filter?: boolean, noOverride?: boolean, additionalCauses?: ModerationCause[], did?: string);
}
export interface ModerationUI {
    filter?: boolean;
    blur?: boolean;
    alert?: boolean;
    cause?: ModerationCause;
    noOverride?: boolean;
}
export {};
