import { MarketingAdapter, MarketingContact, ComplianceStore } from './index.js';

type BrevoCreds = {
    apiKey: string;
    fetchImpl?: typeof fetch;
    senderEmail: string;
    senderName?: string;
    complianceStore: ComplianceStore;
};
type BrevoDoiCreds = Pick<BrevoCreds, 'apiKey' | 'fetchImpl'>;
type BrevoDoiContactOpts = {
    listId: number;
    templateId: number;
    redirectionUrl: string;
};
type BrevoUpsertContactOpts = {
    updateEnabled?: boolean;
};
type BrevoDoiAdapter = {
    upsertContact(contact: MarketingContact, listId?: string, opts?: BrevoUpsertContactOpts): Promise<void>;
    createDoiContact(contact: MarketingContact, opts: BrevoDoiContactOpts): Promise<void>;
};
type BrevoAdapter = Omit<MarketingAdapter, 'upsertContact'> & BrevoDoiAdapter & {
    createSegment(def: {
        name: string;
        listId: number;
    }): Promise<{
        id: number;
        name: string;
    }>;
    scheduleCampaign(campaignId: string | number, scheduledAt: string): Promise<void>;
    createAutomation(def: {
        name: string;
        listId: string | number;
    }): Promise<{
        id: number;
        name: string;
    }>;
};
declare function makeBrevoAdapter(creds: BrevoCreds): BrevoAdapter;
declare function makeBrevoAdapter(creds: BrevoDoiCreds): BrevoDoiAdapter;

export { type BrevoAdapter, type BrevoCreds, type BrevoDoiAdapter, type BrevoDoiContactOpts, type BrevoDoiCreds, type BrevoUpsertContactOpts, makeBrevoAdapter };
