import { ModelSchema, type InferModelOutput } from '@declaro/core';
import { ZodModel } from '@declaro/zod';
import { z } from 'zod/v4';
export declare enum AuthSubject {
    ACCESS = "ACCESS",
    CONFIRM = "CONFIRM",
    INVITE = "INVITE",
    RECOVER = "RECOVER",
    REFRESH = "REFRESH"
}
export declare const AuthPayloadModel: ZodModel<"AuthPayload", z.ZodObject<{
    id: z.ZodString;
    email: z.ZodEmail;
    nickname: z.ZodString;
    given_name: z.ZodOptional<z.ZodString>;
    family_name: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    iat: z.ZodNumber;
    exp: z.ZodNumber;
    sub: z.ZodEnum<typeof AuthSubject>;
}, z.core.$strip>>;
export type IAuthPayload = InferModelOutput<typeof AuthPayloadModel>;
declare const AuthSessionInputModel: ZodModel<"AuthSessionInput", z.ZodObject<{
    id: z.ZodOptional<z.ZodString>;
    jwt: z.ZodJWT;
    claims: z.ZodOptional<z.ZodArray<z.ZodString>>;
    roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>>;
export type IAuthSessionInput = InferModelOutput<typeof AuthSessionInputModel>;
export declare const AuthSessionModel: ZodModel<"AuthSession", z.ZodObject<{
    id: z.ZodString;
    jwt: z.ZodJWT;
    jwtPayload: z.ZodObject<{
        id: z.ZodString;
        email: z.ZodEmail;
        nickname: z.ZodString;
        given_name: z.ZodOptional<z.ZodString>;
        family_name: z.ZodOptional<z.ZodString>;
        name: z.ZodString;
        iat: z.ZodNumber;
        exp: z.ZodNumber;
        sub: z.ZodEnum<typeof AuthSubject>;
    }, z.core.$strip>;
    expires: z.ZodDate;
    issued: z.ZodDate;
    roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
    claims: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>>;
export type IAuthSession = InferModelOutput<typeof AuthSessionModel>;
export declare const AuthSessionSchema: ModelSchema<"AuthSession", {
    [x: string]: import("@declaro/core").IAnyModel;
    authPayload: ZodModel<"AuthPayload", z.ZodObject<{
        id: z.ZodString;
        email: z.ZodEmail;
        nickname: z.ZodString;
        given_name: z.ZodOptional<z.ZodString>;
        family_name: z.ZodOptional<z.ZodString>;
        name: z.ZodString;
        iat: z.ZodNumber;
        exp: z.ZodNumber;
        sub: z.ZodEnum<typeof AuthSubject>;
    }, z.core.$strip>>;
    authSessionInput: ZodModel<"AuthSessionInput", z.ZodObject<{
        id: z.ZodOptional<z.ZodString>;
        jwt: z.ZodJWT;
        claims: z.ZodOptional<z.ZodArray<z.ZodString>>;
        roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    authSession: ZodModel<"AuthSession", z.ZodObject<{
        id: z.ZodString;
        jwt: z.ZodJWT;
        jwtPayload: z.ZodObject<{
            id: z.ZodString;
            email: z.ZodEmail;
            nickname: z.ZodString;
            given_name: z.ZodOptional<z.ZodString>;
            family_name: z.ZodOptional<z.ZodString>;
            name: z.ZodString;
            iat: z.ZodNumber;
            exp: z.ZodNumber;
            sub: z.ZodEnum<typeof AuthSubject>;
        }, z.core.$strip>;
        expires: z.ZodDate;
        issued: z.ZodDate;
        roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
        claims: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
}, undefined>;
export {};
