/** * Extend Segment with extra PostHog JS functionality. Required for things like Recordings and feature flags to work correctly. * * ### Usage * * ```js * // After your standard segment anyalytics install * analytics.load("GOEDfA21zZTtR7clsBuDvmBKAtAdZ6Np"); * * analytics.ready(() => { * posthog.init('', { * capture_pageview: false, * segment: window.analytics, // NOTE: Be sure to use window.analytics here! * }); * window.analytics.page(); * }) * ``` */ import { PostHog } from '../posthog-core'; export type SegmentUser = { anonymousId(): string | undefined; id(): string | undefined; }; export type SegmentAnalytics = { user: () => SegmentUser | Promise; register: (integration: SegmentPlugin) => Promise; }; interface SegmentContext { event: { event: string; userId?: string; anonymousId?: string; properties: any; }; } type SegmentFunction = (ctx: SegmentContext) => Promise | SegmentContext; interface SegmentPlugin { name: string; version: string; type: 'enrichment'; isLoaded: () => boolean; load: (ctx: SegmentContext, instance: any, config?: any) => Promise; unload?: (ctx: SegmentContext, instance: any) => Promise | unknown; ready?: () => Promise; track?: SegmentFunction; identify?: SegmentFunction; page?: SegmentFunction; group?: SegmentFunction; alias?: SegmentFunction; screen?: SegmentFunction; } export declare function setupSegmentIntegration(posthog: PostHog, done: () => void): void; export {};