/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { GenericAssetAdaptor } from '@apic/api-model/adaptor/GenericAssetAdaptor.js';
import { DeepRequired } from './generic/deep-required.js';
import { Metadata } from '@apic/api-model/common/Metadata.js';
import { Api, Api_Spec } from '@apic/api-model/api/Api.js';
import { PolicySequence, PolicySequence_Spec } from '@apic/api-model/policy/PolicySeq.js';
import { Routing, Routing_Spec } from '@apic/api-model/policy/routing/Routing.js';
import { Test, Test_Spec } from '@apic/api-model/test/Test.js';
import { Ref } from '@apic/api-model/common/Ref.js';
import { Environment, Environment_Spec } from '@apic/api-model/test/Environment.js';
import { MockEndpoint, MockEndpoint_Spec } from '@apic/api-model/mock/MockEndpoint.js';
import { Plan, Plan_Spec } from '@apic/api-model/package/Plan.js';
import { RequestLimit, RequestLimit_Spec } from '@apic/api-model/package/RequestLimit.js';
import { Product, Product_Spec } from '@apic/api-model/package/Product.js';
type BaseAsset = DeepRequired<GenericAssetAdaptor> & Omit<GenericAssetAdaptor, 'metadata'> & {
    metadata: DeepRequired<Metadata>;
};
type APIAsset = DeepRequired<Api> & Omit<Api, 'spec'> & {
    spec: APISpec;
};
type APISpec = DeepRequired<Api_Spec> & Omit<Api_Spec, 'policy-seq'> & {
    'policy-sequence': RefModel[];
};
type RefModel = DeepRequired<Ref> & Omit<Ref, '$ref'> & {
    $ref: string;
};
type PolicySeqAsset = DeepRequired<PolicySequence> & Omit<PolicySequence, 'spec'> & {
    spec: PolicySeqSpec;
};
type PolicySeqSpec = DeepRequired<PolicySequence_Spec>;
type RouteAsset = DeepRequired<Routing> & Omit<Routing, 'spec'> & {
    spec: RoutingSpec;
};
type RoutingSpec = DeepRequired<Routing_Spec>;
type TestAsset = DeepRequired<Test> & Omit<Test, 'spec'> & {
    spec: TestSpec;
};
type TestSpec = DeepRequired<Test_Spec>;
type EnvironmentAsset = DeepRequired<Environment> & Omit<Environment, 'spec'> & {
    spec: EnvironmentSpec;
};
type EnvironmentSpec = DeepRequired<Environment_Spec>;
type MockEndpointAsset = DeepRequired<MockEndpoint> & Omit<MockEndpoint, 'spec'> & {
    spec: MockEndpointSpec;
};
type MockEndpointSpec = DeepRequired<MockEndpoint_Spec>;
type PackageAsset = DeepRequired<Product> & Omit<Product, 'spec'> & {
    spec: PackageSpec;
};
type PackageSpec = DeepRequired<Product_Spec>;
type PlanAsset = DeepRequired<Plan> & Omit<Plan, 'spec'> & {
    spec: PlanSpec;
};
type PlanSpec = DeepRequired<Plan_Spec>;
type RequestLimitAsset = DeepRequired<RequestLimit> & Omit<RequestLimit, 'spec'> & {
    spec: RequestLimitSpec;
};
type RequestLimitSpec = DeepRequired<RequestLimit_Spec>;
type RefObj = {
    $ref: string;
};
export { BaseAsset, APIAsset, RefModel, APISpec, PolicySeqAsset, PolicySeqSpec, RouteAsset, RoutingSpec, TestAsset, TestSpec, EnvironmentAsset, EnvironmentSpec, MockEndpointAsset, MockEndpointSpec, RefObj, PackageAsset, PackageSpec, PlanAsset, PlanSpec, RequestLimitAsset, RequestLimitSpec, };
//# sourceMappingURL=assets-model.d.ts.map