• Lazy reference to the PasswordResetToken model for use in other manifests.

    Returns ModelConstructor<
        InferData<
            {
                createdAt: DateType<false>;
                email: StringType<true>;
                expiresAt: DateType<true>;
                id: StringType<false>;
                ipAddress: StringType<false>;
                usedAt: DateType<false>;
                userID: StringType<true>;
            },
        >,
        InferVirtual<
            {
                createdAt: DateType<false>;
                email: StringType<true>;
                expiresAt: DateType<true>;
                id: StringType<false>;
                ipAddress: StringType<false>;
                usedAt: DateType<false>;
                userID: StringType<true>;
            },
        >,
        InferData<
            {
                createdAt: DateType<false>;
                email: StringType<true>;
                expiresAt: DateType<true>;
                id: StringType<false>;
                ipAddress: StringType<false>;
                usedAt: DateType<false>;
                userID: StringType<true>;
            },
        > & InferVirtual<
            {
                createdAt: DateType<false>;
                email: StringType<true>;
                expiresAt: DateType<true>;
                id: StringType<false>;
                ipAddress: StringType<false>;
                usedAt: DateType<false>;
                userID: StringType<true>;
            },
        > & ModelInstanceCore<
            InferData<
                {
                    createdAt: DateType<false>;
                    email: StringType<true>;
                    expiresAt: DateType<true>;
                    id: StringType<false>;
                    ipAddress: StringType<false>;
                    usedAt: DateType<false>;
                    userID: StringType<true>;
                },
            >,
            InferVirtual<
                {
                    createdAt: DateType<false>;
                    email: StringType<true>;
                    expiresAt: DateType<true>;
                    id: StringType<false>;
                    ipAddress: StringType<false>;
                    usedAt: DateType<false>;
                    userID: StringType<true>;
                },
            >,
        > & {
            getUser(): Promise<UserInstance>;
            isValid(): boolean;
            markAsUsed(): Promise<void>;
        },
        never,
    > & {
        create(
            userID: string,
            email: string,
            ipAddress?: string,
        ): Promise<
            InferData<
                {
                    createdAt: DateType<false>;
                    email: StringType<true>;
                    expiresAt: DateType<true>;
                    id: StringType<false>;
                    ipAddress: StringType<false>;
                    usedAt: DateType<false>;
                    userID: StringType<true>;
                },
            > & InferVirtual<
                {
                    createdAt: DateType<false>;
                    email: StringType<true>;
                    expiresAt: DateType<true>;
                    id: StringType<false>;
                    ipAddress: StringType<false>;
                    usedAt: DateType<false>;
                    userID: StringType<true>;
                },
            > & ModelInstanceCore<
                InferData<
                    {
                        createdAt: DateType<false>;
                        email: StringType<true>;
                        expiresAt: DateType<true>;
                        id: StringType<false>;
                        ipAddress: StringType<false>;
                        usedAt: DateType<false>;
                        userID: StringType<true>;
                    },
                >,
                InferVirtual<
                    {
                        createdAt: DateType<false>;
                        email: StringType<true>;
                        expiresAt: DateType<true>;
                        id: StringType<false>;
                        ipAddress: StringType<false>;
                        usedAt: DateType<false>;
                        userID: StringType<true>;
                    },
                >,
            > & {
                getUser(): Promise<UserInstance>;
                isValid(): boolean;
                markAsUsed(): Promise<void>;
            } & { user?: UserInstance },
        >;
        findByID(
            tokenID: string,
        ): Promise<
            InferData<
                {
                    createdAt: DateType<false>;
                    email: StringType<true>;
                    expiresAt: DateType<true>;
                    id: StringType<false>;
                    ipAddress: StringType<false>;
                    usedAt: DateType<false>;
                    userID: StringType<true>;
                },
            > & InferVirtual<
                {
                    createdAt: DateType<false>;
                    email: StringType<true>;
                    expiresAt: DateType<true>;
                    id: StringType<false>;
                    ipAddress: StringType<false>;
                    usedAt: DateType<false>;
                    userID: StringType<true>;
                },
            > & ModelInstanceCore<
                InferData<
                    {
                        createdAt: DateType<false>;
                        email: StringType<true>;
                        expiresAt: DateType<true>;
                        id: StringType<false>;
                        ipAddress: StringType<false>;
                        usedAt: DateType<false>;
                        userID: StringType<true>;
                    },
                >,
                InferVirtual<
                    {
                        createdAt: DateType<false>;
                        email: StringType<true>;
                        expiresAt: DateType<true>;
                        id: StringType<false>;
                        ipAddress: StringType<false>;
                        usedAt: DateType<false>;
                        userID: StringType<true>;
                    },
                >,
            > & {
                getUser(): Promise<UserInstance>;
                isValid(): boolean;
                markAsUsed(): Promise<void>;
            } & { user?: UserInstance },
        >;
        hasRecentRequest(email: string, cooldownHours: number): Promise<boolean>;
        invalidateAllForUser(userID: string): Promise<void>;
    } & CreateFromRowStatic<
        MergeManifestMethods<
            {
                camelToSnake: {
                    createdAt: "created_at";
                    expiresAt: "expires_at";
                    ipAddress: "ip_address";
                    usedAt: "used_at";
                    userID: "user_id";
                };
                hasRevisions: false;
                schema: {
                    createdAt: DateType<false>;
                    email: StringType<true>;
                    expiresAt: DateType<true>;
                    id: StringType<false>;
                    ipAddress: StringType<false>;
                    usedAt: DateType<false>;
                    userID: StringType<true>;
                };
                tableName: "password_reset_tokens";
            },
            {
                create(
                    userID: string,
                    email: string,
                    ipAddress?: string,
                ): Promise<
                    InferData<
                        {
                            createdAt: DateType<false>;
                            email: StringType<true>;
                            expiresAt: DateType<true>;
                            id: StringType<false>;
                            ipAddress: StringType<false>;
                            usedAt: DateType<false>;
                            userID: StringType<true>;
                        },
                    > & InferVirtual<
                        {
                            createdAt: DateType<false>;
                            email: StringType<true>;
                            expiresAt: DateType<true>;
                            id: StringType<false>;
                            ipAddress: StringType<false>;
                            usedAt: DateType<false>;
                            userID: StringType<true>;
                        },
                    > & ModelInstanceCore<
                        InferData<
                            {
                                createdAt: DateType<false>;
                                email: StringType<true>;
                                expiresAt: DateType<true>;
                                id: StringType<false>;
                                ipAddress: StringType<false>;
                                usedAt: DateType<false>;
                                userID: StringType<true>;
                            },
                        >,
                        InferVirtual<
                            {
                                createdAt: DateType<false>;
                                email: StringType<true>;
                                expiresAt: DateType<true>;
                                id: StringType<false>;
                                ipAddress: StringType<false>;
                                usedAt: DateType<false>;
                                userID: StringType<true>;
                            },
                        >,
                    > & {
                        getUser(): Promise<UserInstance>;
                        isValid(): boolean;
                        markAsUsed(): Promise<void>;
                    } & { user?: UserInstance },
                >;
                findByID(
                    tokenID: string,
                ): Promise<
                    InferData<
                        {
                            createdAt: DateType<false>;
                            email: StringType<true>;
                            expiresAt: DateType<true>;
                            id: StringType<false>;
                            ipAddress: StringType<false>;
                            usedAt: DateType<false>;
                            userID: StringType<true>;
                        },
                    > & InferVirtual<
                        {
                            createdAt: DateType<false>;
                            email: StringType<true>;
                            expiresAt: DateType<true>;
                            id: StringType<false>;
                            ipAddress: StringType<false>;
                            usedAt: DateType<false>;
                            userID: StringType<true>;
                        },
                    > & ModelInstanceCore<
                        InferData<
                            {
                                createdAt: DateType<false>;
                                email: StringType<true>;
                                expiresAt: DateType<true>;
                                id: StringType<false>;
                                ipAddress: StringType<false>;
                                usedAt: DateType<false>;
                                userID: StringType<true>;
                            },
                        >,
                        InferVirtual<
                            {
                                createdAt: DateType<false>;
                                email: StringType<true>;
                                expiresAt: DateType<true>;
                                id: StringType<false>;
                                ipAddress: StringType<false>;
                                usedAt: DateType<false>;
                                userID: StringType<true>;
                            },
                        >,
                    > & {
                        getUser(): Promise<UserInstance>;
                        isValid(): boolean;
                        markAsUsed(): Promise<void>;
                    } & { user?: UserInstance },
                >;
                hasRecentRequest(email: string, cooldownHours: number): Promise<boolean>;
                invalidateAllForUser(userID: string): Promise<void>;
            },
            {
                getUser(): Promise<UserInstance>;
                isValid(): boolean;
                markAsUsed(): Promise<void>;
            },
        >,
    >