import { z } from 'zod/v4';
import type { Amplitude } from './Amplitude.js';
export declare const AMPLITUDE_BASE_MESSAGE_SCHEMA: z.ZodObject<{
    event_type: z.ZodLiteral<string>;
    user_id: z.ZodUnion<[z.ZodString, z.ZodLiteral<"SYSTEM">]>;
    groups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
}, z.core.$strip>;
export type AmplitudeAdapterDependencies = {
    amplitude: Amplitude;
};
export type AmplitudeMessage = {
    schema: z.ZodObject<(typeof AMPLITUDE_BASE_MESSAGE_SCHEMA)['shape'], z.core.$strip>;
};
type AmplitudeMessageSchemaType<T extends AmplitudeMessage> = z.infer<T['schema']>;
/**
 * Amplitude adapter which provides type safe tracking of events
 */
export declare class AmplitudeAdapter<AmplitudeMessages extends AmplitudeMessage[]> {
    private readonly amplitude;
    constructor({ amplitude }: AmplitudeAdapterDependencies);
    track<Message extends AmplitudeMessages[number]>(supportedMessage: Message, data: Omit<AmplitudeMessageSchemaType<Message>, 'event_type'>): void;
}
export {};
