import { IContentHubClient } from "../clients/content-hub-client"; import { ICultureLoader } from "../clients/culture-loader"; import { IExtendedContentHubClient } from "../clients/extended-client"; import { IEntityDefinition } from "../contracts/base"; import { Entity, IEntity } from "../contracts/base/entity"; import { EntityBase } from "../contracts/base/entity-base"; import { ICultureLoadOption } from "../contracts/querying/culture-load-option"; import { TypedEntityCreator, TypedEntityCreatorBase } from "../mappers/typed-entity-creator"; import { IRelationFactory } from "./relation-factory"; /** * Factory to create {@link IEntity} instances. */ export interface IEntityFactory { /** * Create an {@link IEntity} instance for the {@link IEntityDefinition} for which a definition name is specified. * @param definitionName - Name of the definition from which to create an entity * @param cultureLoadOption - Culture load option */ createAsync(definitionName: string, cultureLoadOption?: ICultureLoadOption): Promise; /** * Create an {@link IEntity} instance for the {@link IEntityDefinition} that is specified. * @param definition - The definition from which to create an entity * @param cultureLoadOption - Culture load option */ createAsync(definition: IEntityDefinition, cultureLoadOption?: ICultureLoadOption): Promise; } export declare abstract class EntityFactoryBase implements IEntityFactory { private readonly _client; private readonly _cultureLoader; private readonly _relationFactory; private readonly _entityCreator; constructor(client: IContentHubClient, relationFactory: IRelationFactory, cultureLoader: ICultureLoader, entityCreator: TypedEntityCreatorBase); createAsync(param: string | IEntityDefinition, cultureLoadOption?: ICultureLoadOption): Promise; private getEntityDefinitionAsync; } export declare class EntityFactory extends EntityFactoryBase { constructor(client: IExtendedContentHubClient, relationFactory: IRelationFactory, cultureLoader: ICultureLoader, entityCreator: TypedEntityCreator); }