/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { SerializationFactory, type PlainObject } from '@finos/legend-shared';
import type { V1_GenericType } from '../../model/packageableElements/type/V1_GenericType.js';
import type { V1_RelationElement } from '../../model/data/V1_EmbeddedData.js';
import type { V1_PureModelContextData } from '../../model/context/V1_PureModelContextData.js';
import type { V1_Multiplicity } from '../../model/packageableElements/domain/V1_Multiplicity.js';
export declare enum V1_DataProductTypeEnum {
    INTERNAL = "internalDataProductType",
    EXTERNAL = "externalDataProductType"
}
export declare enum V1_ResourceBuilderType {
    DATABASE_DDL = "databaseDDL",
    FUNCTION_ACCESS_POINT = "functionAccessPoint"
}
export declare enum V1_SampleQueryType {
    IN_LINE_SAMPLE_QUERY = "inLineSampleQuery",
    PACKAGEABLE_ELEMENT_SAMPLE_QUERY = "packageableElementSampleQuery"
}
export declare enum V1_DatabaseDDLImplementationType {
    VIEW = "VIEW",
    TABLE = "TABLE",
    PROCEDURE = "PROCEDURE"
}
export declare abstract class V1_Artifact_DataProductType {
}
export declare class V1_Artifact_ExternalDataProductType extends V1_Artifact_DataProductType {
    link: string | undefined;
    static readonly serialization: SerializationFactory<V1_Artifact_ExternalDataProductType>;
}
export declare class V1_Artifact_InternalDataProductType extends V1_Artifact_DataProductType {
    static readonly serialization: SerializationFactory<V1_Artifact_InternalDataProductType>;
}
export declare const V1_serializeDataProductType: (DataProductType: V1_Artifact_DataProductType) => PlainObject<V1_Artifact_DataProductType>;
export declare const V1_deserializeDataProductType: (json: PlainObject<V1_Artifact_DataProductType>) => V1_Artifact_DataProductType;
export declare class V1_DataProductInfo {
    path: string;
    deploymentId: string | undefined;
    description: string | undefined;
    title: string | undefined;
    dataProductType: V1_Artifact_DataProductType | undefined;
    static readonly serialization: SerializationFactory<V1_DataProductInfo>;
}
export declare abstract class V1_ResourceBuilder {
}
export declare class V1_DatabaseDDL extends V1_ResourceBuilder {
    reproducible: boolean;
    targetEnvironment: string;
    script: string;
    classification: string | undefined;
    resourceType: V1_DatabaseDDLImplementationType;
    static readonly serialization: SerializationFactory<V1_DatabaseDDL>;
}
export declare class V1_FunctionAccessPoint extends V1_ResourceBuilder {
    functionGrammar: string;
    static readonly serialization: SerializationFactory<V1_FunctionAccessPoint>;
}
export declare const V1_serializeResourceBuilder: (resourceBuilder: V1_ResourceBuilder) => PlainObject<V1_ResourceBuilder>;
export declare const V1_deserializeResourceBuilder: (json: PlainObject<V1_ResourceBuilder>) => V1_ResourceBuilder;
export declare class V1_AccessPointImplementation {
    id: string;
    description: string | undefined;
    resourceBuilder: V1_ResourceBuilder;
    relationElement: V1_RelationElement | undefined;
    lambdaGenericType: V1_GenericType | undefined;
    static readonly serialization: SerializationFactory<V1_AccessPointImplementation>;
}
export declare class V1_DatasetSpecification {
    name: string;
    type: string;
    static readonly serialization: SerializationFactory<V1_DatasetSpecification>;
}
export declare class V1_RuntimeGenerationInfo {
    path: string;
    storePath?: string;
    connectionType?: string;
    static readonly serialization: SerializationFactory<V1_RuntimeGenerationInfo>;
}
export declare class V1_DiagramInfo {
    title: string;
    description?: string;
    diagram: string;
    static readonly serialization: SerializationFactory<V1_DiagramInfo>;
}
export declare class V1_MappingGenerationInfo {
    path: string;
    model: V1_PureModelContextData;
    static readonly serialization: SerializationFactory<V1_MappingGenerationInfo>;
}
export declare class V1_NativeModelExecutionContextInfo {
    key: string;
    mapping: string;
    runtime?: V1_RuntimeGenerationInfo | undefined;
    datasets: V1_DatasetSpecification[];
    static readonly serialization: SerializationFactory<V1_NativeModelExecutionContextInfo>;
}
export declare abstract class V1_SampleQueryInfo {
    id: string;
    title: string;
    description?: string;
    executionContextKey: string;
}
export declare class V1_InLineSampleQueryInfo extends V1_SampleQueryInfo {
    queryGrammar: string;
    static readonly serialization: SerializationFactory<V1_InLineSampleQueryInfo>;
}
export declare class V1_PackageableElementSampleQueryInfo extends V1_SampleQueryInfo {
    queryPath: string;
    static readonly serialization: SerializationFactory<V1_PackageableElementSampleQueryInfo>;
}
export declare class V1_NativeModelAccessInfo {
    diagrams: V1_DiagramInfo[];
    model: V1_PureModelContextData;
    elements: string[];
    defaultExecutionContext: string;
    elementDocs: V1_ModelDocumentationEntry[];
    mappingGenerations: Map<string, V1_MappingGenerationInfo>;
    nativeModelExecutionContexts: V1_NativeModelExecutionContextInfo[];
    sampleQueries?: V1_SampleQueryInfo[] | undefined;
    static readonly serialization: SerializationFactory<V1_NativeModelAccessInfo>;
}
export declare class V1_BasicDocumentationEntry {
    name: string;
    docs: string[];
    static readonly serialization: SerializationFactory<V1_BasicDocumentationEntry>;
}
export declare class V1_PropertyDocumentationEntry extends V1_BasicDocumentationEntry {
    milestoning?: string | undefined;
    type?: string | undefined;
    multiplicity: V1_Multiplicity;
    static readonly serialization: SerializationFactory<V1_PropertyDocumentationEntry>;
}
export declare class V1_ModelDocumentationEntry extends V1_BasicDocumentationEntry {
    path: string;
    static readonly serialization: SerializationFactory<V1_ModelDocumentationEntry>;
}
export declare class V1_ClassDocumentationEntry extends V1_ModelDocumentationEntry {
    properties: V1_PropertyDocumentationEntry[];
    milestoning?: string | undefined;
    static readonly serialization: SerializationFactory<V1_ClassDocumentationEntry>;
}
export declare class V1_EnumerationDocumentationEntry extends V1_ModelDocumentationEntry {
    enumValues: V1_BasicDocumentationEntry[];
    static readonly serialization: SerializationFactory<V1_EnumerationDocumentationEntry>;
}
export declare class V1_AssociationDocumentationEntry extends V1_ModelDocumentationEntry {
    properties: V1_PropertyDocumentationEntry[];
    static readonly serialization: SerializationFactory<V1_AssociationDocumentationEntry>;
}
export declare class V1_AccessPointGroupInfo {
    id: string;
    description: string | undefined;
    accessPointImplementations: V1_AccessPointImplementation[];
    static readonly serialization: SerializationFactory<V1_AccessPointGroupInfo>;
}
export declare class V1_DataProductArtifact {
    dataProduct: V1_DataProductInfo;
    accessPointGroups: V1_AccessPointGroupInfo[];
    nativeModelAccess?: V1_NativeModelAccessInfo | undefined;
    static readonly serialization: SerializationFactory<V1_DataProductArtifact>;
}
//# sourceMappingURL=V1_DataProductArtifact.d.ts.map