import { Authentication, BaseProviderSystem, Filter } from "@sap/service-provider-apis";
export type BusinessObjectType = "BO INTERFACE";
export type CDSType = "CDS VIEW";
export interface BusinessItem {
    id: string;
    title: string;
    type: BusinessObjectType | CDSType;
    description: string | null;
}
export interface BusinessItemSpec {
    isUI: boolean;
    status: string;
    sot: string | null;
    sotName: string | null;
    entities: BusinessItemEntity[];
}
export interface ProviderSystemBusiness extends BaseProviderSystem {
    product?: string;
    getBOs(options?: ProviderOptions): Promise<BusinessItem[]>;
    getCDS(options?: ProviderOptions): Promise<BusinessItem[]>;
    getSpecBo(boId: string): Promise<BusinessItemSpec>;
    getSpecCds(cdsId: string): Promise<BusinessItemSpec>;
}
export interface ProviderOptions {
    credentials?: Authentication;
}
export interface BusinessItemsRetriever {
    retrieveBusinessItems(destinationName: string, credentials?: Authentication): Promise<BusinessItem[]>;
    retrieveSpecBusinessItem(businessItemId: string): Promise<BusinessItemSpec>;
}
export interface BusinessRepositoryRetriever {
    retrieveSystemsBusinessItems(filter?: Filter): Promise<ProviderSystemBusiness[]>;
}
export interface RawBusinessItem {
    id: string;
    name: string;
    title: string;
    description: string | null;
    type: CDSType | BusinessObjectType;
    status: string;
    sot: string | null;
    sotName: string | null;
    entities: BusinessItemEntity[];
}
export interface BusinessItemEntity {
    id: string;
    name: string;
    properties: EntityProperty[];
    associations: EntityAssosiation[] | null;
    actions: EntityAction[] | null;
}
export interface EntityProperty {
    name: string;
    key: boolean;
    type: string;
    length: string | null;
    label: string | null;
}
export interface EntityAssosiation {
    name: string;
    assocName: string;
    cardinality: string;
}
export interface EntityAction {
    name: string;
    type: string;
}
