import { ProviderItem } from './Providers'; export type UnbindAll = 'ALL'; export interface BindingsMap { [key: string]: PropertyBinding; } export type PropertyBinding = ContextItemBinding | MethodBinding; export declare enum BindingItemType { ContextItem = "ContextItem", Method = "Method" } export interface ContextItemBinding { bindingItemType: BindingItemType.ContextItem; displayName?: string; itemPath: string; } export interface MethodBinding { bindingItemType: BindingItemType.Method; callOptions: CallOptions; displayName?: string; methodPath: string; } export type BindingArgument = ContextBindingArgument | FunctionBinding | StaticArgument; export interface CallOptions { arguments: BindingArgument[]; asCallback: boolean; } export interface FunctionBinding extends CallOptions { displayName?: string; function: string; functionLibraryType: string; type: ArgumentType.FunctionBinding; } export interface ContextBindingArgument { contextItem: PropertyBinding; contextProvider: string; displayName?: string; type: ArgumentType.ContextBinding; } export interface StaticArgument { dataType: string; type: ArgumentType.Static; value: string; } export declare enum ArgumentType { ContextBinding = "ContextBindingItem", FunctionBinding = "FunctionBindingItem", Static = "StaticArgItem" } export interface FunctionBindingsMap { [key: string]: FunctionPropertyBinding; } export interface FunctionPropertyBinding { callOptions: CallOptions; function: string; } export interface BoundPropertiesPerProvider { [key: string]: BoundProperties; } export type BoundProperties = ContextProviderBindings | FunctionLibraryBinding; export declare enum BindingType { ContextProvider = "ContextProvider", FunctionLibrary = "FunctionLibrary" } export interface ContextProviderBindings { bindingsMap: BindingsMap; bindingType: BindingType.ContextProvider; displayName?: string; } export interface FunctionLibraryBinding { bindingsMap: FunctionBindingsMap; bindingType: BindingType.FunctionLibrary; } export type Binding = { bindings: BindingsMap; providerType: string; }; export type ListBindingsResponse = { bindings: BoundProperties; providerType: string; }[]; export type BindingCandidate = ProviderItem & { isBound: boolean; };