/**
 * Copyright IBM Corp. 2024, 2025
 */
import { Variable as Variable_Ref } from '@apic/api-model/test/common/Variable.js';
import { Test_Environment as Environment_Ref, Test_Assertions, Test_Auth, Test_Auth_BasicAuth, Test_Headers, Test_Parameters, Test_Payload, Test_Request } from '@apic/api-model/test/Test.js';
import { PolicySequence_Spec } from '@apic/api-model/policy/PolicySeq.js';
import { Assert } from '@apic/api-model/test/common/Assert.js';
import { Ref as Reference } from '@apic/api-model/common/Ref.js';
import { KindEnums } from '@apic/api-model/common/StudioEnums.js';
import { RefAndEndpoint } from '@apic/api-model/test/common/RefAndEndpoint.js';
import { PayLoadIdentifier } from '@apic/api-model/policy/common/PayLoadIdentifier.js';
import { CORS_Spec } from '@apic/api-model/policy/ResProcessing/CORS.js';
import { AuthorizeUser_Spec } from '@apic/api-model/policy/iam/AuthorizeUser.js';
import { Api } from '@apic/api-model/api/Api.js';
import { Xsl } from '@apic/api-model/policy/common/Xsl.js';
export type Metadata = KindMetadata;
export interface KindMetadata {
    name: string;
    version: string;
    tags?: string[];
    namespace?: string;
    type?: string;
    description?: string;
    labels?: {
        gatewayTypes: string[];
    };
}
export type API_Spec_Ref = {
    $ref: string;
    $path: string;
};
export type Path = {
    path: string;
};
export type PolicySequenceSpec = PolicySequence_Spec;
export type TestAssertions = Test_Assertions;
export type AssertSpec = Assert;
export type Cors_Spec = CORS_Spec;
export type Authorize_Spec = AuthorizeUser_Spec;
export type TestBasicAuth = Test_Auth_BasicAuth;
export type TestHeaders = Test_Headers;
export type TestParamters = Test_Parameters;
export type TestPayload = Test_Payload;
export type TestAuth = Test_Auth;
export type RefEndpoint = RefAndEndpoint;
export type Ref = Required<Reference>;
export type Variable = Required<Variable_Ref>;
export type Environment = Environment_Ref;
export type PolicySequence = PolicySequence_Spec;
export type Expression = Required<Assert>;
export type Assertion = Required<Test_Assertions>;
export type Request = Required<Test_Request> & {
    var?: TestVariable[] | string;
    endpoint?: string;
};
export type Specification = {
    'api-spec'?: API_Spec_Ref | string;
    'policy-sequence'?: Ref[];
    api?: Ref | string;
    scopes?: Ref[];
    environment?: Ref | Environment;
    request?: Request[];
};
export type BaseAsset = {
    kind: string;
    apiVersion?: string;
    metadata: Metadata;
    spec: Specification | string | any;
    paths?: any;
    info?: any;
};
export type ApiObject = Api;
export type IAMPayloadIdentifier = PayLoadIdentifier;
export type XSL = Xsl;
export declare const AssetKinds: {
    readonly API: "API";
    readonly Scope: "Scope";
    readonly PolicySequence: "PolicySequence";
    readonly CORS: "CORS";
    readonly Test: "Test";
    readonly Assertion: "Assertion";
    readonly Environment: "Environment";
    readonly Plan: "Plan";
    readonly Product: "Product";
    readonly Quota: "Quota";
    readonly Properties: "Properties";
    readonly URISchemes: "URISchemes";
    readonly DataPowerAssembly: "DataPowerAssembly";
    readonly FreeFlowPolicySequence: "FreeFlowPolicySequence";
    readonly StagedPolicySequence: "StagedPolicySequence";
    readonly Telemetry: "Telemetry";
    readonly Invoke: "Invoke";
    readonly LoadBalancer: "LoadBalancer";
    readonly InboundBulkHead: "InboundBulkHead";
    readonly InboundMessaging: "InboundMessaging";
    readonly SetMediaType: "SetMediaType";
    readonly AuthorizeUser: "AuthorizeUser";
    readonly SetContextVariable: "SetContextVariable";
    readonly WebMethodsISService: "WebMethodsISService";
    readonly Log: "Log";
    readonly IAM: "IAM";
    readonly Authorize: "Authorize";
    readonly TransformResponse: "TransformResponse";
    readonly TransformRequest: "TransformRequest";
    readonly MonitorTraffic: "MonitorTraffic";
    readonly SetAuthorization: "SetAuthorization";
    readonly OutboundAnonymous: "OutboundAnonymous";
    readonly OutboundAlias: "OutboundAlias";
    readonly CacheServiceResult: "CacheServiceResult";
    readonly ValidateAPISpecification: "ValidateAPISpecification";
    readonly ErrorProcessing: "ErrorProcessing";
    readonly HTTPEndpoint: "HTTPEndpoint";
    readonly HandlebarsTemplate: "HandlebarsTemplate";
    readonly Route: "Route";
    readonly SQLInjectionFilter: "SQLInjectionFilter";
    readonly MessageConfig: "MessageConfig";
    readonly LuaScript: "LuaScript";
    readonly Set: "Set";
    readonly RateLimitDef: "RateLimitDef";
    readonly RateLimit: "RateLimit";
    readonly Return: "Return";
    readonly GlobalPolicy: "GlobalPolicy";
    readonly DataMasking: "DataMasking";
    readonly InvokeMessagingExtension: "InvokeMessagingExtension";
    readonly HTTPInvoke: "HTTPInvoke";
    readonly CountLimit: "CountLimit";
    readonly CountLimitDef: "CountLimitDef";
    readonly Redact: "Redact";
    readonly Remove: "Remove";
    readonly Throw: "Throw";
    readonly Block: "Block";
    readonly Transform: "Transform";
    readonly Switch: "Switch";
    readonly If: "If";
    readonly OperationSwitch: "OperationSwitch";
    readonly InvokeAWSLambda: "InvokeAWSLambda";
    readonly WatsonXAIInvoke: "WatsonXAIInvoke";
    readonly OpenAIInvoke: "OpenAIInvoke";
    readonly ExtractIdentity: "ExtractIdentity";
    readonly EnforceCircuitBreaker: "EnforceCircuitBreaker";
    readonly Parse: "Parse";
    readonly Retry: "Retry";
    readonly IBMCloudLogin: "IBMCloudLogin";
    readonly Authenticate: "Authenticate";
    readonly Cache: "Cache";
    readonly Try: "Try";
};
export declare const POLICY_KINDS: string[];
export type AssetKindsType = keyof typeof AssetKinds;
export declare const NANO_GW_POLICY_KINDS: string[];
type ExtensionInfo = {
    [K in keyof typeof AssetKinds]?: {
        versions: string[];
        defaultVersion: string;
    };
};
export declare const CommonModelExtensionInfo: ExtensionInfo;
export { KindEnums as AssetModelKindConstants };
export declare class AssetModelInternalKindConstants {
    static readonly POLICY: string;
    static readonly MOCK_END_POINT: string;
    static readonly MOCK_RESPONSE: string;
}
export interface TestVariable {
    key: string;
    value: string;
}
//# sourceMappingURL=base-asset.model.d.ts.map