import { Context } from "hono";
import { DataAdapters, User } from "@authhero/adapter-interfaces";
import { Bindings, Variables } from "../types";
/**
 * Decorator applied by `addDataHooks` to `users.create`. Runs the full
 * pre-commit/commit/publish pipeline for a user creation:
 *
 *  1. Pre-registration blocking hooks (outside any transaction so webhook
 *     latency and user-authored code don't hold a DB connection).
 *  2. `commitUserHook` — the internal transactional step that atomically
 *     writes the user row (via `rawCreate`) and, when the built-in
 *     email-based linking path is enabled, also resolves `linked_to` from
 *     the existing primary inside the same transaction.
 *  3. Post-registration hooks — webhook delivery is handed to the outbox
 *     (`enqueuePostHookEvent`) for retryable / idempotent dispatch; code
 *     hooks currently still run inline with ctx.
 */
export declare function createUserHooks(ctx: Context<{
    Bindings: Bindings;
    Variables: Variables;
}>, data: DataAdapters): (tenant_id: string, user: User) => Promise<{
    connection: string;
    email_verified: boolean;
    created_at: string;
    updated_at: string;
    user_id: string;
    provider: string;
    is_social: boolean;
    login_count: number;
    name?: string | undefined;
    username?: string | undefined;
    given_name?: string | undefined;
    phone_number?: string | undefined;
    phone_verified?: boolean | undefined;
    family_name?: string | undefined;
    profileData?: string | undefined;
    address?: {
        formatted?: string | undefined;
        street_address?: string | undefined;
        locality?: string | undefined;
        region?: string | undefined;
        postal_code?: string | undefined;
        country?: string | undefined;
    } | undefined;
    nickname?: string | undefined;
    picture?: string | undefined;
    locale?: string | undefined;
    linked_to?: string | undefined;
    app_metadata?: any;
    user_metadata?: any;
    middle_name?: string | undefined;
    preferred_username?: string | undefined;
    profile?: string | undefined;
    website?: string | undefined;
    gender?: string | undefined;
    birthdate?: string | undefined;
    zoneinfo?: string | undefined;
    verify_email?: boolean | undefined;
    last_ip?: string | undefined;
    last_login?: string | undefined;
    registration_completed_at?: string | undefined;
    email?: string | undefined;
    identities?: {
        connection: string;
        user_id: string;
        provider: string;
        isSocial: boolean;
        email?: string | undefined;
        email_verified?: boolean | undefined;
        phone_number?: string | undefined;
        phone_verified?: boolean | undefined;
        username?: string | undefined;
        access_token?: string | undefined;
        access_token_secret?: string | undefined;
        refresh_token?: string | undefined;
        profileData?: {
            [x: string]: any;
            email?: string | undefined;
            email_verified?: boolean | undefined;
            name?: string | undefined;
            username?: string | undefined;
            given_name?: string | undefined;
            phone_number?: string | undefined;
            phone_verified?: boolean | undefined;
            family_name?: string | undefined;
        } | undefined;
    }[] | undefined;
}>;
