@atproto/ozone
Version:
Backend service for moderating the Bluesky network.
73 lines • 3.64 kB
TypeScript
import { AppBskyActorDefs, AtpAgent, ComAtprotoRepoGetRecord } from '@atproto/api';
import { Keypair } from '@atproto/crypto';
import { IdResolver } from '@atproto/identity';
import { BlobRef } from '@atproto/lexicon';
import { Database } from '../db';
import { LabelRow } from '../db/schema/label';
import { FeedViewPost } from '../lexicon/types/app/bsky/feed/defs';
import { AccountView } from '../lexicon/types/com/atproto/admin/defs';
import { Label } from '../lexicon/types/com/atproto/label/defs';
import { OutputSchema as ReportOutput } from '../lexicon/types/com/atproto/moderation/createReport';
import { BlobView, ModEventView, ModEventViewDetail, RecordView, RecordViewDetail, RepoView, SubjectStatusView } from '../lexicon/types/tools/ozone/moderation/defs';
import { Un$Typed } from '../lexicon/util';
import { ParsedLabelers } from '../util';
import { ModerationEventRowWithHandle, ModerationSubjectStatusRowWithHandle } from './types';
export type AuthHeaders = {
headers: {
authorization: string;
'atproto-accept-labelers'?: string;
};
};
export declare class ModerationViews {
private db;
private signingKey;
private signingKeyId;
private appviewAgent;
private appviewAuth;
idResolver: IdResolver;
devMode?: boolean | undefined;
constructor(db: Database, signingKey: Keypair, signingKeyId: number, appviewAgent: AtpAgent, appviewAuth: (method: string) => Promise<AuthHeaders>, idResolver: IdResolver, devMode?: boolean | undefined);
getAccoutInfosByDid(dids: string[]): Promise<Map<string, AccountView>>;
repos(dids: string[]): Promise<Map<string, RepoView>>;
formatEvent(row: ModerationEventRowWithHandle): Un$Typed<ModEventView>;
eventDetail(result: ModerationEventRowWithHandle): Promise<ModEventViewDetail>;
repoDetails(dids: string[], labelers?: ParsedLabelers): Promise<Map<string, RepoView>>;
fetchRecord(params: ComAtprotoRepoGetRecord.QueryParams, appviewAuth: AuthHeaders): Promise<ComAtprotoRepoGetRecord.Response | null>;
fetchRecords(subjects: RecordSubject[]): Promise<Map<string, RecordInfo>>;
records(subjects: RecordSubject[]): Promise<Map<string, RecordView & {
$type?: undefined;
moderation: {
$type?: undefined;
subjectStatus?: SubjectStatusView;
};
}>>;
recordDetails(subjects: RecordSubject[], labelers?: ParsedLabelers): Promise<Map<string, RecordViewDetail>>;
getExternalLabels(subjects: string[], labelers?: ParsedLabelers): Promise<Map<string, Label[]>>;
formatReport(report: ModerationEventRowWithHandle): ReportOutput;
subject(subject: string): Promise<SubjectView>;
blob(blobs: BlobRef[]): Promise<BlobView[]>;
labels(subjects: string[], includeNeg?: boolean): Promise<Map<string, Label[]>>;
formatLabelAndEnsureSig(row: LabelRow): Promise<Label>;
getSubjectStatus(subjects: string[]): Promise<Map<string, ModerationSubjectStatusRowWithHandle>>;
formatSubjectStatus(status: ModerationSubjectStatusRowWithHandle): SubjectStatusView;
fetchAuthorFeed(actor: string): Promise<FeedViewPost[]>;
getProfiles(dids: string[]): Promise<Map<string, AppBskyActorDefs.ProfileViewDetailed>>;
}
type RecordSubject = {
uri: string;
cid?: string;
};
type SubjectView = ModEventViewDetail['subject'];
type RecordInfo = {
uri: string;
cid: string;
value: Record<string, unknown>;
indexedAt: string;
};
export declare function getSelfLabels(details: {
uri: string | null;
cid: string | null;
record: Record<string, unknown> | null;
}): Label[];
export {};
//# sourceMappingURL=views.d.ts.map