• Create a typed reference to the Thing model for use in cross-model dependencies. Avoids circular imports by only importing the manifest, not the full implementation.

    Returns VersionedModelConstructor<
        InferData<
            {
                aliases: ObjectType<string[], false>;
                authors: VirtualType<MultilingualString[], false>;
                averageStarRating: VirtualType<unknown, false>;
                canonicalSlugName: StringType<false>;
                createdBy: StringType<true>;
                createdOn: DateType<true>;
                description: VirtualType<MultilingualString, false>;
                id: StringType<false>;
                label: ObjectType<string, false>;
                metadata: ObjectType<unknown, false>;
                numberOfReviews: VirtualType<unknown, false>;
                originalLanguage: StringType<false>;
                subtitle: VirtualType<MultilingualString, false>;
                sync: ObjectType<unknown, false>;
                urlID: VirtualType<unknown, false>;
                urls: ArrayType<StringType<false>, false>;
                userCanDelete: VirtualType<unknown, false>;
                userCanEdit: VirtualType<unknown, false>;
                userCanUpload: VirtualType<unknown, false>;
                userIsCreator: VirtualType<unknown, false>;
            },
        >,
        InferVirtual<
            {
                aliases: ObjectType<string[], false>;
                authors: VirtualType<MultilingualString[], false>;
                averageStarRating: VirtualType<unknown, false>;
                canonicalSlugName: StringType<false>;
                createdBy: StringType<true>;
                createdOn: DateType<true>;
                description: VirtualType<MultilingualString, false>;
                id: StringType<false>;
                label: ObjectType<string, false>;
                metadata: ObjectType<unknown, false>;
                numberOfReviews: VirtualType<unknown, false>;
                originalLanguage: StringType<false>;
                subtitle: VirtualType<MultilingualString, false>;
                sync: ObjectType<unknown, false>;
                urlID: VirtualType<unknown, false>;
                urls: ArrayType<StringType<false>, false>;
                userCanDelete: VirtualType<unknown, false>;
                userCanEdit: VirtualType<unknown, false>;
                userCanUpload: VirtualType<unknown, false>;
                userIsCreator: VirtualType<unknown, false>;
            },
        >,
        InferData<
            {
                aliases: ObjectType<string[], false>;
                authors: VirtualType<MultilingualString[], false>;
                averageStarRating: VirtualType<unknown, false>;
                canonicalSlugName: StringType<false>;
                createdBy: StringType<true>;
                createdOn: DateType<true>;
                description: VirtualType<MultilingualString, false>;
                id: StringType<false>;
                label: ObjectType<string, false>;
                metadata: ObjectType<unknown, false>;
                numberOfReviews: VirtualType<unknown, false>;
                originalLanguage: StringType<false>;
                subtitle: VirtualType<MultilingualString, false>;
                sync: ObjectType<unknown, false>;
                urlID: VirtualType<unknown, false>;
                urls: ArrayType<StringType<false>, false>;
                userCanDelete: VirtualType<unknown, false>;
                userCanEdit: VirtualType<unknown, false>;
                userCanUpload: VirtualType<unknown, false>;
                userIsCreator: VirtualType<unknown, false>;
            },
        > & InferVirtual<
            {
                aliases: ObjectType<string[], false>;
                authors: VirtualType<MultilingualString[], false>;
                averageStarRating: VirtualType<unknown, false>;
                canonicalSlugName: StringType<false>;
                createdBy: StringType<true>;
                createdOn: DateType<true>;
                description: VirtualType<MultilingualString, false>;
                id: StringType<false>;
                label: ObjectType<string, false>;
                metadata: ObjectType<unknown, false>;
                numberOfReviews: VirtualType<unknown, false>;
                originalLanguage: StringType<false>;
                subtitle: VirtualType<MultilingualString, false>;
                sync: ObjectType<unknown, false>;
                urlID: VirtualType<unknown, false>;
                urls: ArrayType<StringType<false>, false>;
                userCanDelete: VirtualType<unknown, false>;
                userCanEdit: VirtualType<unknown, false>;
                userCanUpload: VirtualType<unknown, false>;
                userIsCreator: VirtualType<unknown, false>;
            },
        > & ModelInstanceCore<
            InferData<
                {
                    aliases: ObjectType<string[], false>;
                    authors: VirtualType<MultilingualString[], false>;
                    averageStarRating: VirtualType<unknown, false>;
                    canonicalSlugName: StringType<false>;
                    createdBy: StringType<true>;
                    createdOn: DateType<true>;
                    description: VirtualType<MultilingualString, false>;
                    id: StringType<false>;
                    label: ObjectType<string, false>;
                    metadata: ObjectType<unknown, false>;
                    numberOfReviews: VirtualType<unknown, false>;
                    originalLanguage: StringType<false>;
                    subtitle: VirtualType<MultilingualString, false>;
                    sync: ObjectType<unknown, false>;
                    urlID: VirtualType<unknown, false>;
                    urls: ArrayType<StringType<false>, false>;
                    userCanDelete: VirtualType<unknown, false>;
                    userCanEdit: VirtualType<unknown, false>;
                    userCanUpload: VirtualType<unknown, false>;
                    userIsCreator: VirtualType<unknown, false>;
                },
            >,
            InferVirtual<
                {
                    aliases: ObjectType<string[], false>;
                    authors: VirtualType<MultilingualString[], false>;
                    averageStarRating: VirtualType<unknown, false>;
                    canonicalSlugName: StringType<false>;
                    createdBy: StringType<true>;
                    createdOn: DateType<true>;
                    description: VirtualType<MultilingualString, false>;
                    id: StringType<false>;
                    label: ObjectType<string, false>;
                    metadata: ObjectType<unknown, false>;
                    numberOfReviews: VirtualType<unknown, false>;
                    originalLanguage: StringType<false>;
                    subtitle: VirtualType<MultilingualString, false>;
                    sync: ObjectType<unknown, false>;
                    urlID: VirtualType<unknown, false>;
                    urls: ArrayType<StringType<false>, false>;
                    userCanDelete: VirtualType<unknown, false>;
                    userCanEdit: VirtualType<unknown, false>;
                    userCanUpload: VirtualType<unknown, false>;
                    userIsCreator: VirtualType<unknown, false>;
                },
            >,
        > & RevisionFieldMap & {} & ThingInstanceMethodsMap,
        "reviews"
        | "files",
    > & ThingStaticMethodsMap & CreateFromRowStatic<
        MergeManifestMethods<
            {
                camelToSnake: {
                    canonicalSlugName: "canonical_slug_name";
                    createdBy: "created_by";
                    createdOn: "created_on";
                    originalLanguage: "original_language";
                };
                hasRevisions: true;
                relations: readonly [
                    {
                        cardinality: "many";
                        hasRevisions: true;
                        name: "reviews";
                        sourceKey: "id";
                        targetKey: "thing_id";
                        targetTable: "reviews";
                    },
                    {
                        cardinality: "many";
                        hasRevisions: true;
                        name: "files";
                        sourceKey: "id";
                        targetKey: "id";
                        targetTable: "files";
                        through: {
                            sourceForeignKey: "thing_id";
                            table: "thing_files";
                            targetForeignKey: "file_id";
                        };
                    },
                ];
                schema: {
                    aliases: ObjectType<string[], false>;
                    authors: VirtualType<MultilingualString[], false>;
                    averageStarRating: VirtualType<unknown, false>;
                    canonicalSlugName: StringType<false>;
                    createdBy: StringType<true>;
                    createdOn: DateType<true>;
                    description: VirtualType<MultilingualString, false>;
                    id: StringType<false>;
                    label: ObjectType<string, false>;
                    metadata: ObjectType<unknown, false>;
                    numberOfReviews: VirtualType<unknown, false>;
                    originalLanguage: StringType<false>;
                    subtitle: VirtualType<MultilingualString, false>;
                    sync: ObjectType<unknown, false>;
                    urlID: VirtualType<unknown, false>;
                    urls: ArrayType<StringType<false>, false>;
                    userCanDelete: VirtualType<unknown, false>;
                    userCanEdit: VirtualType<unknown, false>;
                    userCanUpload: VirtualType<unknown, false>;
                    userIsCreator: VirtualType<unknown, false>;
                };
                tableName: "things";
            },
            ThingStaticMethodsMap,
            ThingInstanceMethodsMap,
        >,
    >