import * as neverthrow from 'neverthrow';
import * as facebook_nodejs_business_sdk from 'facebook-nodejs-business-sdk';
import { Facebook } from './types.js';

/**
 * Configuration options for Facebook tracking.
 */
type FacebookTrackingConfig = {
    /**
     * The Facebook pixel ID.
     *
     * @default process.env.NEXT_PUBLIC_FACEBOOK_PIXEL
     */
    pixelId?: string;
    /**
     * The access token for Facebook Conversions API (optional).
     *
     * @default process.env.FACEBOOK_CONVERSIONS_API_TOKEN
     */
    accessToken?: string;
    /**
     * The test code for Facebook Conversions API (optional).
     *
     * @default process.env.FACEBOOK_TEST_EVENT_CODE
     */
    testCode?: string;
    /**
     * Enable debug mode.
     *
     * @default false
     */
    debug?: boolean;
};
/**
 * A class to handle Facebook Conversion API events.
 */
declare class FacebookTracking {
    config: FacebookTrackingConfig;
    constructor(config?: FacebookTrackingConfig);
    /**
     * Sends a custom event to Facebook Pixel.
     */
    track<T extends Facebook.Event.EventName>({ event_id, event_name, custom_data, event_time, event_source_url, user_data, opt_out, action_source, data_processing_options, data_processing_options_country, data_processing_options_state, advanced_measurement_table, advertiser_tracking_enabled, }: Facebook.Event.EventData<T>, { clean, }?: {
        /**
         * Set it to `true` if you want to track a clean event without any
         * information from the request
         * @default false
         */
        clean?: boolean;
    }): Promise<neverthrow.Ok<facebook_nodejs_business_sdk.EventResponse, unknown> | neverthrow.Err<facebook_nodejs_business_sdk.EventResponse, unknown>>;
}

export { FacebookTracking, type FacebookTrackingConfig };
