import { DataAdapters } from "@authhero/adapter-interfaces";
import { EntityHooksConfig } from "../types/AuthHeroConfig";
/**
 * Options for the entity hooks wrapper
 */
export interface EntityHooksWrapperOptions {
    /** The tenant ID for the hook context */
    tenantId: string;
    /** Entity hooks configuration */
    entityHooks?: EntityHooksConfig;
}
/**
 * Adds entity hooks to data adapters.
 * This wraps each entity adapter's CRUD methods to call the configured hooks.
 *
 * Hooks must be provided as arrays. Multiple hooks are chained together with
 * proper return value handling for "before" hooks.
 *
 * @example Single hook
 * ```typescript
 * const wrappedData = addEntityHooks(data, {
 *   tenantId: ctx.var.tenant_id,
 *   entityHooks: {
 *     roles: [{
 *       afterCreate: async (ctx, role) => {
 *         await syncToChildTenants(ctx, role);
 *       },
 *     }],
 *   },
 * });
 * ```
 *
 * @example Chaining multiple hooks
 * ```typescript
 * const wrappedData = addEntityHooks(data, {
 *   tenantId: ctx.var.tenant_id,
 *   entityHooks: {
 *     roles: [syncHooks, auditHooks], // Called in order
 *   },
 * });
 * ```
 */
export declare function addEntityHooks(data: DataAdapters, options: EntityHooksWrapperOptions): DataAdapters;
