UNPKG

@atproto/ozone

Version:

Backend service for moderating the Bluesky network.

54 lines 2 kB
import { Insertable, Selectable } from 'kysely'; import { AtpAgent } from '@atproto/api'; import { Database } from '../db'; import { BlobPushEvent } from '../db/schema/blob_push_event'; import { RepoPushEventType } from '../db/schema/repo_push_event'; type PollState = { timer?: NodeJS.Timeout; promise: Promise<void>; }; type AuthHeaders = { headers: { authorization: string; }; }; type Service = { agent: AtpAgent; did: string; }; export declare class EventPusher { db: Database; createAuthHeaders: (aud: string, method: string) => Promise<AuthHeaders>; destroyed: boolean; repoPollState: PollState; recordPollState: PollState; blobPollState: PollState; appview: Service | undefined; pds: Service | undefined; constructor(db: Database, createAuthHeaders: (aud: string, method: string) => Promise<AuthHeaders>, services: { appview?: { url: string; did: string; }; pds?: { url: string; did: string; }; }); start(): void; getTakedownServices(targetServices: Set<string>): RepoPushEventType[]; poll(state: PollState, fn: () => Promise<void>): void; processAll(): Promise<void>; destroy(): Promise<void>; pushRepoEvents(): Promise<void>; pushRecordEvents(): Promise<void>; pushBlobEvents(): Promise<void>; private updateSubjectOnService; attemptRepoEvent(id: number): Promise<void>; attemptRecordEvent(id: number): Promise<void>; attemptBlobEvent(id: number): Promise<void>; markBlobEventAttempt(dbTxn: Database, event: Selectable<BlobPushEvent>, succeeded: boolean): Promise<void>; logBlobPushEvent(blobValues: Insertable<BlobPushEvent>[], takedownRef?: string | null): Promise<import("kysely").Selection<import("../db/schema").DatabaseSchemaType, "blob_push_event", "id" | "subjectDid" | "subjectUri" | "eventType" | "subjectBlobCid">[]>; } export {}; //# sourceMappingURL=event-pusher.d.ts.map