/**
 * D-2 — auto-identify-or-alias on URL param `?_syu=`.
 *
 * Reads the `_syu` (Syntro UID) param from the entry URL. If present:
 *   - If the current distinct_id is anonymous: identify(value)
 *   - If already identified as a different id: alias(value)
 *   - If already this id: no-op
 *
 * v1 watches one hardcoded param (`_syu`). Clients embed it in their
 * transactional emails. The config layer will eventually let clients
 * register their own param keys; until then, `_syu` is the convention.
 *
 * Consent: param value is read at boot. The actual identify/alias call
 * is deferred until the gate reaches `granted`. Importantly, we wait
 * for the FIRST `granted` ever observed — not the first definitive
 * status. Most CMPs (WPConsent, OneTrust, Cookiebot) push a
 * `consent default { analytics_storage: 'denied' }` on page load,
 * which would make our gate go denied → user clicks Accept → granted.
 * If we used subscribeOnce, we'd unsubscribe on the initial denied
 * and miss the user's actual decision. The fire-on-first-granted
 * pattern preserves the magic-link identify even through the
 * default-denied → granted flow.
 *
 * See docs/plans/current/2026-05-04-sdk-default-instrumentation-spec.md (D-2).
 */
import type { ConsentGate } from '../telemetry/consent';
import type { TelemetryClient } from '../telemetry/types';
export declare const SYNTRO_UID_PARAM = "_syu";
export declare function identifyFromUrlParam(telemetry: TelemetryClient, consentGate?: ConsentGate): void;
