import { Static } from "alepha";
import { CryptoProvider } from "alepha/crypto";
import { DateTimeProvider } from "alepha/datetime";
//#region ../../src/api/verifications/entities/verifications.d.ts
declare const verifications: import("alepha/orm").EntityPrimitive<import("zod").ZodObject<{
  id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
  createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
  updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
  version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
  type: import("zod").ZodEnum<{
    code: "code";
    link: "link";
  }>;
  target: import("zod").ZodString;
  purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>;
  code: import("zod").ZodString;
  verifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
  attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>;
}, import("zod/v4/core").$strip>>;
declare const verificationEntitySchema: import("zod").ZodObject<{
  id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
  createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
  updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
  version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
  type: import("zod").ZodEnum<{
    code: "code";
    link: "link";
  }>;
  target: import("zod").ZodString;
  purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>;
  code: import("zod").ZodString;
  verifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
  attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>;
}, import("zod/v4/core").$strip>;
declare const verificationEntityInsertSchema: import("alepha/orm").TObjectInsert<import("zod").ZodObject<{
  id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
  createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
  updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
  version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
  type: import("zod").ZodEnum<{
    code: "code";
    link: "link";
  }>;
  target: import("zod").ZodString;
  purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>;
  code: import("zod").ZodString;
  verifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
  attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>;
}, import("zod/v4/core").$strip>>;
type VerificationEntity = Static<typeof verifications.schema>;
//#endregion
//#region ../../src/api/verifications/schemas/verificationSettingsSchema.d.ts
declare const verificationSettingsSchema: import("zod").ZodObject<{
  code: import("zod").ZodObject<{
    maxAttempts: import("zod").ZodInt;
    codeLength: import("zod").ZodInt;
    codeExpiration: import("zod").ZodInt;
    verificationCooldown: import("zod").ZodInt;
    limitPerDay: import("zod").ZodInt;
  }, import("zod/v4/core").$strip>;
  link: import("zod").ZodObject<{
    maxAttempts: import("zod").ZodInt;
    codeExpiration: import("zod").ZodInt;
    verificationCooldown: import("zod").ZodInt;
    limitPerDay: import("zod").ZodInt;
  }, import("zod/v4/core").$strip>;
  purgeDays: import("zod").ZodInt;
}, import("zod/v4/core").$strip>;
type VerificationSettings = Static<typeof verificationSettingsSchema>;
//#endregion
//#region ../../src/api/verifications/parameters/VerificationParameters.d.ts
/**
 * Verification settings configuration atom
 */
