@atproto/ozone
Version:
Backend service for moderating the Bluesky network.
54 lines • 2 kB
TypeScript
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