/**
 * Copyright IBM Corp. 2024, 2025
 */
import { APICFileInfo } from '../../apic-mode/models/apic-file-info.model.js';
import { APICProject } from '../../apic-mode/models/apic-project.model.js';
import { AssetInfo } from '../../lfs/models/asset-info.model.js';
import { Project } from '../../lfs/models/project.model.js';
import { VCSFileInfo } from '../../vcs/models/vcs-file-info.model.js';
import { VCSProject } from '../../vcs/models/vcs-project.model.js';
import { OpenApiSpecDocument } from '../interfaces/api-spec-handler.interface.js';
import { OpenApiTypesEnum } from '../models/openapi-types.enum.js';
export type APIAdditionalPropertyKeys = 'uriSchemes' | 'properties' | 'cors';
export type APIContext = {
    data: OpenApiSpecDocument | null;
    context: {
        file: FileSystemFileHandle | VCSFileInfo | APICFileInfo | null;
    };
    selectedItems: Array<SelectionItem>;
    apiVersion: OpenApiTypesEnum | null;
    policySequences: AssetInfo[];
    apiAdditionalProperties: {
        active?: APIAdditionalPropertyKeys;
        isDetailedFormViewOpen: boolean;
        properties: {
            [key in APIAdditionalPropertyKeys]?: ProjectAssetInfo;
        };
    };
    loadingInfo: LoadingInfo;
};
export interface ProjectAssetInfo extends AssetInfo {
    project: Project | VCSProject | APICProject;
}
export type SelectionType = 'module' | 'path' | 'operation' | 'component' | 'response' | 'security';
export type SelectionItem = {
    position: number;
    type: SelectionType;
    value: string | number;
    showBreadCrumbs: boolean;
    displayNameForBreadCrumbs: string;
    onBreadCrumbClick?: () => void;
};
export type LoadingInfo = {
    isFetchingData: boolean;
    showDelayedLoader: boolean;
    showTimer?: NodeJS.Timeout;
    minDisplayTimer?: NodeJS.Timeout;
    shownAt?: number;
};
//# sourceMappingURL=api-context.store.model.d.ts.map