declare const verificationOptions: import("alepha").Atom<import("zod").ZodObject<{
  code: import("zod").ZodObject<{
    maxAttempts: import("zod").ZodInt;
    codeLength: import("zod").ZodInt;
    codeExpiration: import("zod").ZodInt;
    verificationCooldown: import("zod").ZodInt;
    limitPerDay: import("zod").ZodInt;
  }, import("zod/v4/core").$strip>;
  link: import("zod").ZodObject<{
    maxAttempts: import("zod").ZodInt;
    codeExpiration: import("zod").ZodInt;
    verificationCooldown: import("zod").ZodInt;
    limitPerDay: import("zod").ZodInt;
  }, import("zod/v4/core").$strip>;
  purgeDays: import("zod").ZodInt;
}, import("zod/v4/core").$strip>, "alepha.api.verifications.options">;
type VerificationOptions = Static<typeof verificationOptions.schema>;
declare module "alepha" {
  interface State {
    [verificationOptions.key]: VerificationOptions;
  }
}
declare class VerificationParameters {
  protected readonly options: Readonly<{
    code: {
      maxAttempts: number;
      codeLength: number;
      codeExpiration: number;
      verificationCooldown: number;
      limitPerDay: number;
    };
    link: {
      maxAttempts: number;
      codeExpiration: number;
      verificationCooldown: number;
      limitPerDay: number;
    };
    purgeDays: number;
  }>;
  get<K extends keyof VerificationSettings>(key: K): VerificationSettings[K];
}
//#endregion
//#region ../../src/api/verifications/schemas/requestVerificationCodeResponseSchema.d.ts
declare const requestVerificationCodeResponseSchema: import("zod").ZodObject<{
  token: import("zod").ZodString;
  codeExpiration: import("zod").ZodInt;
  verificationCooldown: import("zod").ZodInt;
  maxVerificationAttempts: import("zod").ZodInt;
}, import("zod/v4/core").$strip>;
type RequestVerificationResponse = Static<typeof requestVerificationCodeResponseSchema>;
//#endregion
//#region ../../src/api/verifications/schemas/validateVerificationCodeResponseSchema.d.ts
declare const validateVerificationCodeResponseSchema: import("zod").ZodObject<{
  ok: import("zod").ZodBoolean;
  alreadyVerified: import("zod").ZodOptional<import("zod").ZodBoolean>;
}, import("zod/v4/core").$strip>;
type ValidateVerificationCodeResponse = Static<typeof validateVerificationCodeResponseSchema>;
//#endregion
//#region ../../src/api/verifications/schemas/verificationTypeEnumSchema.d.ts
declare const verificationTypeEnumSchema: import("zod").ZodEnum<{
  code: "code";
  link: "link";
}>;
type VerificationTypeEnum = Static<typeof verificationTypeEnumSchema>;
//#endregion
//#region ../../src/api/verifications/services/VerificationService.d.ts
declare class VerificationService {
  protected readonly log: import("alepha/logger").Logger;
  protected readonly dateTimeProvider: DateTimeProvider;
  protected readonly crypto: CryptoProvider;
  protected readonly verificationParameters: VerificationParameters;
  protected readonly verificationRepository: import("alepha/orm").Repository<import("zod").ZodObject<{
    id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
    createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
    type: import("zod").ZodEnum<{
      code: "code";
      link: "link";
    }>;
    target: import("zod").ZodString;
    purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>;
    code: import("zod").ZodString;
    verifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
    attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>;
  }, import("zod/v4/core").$strip>>;
  findByEntry(entry: VerificationEntry): Promise<VerificationEntity>;
  findRecentsByEntry(entry: VerificationEntry): Promise<import("alepha/orm").PgStatic<import("zod").ZodObject<{
    id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
    createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
    type: import("zod").ZodEnum<{
      code: "code";
      link: "link";
    }>;
    target: import("zod").ZodString;
    purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>;
    code: import("zod").ZodString;
    verifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
    attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>;
  }, import("zod/v4/core").$strip>, import("alepha/orm").PgRelationMap<import("zod").ZodObject<{
    id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
    createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
    type: import("zod").ZodEnum<{
      code: "code";
      link: "link";
    }>;
    target: import("zod").ZodString;
    purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>;
    code: import("zod").ZodString;
    verifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
    attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>;
  }, import("zod/v4/core").$strip>>>[]>;
  /**
   * Creates a verification entry and returns the token.
   * The caller is responsible for sending notifications with the token.
   * This allows for context-specific notifications (e.g., password reset vs email verification).
   */
  createVerification(entry: VerificationEntry): Promise<RequestVerificationResponse>;
  verifyCode(entry: VerificationEntry, code: string): Promise<ValidateVerificationCodeResponse>;
  hashCode(code: string): string;
  generateToken(type: VerificationTypeEnum): string;
}
interface VerificationEntry {
  type: VerificationTypeEnum;
  target: string;
  /**
   * Logical purpose bucket. Cooldown and daily-limit checks are scoped to
   * `(type, target, purpose)`, so flows that share a `(type, target)` pair
   * — e.g. email verification and password reset, both `type: "code"` on the
   * same email — get independent rate-limit windows instead of colliding.
   *
   * Defaults to `"default"` when omitted (back-compatible with callers and
   * rows that predate this field).
   */
  purpose?: string;
}
//#endregion
//#region ../../src/api/verifications/controllers/VerificationController.d.ts
declare class VerificationController {
  protected readonly verificationService: VerificationService;
  readonly url = "/verifications";
  readonly group = "verifications";
  readonly validateVerificationCode: import("alepha/server").ActionPrimitiveFn<{
    params: import("zod").ZodObject<{
      type: import("zod").ZodEnum<{
        code: "code";
        link: "link";
      }>;
    }, import("zod/v4/core").$strip>;
    body: import("zod").ZodObject<{
      target: import("zod").ZodString;
      token: import("zod").ZodString;
    }, import("zod/v4/core").$strip>;
    response: import("zod").ZodObject<{
      ok: import("zod").ZodBoolean;
      alreadyVerified: import("zod").ZodOptional<import("zod").ZodBoolean>;
    }, import("zod/v4/core").$strip>;
  }>;
}
//#endregion
//#region ../../src/api/verifications/jobs/VerificationJobs.d.ts
declare class VerificationJobs {
  protected readonly verificationRepository: import("alepha/orm").Repository<import("zod").ZodObject<{
    id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
    createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
    version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
    type: import("zod").ZodEnum<{
      code: "code";
      link: "link";
    }>;
    target: import("zod").ZodString;
    purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>;
    code: import("zod").ZodString;
    verifiedAt: import("zod").ZodOptional<import("zod").ZodString>;
    attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>;
  }, import("zod/v4/core").$strip>>;
  protected readonly verificationParameters: VerificationParameters;
  protected readonly dateTimeProvider: DateTimeProvider;
  readonly cleanExpired: import("alepha/scheduler").SchedulerPrimitive;
}
//#endregion
//#region ../../src/api/verifications/index.d.ts
/**
 * Email and phone verification workflows.
 *
 * **Features:**
 * - Verification token generation
 * - Verification code sending
 * - Verification completion tracking
 * - Resend functionality
 *
 * @module alepha.api.verifications
 */
declare const AlephaApiVerification: import("alepha").Service<import("alepha").Module>;
//#endregion
export { AlephaApiVerification, RequestVerificationResponse, ValidateVerificationCodeResponse, VerificationController, VerificationEntity, VerificationEntry, VerificationJobs, VerificationOptions, VerificationParameters, VerificationService, VerificationTypeEnum, requestVerificationCodeResponseSchema, validateVerificationCodeResponseSchema, verificationEntityInsertSchema, verificationEntitySchema, verificationOptions, verificationTypeEnumSchema, verifications };
//# sourceMappingURL=index.d.ts.map