default: 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>;
        },
    >,
> = ...