import type { CollectionModels, LanguageModels } from "@kontent-ai/management-sdk";
import { ContentTypeModels, ContentTypeSnippetModels, TaxonomyModels, WorkflowModels } from "@kontent-ai/management-sdk";
import type { GeneratedFile, GeneratedSet, ModuleFileExtension } from "../../core/core.models.js";
import type { DeliveryGeneratorConfig } from "./delivery.generator.js";
import type { DeliveryEntityNames } from "./delivery-entity-name.generator.js";
export type DeliveryElement = {
    readonly codename: string;
    readonly name: string;
    readonly externalId: string | undefined;
};
export type DeliveryEntity = Readonly<LanguageModels.LanguageModel> | Readonly<CollectionModels.Collection> | Readonly<WorkflowModels.Workflow> | Readonly<TaxonomyModels.Taxonomy> | DeliveryElement | Readonly<ContentTypeModels.ContentType> | Readonly<ContentTypeSnippetModels.ContentTypeSnippet>;
export type DeliveryEntityType = "Language" | "Collection" | "Workflow" | "Taxonomy" | "Type" | "Element" | "Snippet";
export type DeliveryEntityGeneratorConfig<T extends DeliveryEntityType> = {
    readonly moduleFileExtension: ModuleFileExtension;
    readonly disableComments: boolean;
    readonly entityType: T;
    readonly entities: readonly Readonly<DeliveryEntity>[];
    readonly generateOnlyOverviewFile: boolean;
    readonly deliveryGeneratorConfig: DeliveryGeneratorConfig;
};
export type DeliveryEntityGenerator<T extends DeliveryEntityType> = {
    readonly entityType: T;
    readonly generateEntityTypes: () => GeneratedSet;
    readonly entityNames: DeliveryEntityNames<T>;
    readonly generateOverviewFile: () => GeneratedFile;
};
export declare function getDeliveryEntityGenerator<T extends DeliveryEntityType>(config: DeliveryEntityGeneratorConfig<T>): DeliveryEntityGenerator<T>;
