• 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 & {
            deleteAllRevisions<
                TThis extends
                    VersionedModelInstance<
                        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>;
                            },
                        >,
                    > = VersionedModelInstance<
                    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>;
                        },
                    >,
                >,
            >(
                this: TThis,
                user?: RevisionActor,
                options?: RevisionMetadata,
            ): Promise<TThis>;
            newRevision<
                TThis extends
                    VersionedModelInstance<
                        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>;
                            },
                        >,
                    > = VersionedModelInstance<
                    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>;
                        },
                    >,
                >,
            >(
                this: TThis,
                user: RevisionActor,
                options?: RevisionMetadata,
            ): Promise<TThis>;
        } & ThingInstanceMethodsMap,
        "reviews"
        | "files",
    > & {
        getLabel(thing: ThingLabelSource, language: string): string;
        getWithData(
            id: string,
            options?: { withFiles?: boolean; withReviewMetrics?: boolean },
        ): Promise<
            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 & {
                deleteAllRevisions<
                    TThis extends
                        VersionedModelInstance<
                            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>;
                                },
                            >,
                        > = VersionedModelInstance<
                        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>;
                            },
                        >,
                    >,
                >(
                    this: TThis,
                    user?: RevisionActor,
                    options?: RevisionMetadata,
                ): Promise<TThis>;
                newRevision<
                    TThis extends
                        VersionedModelInstance<
                            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>;
                                },
                            >,
                        > = VersionedModelInstance<
                        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>;
                            },
                        >,
                    >,
                >(
                    this: TThis,
                    user: RevisionActor,
                    options?: RevisionMetadata,
                ): Promise<TThis>;
            } & object & ThingRelations & ThingInstanceMethodsMap,
        >;
        lookupByURL(
            url: string,
            userID?: string,
        ): Promise<
            (
                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 & {
                    deleteAllRevisions<
                        TThis extends
                            VersionedModelInstance<
                                InferData<
                                    {
                                        aliases: ObjectType<(...)[], false>;
                                        authors: VirtualType<(...)[], 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>;
                                        userCanDelete: VirtualType<unknown, false>;
                                        userCanEdit: VirtualType<unknown, false>;
                                        userCanUpload: VirtualType<unknown, false>;
                                        userIsCreator: VirtualType<unknown, false>;
                                    },
                                >,
                                InferVirtual<
                                    {
                                        aliases: ObjectType<(...)[], false>;
                                        authors: VirtualType<(...)[], 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>;
                                        userCanDelete: VirtualType<unknown, false>;
                                        userCanEdit: VirtualType<unknown, false>;
                                        userCanUpload: VirtualType<unknown, false>;
                                        userIsCreator: VirtualType<unknown, false>;
                                    },
                                >,
                            > = VersionedModelInstance<
                            InferData<
                                {
                                    aliases: ObjectType<(...)[], false>;
                                    authors: VirtualType<(...)[], 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>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userCanEdit: VirtualType<unknown, false>;
                                    userCanUpload: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                            InferVirtual<
                                {
                                    aliases: ObjectType<(...)[], false>;
                                    authors: VirtualType<(...)[], 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>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userCanEdit: VirtualType<unknown, false>;
                                    userCanUpload: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                        >,
                    >(
                        this: TThis,
                        user?: RevisionActor,
                        options?: RevisionMetadata,
                    ): Promise<TThis>;
                    newRevision<
                        TThis extends
                            VersionedModelInstance<
                                InferData<
                                    {
                                        aliases: ObjectType<(...)[], false>;
                                        authors: VirtualType<(...)[], 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>;
                                        userCanDelete: VirtualType<unknown, false>;
                                        userCanEdit: VirtualType<unknown, false>;
                                        userCanUpload: VirtualType<unknown, false>;
                                        userIsCreator: VirtualType<unknown, false>;
                                    },
                                >,
                                InferVirtual<
                                    {
                                        aliases: ObjectType<(...)[], false>;
                                        authors: VirtualType<(...)[], 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>;
                                        userCanDelete: VirtualType<unknown, false>;
                                        userCanEdit: VirtualType<unknown, false>;
                                        userCanUpload: VirtualType<unknown, false>;
                                        userIsCreator: VirtualType<unknown, false>;
                                    },
                                >,
                            > = VersionedModelInstance<
                            InferData<
                                {
                                    aliases: ObjectType<(...)[], false>;
                                    authors: VirtualType<(...)[], 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>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userCanEdit: VirtualType<unknown, false>;
                                    userCanUpload: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                            InferVirtual<
                                {
                                    aliases: ObjectType<(...)[], false>;
                                    authors: VirtualType<(...)[], 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>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userCanEdit: VirtualType<unknown, false>;
                                    userCanUpload: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                        >,
                    >(
                        this: TThis,
                        user: RevisionActor,
                        options?: RevisionMetadata,
                    ): Promise<TThis>;
                } & object & ThingRelations & ThingInstanceMethodsMap
            )[],
        >;
    } & 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";
            },
            {
                getLabel(thing: ThingLabelSource, language: string): string;
                getWithData(
                    id: string,
                    options?: { withFiles?: boolean; withReviewMetrics?: boolean },
                ): Promise<
                    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<(...)[], false>;
                                authors: VirtualType<(...)[], 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>;
                                userCanDelete: VirtualType<unknown, false>;
                                userCanEdit: VirtualType<unknown, false>;
                                userCanUpload: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        >,
                        InferVirtual<
                            {
                                aliases: ObjectType<(...)[], false>;
                                authors: VirtualType<(...)[], 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>;
                                userCanDelete: VirtualType<unknown, false>;
                                userCanEdit: VirtualType<unknown, false>;
                                userCanUpload: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        >,
                    > & RevisionFieldMap & {
                        deleteAllRevisions<
                            TThis extends
                                VersionedModelInstance<
                                    InferData<
                                        {
                                            aliases: ObjectType<(...), (...)>;
                                            authors: VirtualType<(...), (...)>;
                                            averageStarRating: VirtualType<(...), (...)>;
                                            canonicalSlugName: StringType<(...)>;
                                            createdBy: StringType<(...)>;
                                            createdOn: DateType<(...)>;
                                            description: VirtualType<(...), (...)>;
                                            id: StringType<(...)>;
                                            label: ObjectType<(...), (...)>;
                                            metadata: ObjectType<(...), (...)>;
                                            numberOfReviews: VirtualType<(...), (...)>;
                                            originalLanguage: StringType<(...)>;
                                            subtitle: VirtualType<(...), (...)>;
                                            sync: ObjectType<(...), (...)>;
                                            urlID: VirtualType<(...), (...)>;
                                            urls: ArrayType<(...), (...)>;
                                            userCanDelete: VirtualType<(...), (...)>;
                                            userCanEdit: VirtualType<(...), (...)>;
                                            userCanUpload: VirtualType<(...), (...)>;
                                            userIsCreator: VirtualType<(...), (...)>;
                                        },
                                    >,
                                    InferVirtual<
                                        {
                                            aliases: ObjectType<(...), (...)>;
                                            authors: VirtualType<(...), (...)>;
                                            averageStarRating: VirtualType<(...), (...)>;
                                            canonicalSlugName: StringType<(...)>;
                                            createdBy: StringType<(...)>;
                                            createdOn: DateType<(...)>;
                                            description: VirtualType<(...), (...)>;
                                            id: StringType<(...)>;
                                            label: ObjectType<(...), (...)>;
                                            metadata: ObjectType<(...), (...)>;
                                            numberOfReviews: VirtualType<(...), (...)>;
                                            originalLanguage: StringType<(...)>;
                                            subtitle: VirtualType<(...), (...)>;
                                            sync: ObjectType<(...), (...)>;
                                            urlID: VirtualType<(...), (...)>;
                                            urls: ArrayType<(...), (...)>;
                                            userCanDelete: VirtualType<(...), (...)>;
                                            userCanEdit: VirtualType<(...), (...)>;
                                            userCanUpload: VirtualType<(...), (...)>;
                                            userIsCreator: VirtualType<(...), (...)>;
                                        },
                                    >,
                                > = VersionedModelInstance<
                                InferData<
                                    {
                                        aliases: ObjectType<(...), (...)>;
                                        authors: VirtualType<(...), (...)>;
                                        averageStarRating: VirtualType<(...), (...)>;
                                        canonicalSlugName: StringType<(...)>;
                                        createdBy: StringType<(...)>;
                                        createdOn: DateType<(...)>;
                                        description: VirtualType<(...), (...)>;
                                        id: StringType<(...)>;
                                        label: ObjectType<(...), (...)>;
                                        metadata: ObjectType<(...), (...)>;
                                        numberOfReviews: VirtualType<(...), (...)>;
                                        originalLanguage: StringType<(...)>;
                                        subtitle: VirtualType<(...), (...)>;
                                        sync: ObjectType<(...), (...)>;
                                        urlID: VirtualType<(...), (...)>;
                                        urls: ArrayType<(...), (...)>;
                                        userCanDelete: VirtualType<(...), (...)>;
                                        userCanEdit: VirtualType<(...), (...)>;
                                        userCanUpload: VirtualType<(...), (...)>;
                                        userIsCreator: VirtualType<(...), (...)>;
                                    },
                                >,
                                InferVirtual<
                                    {
                                        aliases: ObjectType<(...), (...)>;
                                        authors: VirtualType<(...), (...)>;
                                        averageStarRating: VirtualType<(...), (...)>;
                                        canonicalSlugName: StringType<(...)>;
                                        createdBy: StringType<(...)>;
                                        createdOn: DateType<(...)>;
                                        description: VirtualType<(...), (...)>;
                                        id: StringType<(...)>;
                                        label: ObjectType<(...), (...)>;
                                        metadata: ObjectType<(...), (...)>;
                                        numberOfReviews: VirtualType<(...), (...)>;
                                        originalLanguage: StringType<(...)>;
                                        subtitle: VirtualType<(...), (...)>;
                                        sync: ObjectType<(...), (...)>;
                                        urlID: VirtualType<(...), (...)>;
                                        urls: ArrayType<(...), (...)>;
                                        userCanDelete: VirtualType<(...), (...)>;
                                        userCanEdit: VirtualType<(...), (...)>;
                                        userCanUpload: VirtualType<(...), (...)>;
                                        userIsCreator: VirtualType<(...), (...)>;
                                    },
                                >,
                            >,
                        >(
                            this: TThis,
                            user?: RevisionActor,
                            options?: RevisionMetadata,
                        ): Promise<TThis>;
                        newRevision<
                            TThis extends
                                VersionedModelInstance<
                                    InferData<
                                        {
                                            aliases: ObjectType<(...), (...)>;
                                            authors: VirtualType<(...), (...)>;
                                            averageStarRating: VirtualType<(...), (...)>;
                                            canonicalSlugName: StringType<(...)>;
                                            createdBy: StringType<(...)>;
                                            createdOn: DateType<(...)>;
                                            description: VirtualType<(...), (...)>;
                                            id: StringType<(...)>;
                                            label: ObjectType<(...), (...)>;
                                            metadata: ObjectType<(...), (...)>;
                                            numberOfReviews: VirtualType<(...), (...)>;
                                            originalLanguage: StringType<(...)>;
                                            subtitle: VirtualType<(...), (...)>;
                                            sync: ObjectType<(...), (...)>;
                                            urlID: VirtualType<(...), (...)>;
                                            urls: ArrayType<(...), (...)>;
                                            userCanDelete: VirtualType<(...), (...)>;
                                            userCanEdit: VirtualType<(...), (...)>;
                                            userCanUpload: VirtualType<(...), (...)>;
                                            userIsCreator: VirtualType<(...), (...)>;
                                        },
                                    >,
                                    InferVirtual<
                                        {
                                            aliases: ObjectType<(...), (...)>;
                                            authors: VirtualType<(...), (...)>;
                                            averageStarRating: VirtualType<(...), (...)>;
                                            canonicalSlugName: StringType<(...)>;
                                            createdBy: StringType<(...)>;
                                            createdOn: DateType<(...)>;
                                            description: VirtualType<(...), (...)>;
                                            id: StringType<(...)>;
                                            label: ObjectType<(...), (...)>;
                                            metadata: ObjectType<(...), (...)>;
                                            numberOfReviews: VirtualType<(...), (...)>;
                                            originalLanguage: StringType<(...)>;
                                            subtitle: VirtualType<(...), (...)>;
                                            sync: ObjectType<(...), (...)>;
                                            urlID: VirtualType<(...), (...)>;
                                            urls: ArrayType<(...), (...)>;
                                            userCanDelete: VirtualType<(...), (...)>;
                                            userCanEdit: VirtualType<(...), (...)>;
                                            userCanUpload: VirtualType<(...), (...)>;
                                            userIsCreator: VirtualType<(...), (...)>;
                                        },
                                    >,
                                > = VersionedModelInstance<
                                InferData<
                                    {
                                        aliases: ObjectType<(...), (...)>;
                                        authors: VirtualType<(...), (...)>;
                                        averageStarRating: VirtualType<(...), (...)>;
                                        canonicalSlugName: StringType<(...)>;
                                        createdBy: StringType<(...)>;
                                        createdOn: DateType<(...)>;
                                        description: VirtualType<(...), (...)>;
                                        id: StringType<(...)>;
                                        label: ObjectType<(...), (...)>;
                                        metadata: ObjectType<(...), (...)>;
                                        numberOfReviews: VirtualType<(...), (...)>;
                                        originalLanguage: StringType<(...)>;
                                        subtitle: VirtualType<(...), (...)>;
                                        sync: ObjectType<(...), (...)>;
                                        urlID: VirtualType<(...), (...)>;
                                        urls: ArrayType<(...), (...)>;
                                        userCanDelete: VirtualType<(...), (...)>;
                                        userCanEdit: VirtualType<(...), (...)>;
                                        userCanUpload: VirtualType<(...), (...)>;
                                        userIsCreator: VirtualType<(...), (...)>;
                                    },
                                >,
                                InferVirtual<
                                    {
                                        aliases: ObjectType<(...), (...)>;
                                        authors: VirtualType<(...), (...)>;
                                        averageStarRating: VirtualType<(...), (...)>;
                                        canonicalSlugName: StringType<(...)>;
                                        createdBy: StringType<(...)>;
                                        createdOn: DateType<(...)>;
                                        description: VirtualType<(...), (...)>;
                                        id: StringType<(...)>;
                                        label: ObjectType<(...), (...)>;
                                        metadata: ObjectType<(...), (...)>;
                                        numberOfReviews: VirtualType<(...), (...)>;
                                        originalLanguage: StringType<(...)>;
                                        subtitle: VirtualType<(...), (...)>;
                                        sync: ObjectType<(...), (...)>;
                                        urlID: VirtualType<(...), (...)>;
                                        urls: ArrayType<(...), (...)>;
                                        userCanDelete: VirtualType<(...), (...)>;
                                        userCanEdit: VirtualType<(...), (...)>;
                                        userCanUpload: VirtualType<(...), (...)>;
                                        userIsCreator: VirtualType<(...), (...)>;
                                    },
                                >,
                            >,
                        >(
                            this: TThis,
                            user: RevisionActor,
                            options?: RevisionMetadata,
                        ): Promise<TThis>;
                    } & object & ThingRelations & ThingInstanceMethodsMap,
                >;
                lookupByURL(
                    url: string,
                    userID?: string,
                ): Promise<
                    (
                        InferData<
                            {
                                aliases: ObjectType<(...)[], false>;
                                authors: VirtualType<(...)[], 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>;
                                userCanDelete: VirtualType<unknown, false>;
                                userCanEdit: VirtualType<unknown, false>;
                                userCanUpload: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        > & InferVirtual<
                            {
                                aliases: ObjectType<(...)[], false>;
                                authors: VirtualType<(...)[], 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>;
                                userCanDelete: VirtualType<unknown, false>;
                                userCanEdit: VirtualType<unknown, false>;
                                userCanUpload: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        > & ModelInstanceCore<
                            InferData<
                                {
                                    aliases: ObjectType<(...), (...)>;
                                    authors: VirtualType<(...), (...)>;
                                    averageStarRating: VirtualType<(...), (...)>;
                                    canonicalSlugName: StringType<(...)>;
                                    createdBy: StringType<(...)>;
                                    createdOn: DateType<(...)>;
                                    description: VirtualType<(...), (...)>;
                                    id: StringType<(...)>;
                                    label: ObjectType<(...), (...)>;
                                    metadata: ObjectType<(...), (...)>;
                                    numberOfReviews: VirtualType<(...), (...)>;
                                    originalLanguage: StringType<(...)>;
                                    subtitle: VirtualType<(...), (...)>;
                                    sync: ObjectType<(...), (...)>;
                                    urlID: VirtualType<(...), (...)>;
                                    urls: ArrayType<(...), (...)>;
                                    userCanDelete: VirtualType<(...), (...)>;
                                    userCanEdit: VirtualType<(...), (...)>;
                                    userCanUpload: VirtualType<(...), (...)>;
                                    userIsCreator: VirtualType<(...), (...)>;
                                },
                            >,
                            InferVirtual<
                                {
                                    aliases: ObjectType<(...), (...)>;
                                    authors: VirtualType<(...), (...)>;
                                    averageStarRating: VirtualType<(...), (...)>;
                                    canonicalSlugName: StringType<(...)>;
                                    createdBy: StringType<(...)>;
                                    createdOn: DateType<(...)>;
                                    description: VirtualType<(...), (...)>;
                                    id: StringType<(...)>;
                                    label: ObjectType<(...), (...)>;
                                    metadata: ObjectType<(...), (...)>;
                                    numberOfReviews: VirtualType<(...), (...)>;
                                    originalLanguage: StringType<(...)>;
                                    subtitle: VirtualType<(...), (...)>;
                                    sync: ObjectType<(...), (...)>;
                                    urlID: VirtualType<(...), (...)>;
                                    urls: ArrayType<(...), (...)>;
                                    userCanDelete: VirtualType<(...), (...)>;
                                    userCanEdit: VirtualType<(...), (...)>;
                                    userCanUpload: VirtualType<(...), (...)>;
                                    userIsCreator: VirtualType<(...), (...)>;
                                },
                            >,
                        > & RevisionFieldMap & {
                            deleteAllRevisions<
                                TThis extends
                                    VersionedModelInstance<
                                        InferData<
                                            {
                                                aliases: ...;
                                                authors: ...;
                                                averageStarRating: ...;
                                                canonicalSlugName: ...;
                                                createdBy: ...;
                                                createdOn: ...;
                                                description: ...;
                                                id: ...;
                                                label: ...;
                                                metadata: ...;
                                                numberOfReviews: ...;
                                                originalLanguage: ...;
                                                subtitle: ...;
                                                sync: ...;
                                                urlID: ...;
                                                urls: ...;
                                                userCanDelete: ...;
                                                userCanEdit: ...;
                                                userCanUpload: ...;
                                                userIsCreator: ...;
                                            },
                                        >,
                                        InferVirtual<
                                            {
                                                aliases: ...;
                                                authors: ...;
                                                averageStarRating: ...;
                                                canonicalSlugName: ...;
                                                createdBy: ...;
                                                createdOn: ...;
                                                description: ...;
                                                id: ...;
                                                label: ...;
                                                metadata: ...;
                                                numberOfReviews: ...;
                                                originalLanguage: ...;
                                                subtitle: ...;
                                                sync: ...;
                                                urlID: ...;
                                                urls: ...;
                                                userCanDelete: ...;
                                                userCanEdit: ...;
                                                userCanUpload: ...;
                                                userIsCreator: ...;
                                            },
                                        >,
                                    > = VersionedModelInstance<
                                    InferData<
                                        {
                                            aliases: ...;
                                            authors: ...;
                                            averageStarRating: ...;
                                            canonicalSlugName: ...;
                                            createdBy: ...;
                                            createdOn: ...;
                                            description: ...;
                                            id: ...;
                                            label: ...;
                                            metadata: ...;
                                            numberOfReviews: ...;
                                            originalLanguage: ...;
                                            subtitle: ...;
                                            sync: ...;
                                            urlID: ...;
                                            urls: ...;
                                            userCanDelete: ...;
                                            userCanEdit: ...;
                                            userCanUpload: ...;
                                            userIsCreator: ...;
                                        },
                                    >,
                                    InferVirtual<
                                        {
                                            aliases: ...;
                                            authors: ...;
                                            averageStarRating: ...;
                                            canonicalSlugName: ...;
                                            createdBy: ...;
                                            createdOn: ...;
                                            description: ...;
                                            id: ...;
                                            label: ...;
                                            metadata: ...;
                                            numberOfReviews: ...;
                                            originalLanguage: ...;
                                            subtitle: ...;
                                            sync: ...;
                                            urlID: ...;
                                            urls: ...;
                                            userCanDelete: ...;
                                            userCanEdit: ...;
                                            userCanUpload: ...;
                                            userIsCreator: ...;
                                        },
                                    >,
                                >,
                            >(
                                this: TThis,
                                user?: RevisionActor,
                                options?: RevisionMetadata,
                            ): Promise<TThis>;
                            newRevision<
                                TThis extends
                                    VersionedModelInstance<
                                        InferData<
                                            {
                                                aliases: ...;
                                                authors: ...;
                                                averageStarRating: ...;
                                                canonicalSlugName: ...;
                                                createdBy: ...;
                                                createdOn: ...;
                                                description: ...;
                                                id: ...;
                                                label: ...;
                                                metadata: ...;
                                                numberOfReviews: ...;
                                                originalLanguage: ...;
                                                subtitle: ...;
                                                sync: ...;
                                                urlID: ...;
                                                urls: ...;
                                                userCanDelete: ...;
                                                userCanEdit: ...;
                                                userCanUpload: ...;
                                                userIsCreator: ...;
                                            },
                                        >,
                                        InferVirtual<
                                            {
                                                aliases: ...;
                                                authors: ...;
                                                averageStarRating: ...;
                                                canonicalSlugName: ...;
                                                createdBy: ...;
                                                createdOn: ...;
                                                description: ...;
                                                id: ...;
                                                label: ...;
                                                metadata: ...;
                                                numberOfReviews: ...;
                                                originalLanguage: ...;
                                                subtitle: ...;
                                                sync: ...;
                                                urlID: ...;
                                                urls: ...;
                                                userCanDelete: ...;
                                                userCanEdit: ...;
                                                userCanUpload: ...;
                                                userIsCreator: ...;
                                            },
                                        >,
                                    > = VersionedModelInstance<
                                    InferData<
                                        {
                                            aliases: ...;
                                            authors: ...;
                                            averageStarRating: ...;
                                            canonicalSlugName: ...;
                                            createdBy: ...;
                                            createdOn: ...;
                                            description: ...;
                                            id: ...;
                                            label: ...;
                                            metadata: ...;
                                            numberOfReviews: ...;
                                            originalLanguage: ...;
                                            subtitle: ...;
                                            sync: ...;
                                            urlID: ...;
                                            urls: ...;
                                            userCanDelete: ...;
                                            userCanEdit: ...;
                                            userCanUpload: ...;
                                            userIsCreator: ...;
                                        },
                                    >,
                                    InferVirtual<
                                        {
                                            aliases: ...;
                                            authors: ...;
                                            averageStarRating: ...;
                                            canonicalSlugName: ...;
                                            createdBy: ...;
                                            createdOn: ...;
                                            description: ...;
                                            id: ...;
                                            label: ...;
                                            metadata: ...;
                                            numberOfReviews: ...;
                                            originalLanguage: ...;
                                            subtitle: ...;
                                            sync: ...;
                                            urlID: ...;
                                            urls: ...;
                                            userCanDelete: ...;
                                            userCanEdit: ...;
                                            userCanUpload: ...;
                                            userIsCreator: ...;
                                        },
                                    >,
                                >,
                            >(
                                this: TThis,
                                user: RevisionActor,
                                options?: RevisionMetadata,
                            ): Promise<TThis>;
                        } & object & ThingRelations & ThingInstanceMethodsMap
                    )[],
                >;
            },
            ThingInstanceMethodsMap,
        >,
    >