/**
 * SDK Default Instrumentation — public entry point.
 *
 * Wires up the five default behaviors specified in
 * docs/plans/current/2026-05-04-sdk-default-instrumentation-spec.md:
 *
 *   D-1: auto-identify-or-alias on email entry
 *   D-2: auto-identify-or-alias on URL param ?_syu=
 *   D-3: capture $initial_* properties pre-identify
 *   D-4: promote click IDs to person properties
 *   D-5: extract JSON-LD raw and ship as event property
 *
 * All five are always on in v1. Per-element opt-outs via DOM
 * attributes (data-syntro-no-track, data-syntro-no-identify,
 * data-syntro-no-jsonld) are the only escape hatch.
 */
import type { ConsentGate } from '../telemetry/consent';
import type { TelemetryClient } from '../telemetry/types';
export { CLICK_ID_KEYS, promoteClickIds } from './clickIds';
export { installEmailIdentifyListener, isEmailDenylisted, isValidEmail } from './identifyOnEmail';
export { identifyFromUrlParam, SYNTRO_UID_PARAM } from './identifyOnUrlParam';
export { captureInitialProperties } from './initialProperties';
export { extractAndRegisterJsonLd, MAX_DESCRIPTION_LENGTH, MAX_IMAGE_ARRAY_LENGTH, PII_KEYS, stripBloat, stripPii, } from './jsonLd';
interface GeoLike {
    is_eu?: string;
    country_code?: string;
}
interface InstallDefaultsOptions {
    /**
     * Promise resolving to geo info ({is_eu, country_code, ...}). Used by
     * D-3 to decide whether to capture full URL (ROW) or origin+pathname
     * only (EU/UK/CH). When omitted, D-3 captures the safe version.
     */
    geoPromise?: Promise<GeoLike>;
}
/**
 * Install all SDK defaults. Returns a teardown function that removes
 * any listeners that were attached.
 *
 * Safe to call when running in SSR / non-browser contexts; each
 * default no-ops when the relevant browser APIs are unavailable.
 *
 * @param telemetry — the TelemetryClient (PostHog adapter, noop, etc.)
 * @param consentGate — optional. When provided, D-1 (email entry) and
 *        D-2 (URL param) consult the gate before calling identify/alias.
 *        D-3, D-4, D-5 fire unconditionally — they're anonymous-only
 *        operations against the current (likely anonymous) distinct_id.
 * @param options — optional. `geoPromise` enables geo-aware URL capture
 *        in D-3 (full URL for ROW, sanitized for EU/UK/CH).
 */
export declare function installDefaults(telemetry: TelemetryClient, consentGate?: ConsentGate, options?: InstallDefaultsOptions): () => void;
