/**
 * 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 { type ModelSchema } from 'serializr';
import { type PlainObject } from '@finos/legend-shared';
import { V1_ModelChainConnection } from '../../../model/packageableElements/store/modelToModel/connection/V1_ModelChainConnection.js';
import { V1_PackageableConnection } from '../../../model/packageableElements/connection/V1_PackageableConnection.js';
import type { V1_Connection } from '../../../model/packageableElements/connection/V1_Connection.js';
import { V1_JsonModelConnection } from '../../../model/packageableElements/store/modelToModel/connection/V1_JsonModelConnection.js';
import { V1_XmlModelConnection } from '../../../model/packageableElements/store/modelToModel/connection/V1_XmlModelConnection.js';
import { V1_FlatDataConnection } from '../../../model/packageableElements/store/flatData/connection/V1_FlatDataConnection.js';
import { type V1_DatabaseConnection } from '../../../model/packageableElements/store/relational/connection/V1_RelationalDatabaseConnection.js';
import { type V1_DatasourceSpecification } from '../../../model/packageableElements/store/relational/connection/V1_DatasourceSpecification.js';
import { type V1_AuthenticationStrategy } from '../../../model/packageableElements/store/relational/connection/V1_AuthenticationStrategy.js';
import type { PureProtocolProcessorPlugin } from '../../../../PureProtocolProcessorPlugin.js';
import { V1_ConnectionPointer } from '../../../model/packageableElements/connection/V1_ConnectionPointer.js';
export declare const V1_PACKAGEABLE_CONNECTION_ELEMENT_PROTOCOL_TYPE = "connection";
export declare enum V1_ConnectionType {
    CONNECTION_POINTER = "connectionPointer",
    MODEL_CHAIN_CONNECTION = "ModelChainConnection",
    JSON_MODEL_CONNECTION = "JsonModelConnection",
    XML_MODEL_CONNECTION = "XmlModelConnection",
    FLAT_DATA_CONNECTION = "FlatDataConnection",
    RELATIONAL_DATABASE_CONNECTION = "RelationalDatabaseConnection"
}
export declare const V1_connectionPointerModelSchema: ModelSchema<V1_ConnectionPointer>;
export declare const V1_modelChainConnectionModelSchema: ModelSchema<V1_ModelChainConnection>;
export declare const V1_jsonModelConnectionModelSchema: ModelSchema<V1_JsonModelConnection>;
export declare const V1_xmlModelConnectionModelSchema: ModelSchema<V1_XmlModelConnection>;
export declare const V1_flatDataConnectionModelSchema: ModelSchema<V1_FlatDataConnection>;
export declare const V1_serializeDatasourceSpecification: (protocol: V1_DatasourceSpecification, plugins: PureProtocolProcessorPlugin[]) => PlainObject<V1_DatasourceSpecification>;
export declare const V1_deserializeDatasourceSpecification: (json: PlainObject<V1_DatasourceSpecification>, plugins: PureProtocolProcessorPlugin[]) => V1_DatasourceSpecification;
export declare const V1_serializeAuthenticationStrategy: (protocol: V1_AuthenticationStrategy, plugins: PureProtocolProcessorPlugin[]) => PlainObject<V1_AuthenticationStrategy>;
export declare const V1_deserializeAuthenticationStrategy: (json: PlainObject<V1_AuthenticationStrategy>, plugins: PureProtocolProcessorPlugin[]) => V1_AuthenticationStrategy;
export declare const V1_serializeConnectionValue: (protocol: V1_Connection, allowPointer: boolean, plugins: PureProtocolProcessorPlugin[]) => PlainObject<V1_Connection>;
export declare const V1_deserializeConnectionValue: (json: PlainObject<V1_Connection>, allowPointer: boolean, plugins: PureProtocolProcessorPlugin[]) => V1_Connection;
export declare const V1_serializeDatabaseConnectionValue: (protocol: V1_DatabaseConnection) => PlainObject<V1_DatabaseConnection>;
export declare const V1_deserializeDatabaseConnectionValue: (json: PlainObject<V1_DatabaseConnection>) => V1_DatabaseConnection;
export declare const V1_packageableConnectionModelSchema: (plugins: PureProtocolProcessorPlugin[]) => ModelSchema<V1_PackageableConnection>;
//# sourceMappingURL=V1_ConnectionSerializationHelper.d.ts.map