export type Provider = { attachState?: AttachState; contextDependencies?: string[]; displayName: string; items?: Record; providerType: string; }; type ProviderItemBase = { displayName: string; itemName: string; providerType: string; }; export type ProviderArrayItem = ProviderItemBase & { arrayItem: ProviderItem; dataType: String; }; export type ProviderObjectItem = ProviderItemBase & { dataType: String; objectItem: Record; }; export type ProviderSimpleItem = ProviderItemBase & { dataType: String; }; export type ProviderItem = ProviderArrayItem | ProviderObjectItem | ProviderSimpleItem; export type AttachState = 'above' | 'none' | 'self'; export interface AttachedProvider extends Provider { attachState: AttachState; } export type AttachStateFilter = boolean | { filterAttachedState?: AttachState[]; }; export type ListProvidersOptions = { includeAttachState?: AttachStateFilter; includeDependencies?: boolean; includeItems?: boolean; providerTypes?: string[]; }; export {};