import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';

/**
 * @spfn/auth - Verification Codes Entity
 *
 * Stores verification codes for email and phone verification
 * Codes expire after a configurable time period
 */
declare const verificationCodes: drizzle_orm_pg_core.PgTableWithColumns<{
    name: "verification_codes";
    schema: string;
    columns: {
        createdAt: drizzle_orm_pg_core.PgColumn<{
            name: "created_at";
            tableName: "verification_codes";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        updatedAt: drizzle_orm_pg_core.PgColumn<{
            name: "updated_at";
            tableName: "verification_codes";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        id: drizzle_orm_pg_core.PgColumn<{
            name: "id";
            tableName: "verification_codes";
            dataType: "number";
            columnType: "PgBigSerial53";
            data: number;
            driverParam: number;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        target: drizzle_orm_pg_core.PgColumn<{
            name: "target";
            tableName: "verification_codes";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        targetType: drizzle_orm_pg_core.PgColumn<{
            name: "target_type";
            tableName: "verification_codes";
            dataType: "string";
            columnType: "PgText";
            data: "email" | "phone";
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: ["email", "phone"];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        code: drizzle_orm_pg_core.PgColumn<{
            name: "code";
            tableName: "verification_codes";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        purpose: drizzle_orm_pg_core.PgColumn<{
            name: "purpose";
            tableName: "verification_codes";
            dataType: "string";
            columnType: "PgText";
            data: "registration" | "login" | "password_reset" | "email_change" | "phone_change";
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: ["registration", "login", "password_reset", "email_change", "phone_change"];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        expiresAt: drizzle_orm_pg_core.PgColumn<{
            name: "expires_at";
            tableName: "verification_codes";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        usedAt: drizzle_orm_pg_core.PgColumn<{
            name: "used_at";
            tableName: "verification_codes";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        attempts: drizzle_orm_pg_core.PgColumn<{
            name: "attempts";
            tableName: "verification_codes";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    };
    dialect: "pg";
}>;
type VerificationCode = typeof verificationCodes.$inferSelect;
type NewVerificationCode = typeof verificationCodes.$inferInsert;
type VerificationTargetType = 'email' | 'phone';
type VerificationPurpose = 'registration' | 'login' | 'password_reset' | 'email_change' | 'phone_change';

export { type NewVerificationCode, type VerificationCode, type VerificationPurpose, type VerificationTargetType, verificationCodes };
