import { PluginEvent, Properties } from '@posthog/plugin-scaffold'; import { Plugin } from '@posthog/plugin-scaffold'; import { Client } from 'pg'; import { ClickHouseEvent, Element, Event } from '../../../../types'; import { DB } from '../../../../utils/db/db'; export interface RawElement extends Element { $el_text?: string; } export interface TimestampBoundaries { min: Date | null; max: Date | null; } export interface ExportEventsJobPayload extends Record { timestampCursor?: number; intraIntervalOffset?: number; retriesPerformedSoFar: number; incrementTimestampCursor: boolean; batchId: number; } export interface HistoricalExportEvent extends PluginEvent { properties: Properties; } export declare type ExportHistoricalEventsUpgrade = Plugin<{ global: { pgClient: Client; eventsToIgnore: Set; sanitizedTableName: string; exportHistoricalEvents: (payload: ExportEventsJobPayload) => Promise; initTimestampsAndCursor: (payload: Record | undefined) => Promise; setTimestampBoundaries: () => Promise; updateProgressBar: (incrementedCursor: number) => void; timestampBoundariesForTeam: TimestampBoundaries; maxTimestamp: number | null; minTimestamp: number | null; }; }>; export declare const clickhouseEventTimestampToDate: (timestamp: string) => Date; export declare const fetchTimestampBoundariesForTeam: (db: DB, teamId: number) => Promise; export declare const fetchEventsForInterval: (db: DB, teamId: number, timestampLowerBound: Date, offset: number, eventsTimeInterval: number, eventsPerRun: number) => Promise; export declare const convertClickhouseEventToPluginEvent: (event: ClickHouseEvent) => HistoricalExportEvent; export declare const convertPostgresEventToPluginEvent: (event: Event) => HistoricalExportEvent;