import * as better_auth from 'better-auth';
import { Surreal } from 'surrealdb';
import { AdapterDebugLogs } from 'better-auth/adapters';

/**
 * ID generation strategies for SurrealDB records.
 */
type IdGenerator = "sdk.UUIDv4" | "sdk.UUIDv7" | "surreal" | "surreal.ULID" | "surreal.UUID" | "surreal.UUIDv4" | "surreal.UUIDv7" | "surreal.guid";
/**
 * Configuration options for the SurrealDB adapter.
 */
interface SurrealDBAdapterConfig {
    /** Enable debug logging for adapter operations. */
    debugLogs?: AdapterDebugLogs;
    /** Use plural table names (e.g., 'users' instead of 'user'). @default false */
    usePlural?: boolean;
    /** ID generation strategy. @default undefined (uses Better Auth default) */
    idGenerator?: IdGenerator;
    /** Allow passing custom IDs in data objects. @default false */
    allowPassingId?: boolean;
}
/**
 * Parameters for schema generation from Better Auth tables.
 */
interface GenerateSchemaParams {
    file?: string;
    tables: Record<string, any>;
    getModelName: (model: string) => string;
    getFieldName: (opts: {
        model: string;
        field: string;
    }) => string;
    getReferencedModel: (tableName: string, fieldName: string) => string | null;
}
/**
 * Result of schema generation with path and content.
 */
interface GenerateSchemaResult {
    path: string;
    code: string;
    overwrite: boolean;
}

declare const surrealdbAdapter: (db: Surreal, config?: SurrealDBAdapterConfig) => (options: better_auth.BetterAuthOptions) => better_auth.Adapter;

/**
 * Schema generation utilities for SurrealDB Better Auth adapter.
 * Generates SurrealDB schema definitions with proper field types and indexes.
 */

/**
 * Generates SurrealDB schema from Better Auth table definitions with proper field types and indexes.
 */
declare function generateSchema(params: GenerateSchemaParams): GenerateSchemaResult;

export { type IdGenerator, type SurrealDBAdapterConfig, generateSchema, surrealdbAdapter };
