import { RegistryInterface } from '@subscan/widget-runtime';
import { CreateComponentBranchOperation, CreateComponentBranchOperationContext, ModifyComponentIdBranchOperation, ModifyComponentIdBranchOperationContext, RemoveComponentBranchOperation, RemoveComponentBranchOperationContext, MoveComponentBranchOperation, MoveComponentBranchOperationContext, CreateDataSourceBranchOperation, CreateDataSourceBranchOperationContext } from './branch';
import { AdjustComponentOrderLeafOperation, AdjustComponentOrderLeafOperationContext, CreateTraitLeafOperation, CreateTraitLeafOperationContext, ModifyComponentPropertiesLeafOperation, ModifyComponentPropertiesLeafOperationContext, ModifyTraitPropertiesLeafOperation, ModifyTraitPropertiesLeafOperationContext, RemoveTraitLeafOperation, RemoveTraitLeafOperationContext, ReplaceAppLeafOperation, ReplaceAppLeafOperationContext, PasteComponentLeafOperation, PasteComponentLeafOperationContext } from './leaf';
import { IOperation } from './type';
export declare const OperationConstructors: Record<OperationTypes, OperationConfigMaps[OperationTypes]['constructor']>;
declare type OperationTypes = keyof OperationConfigMaps;
declare type OperationConfigMap<TOperation, TContext> = {
    constructor: new (registry: RegistryInterface, context: TContext) => TOperation;
    context: TContext;
    registry: RegistryInterface;
};
export declare type OperationConfigMaps = {
    createComponent: OperationConfigMap<CreateComponentBranchOperation, CreateComponentBranchOperationContext>;
    removeComponent: OperationConfigMap<RemoveComponentBranchOperation, RemoveComponentBranchOperationContext>;
    modifyComponentProperty: OperationConfigMap<ModifyComponentPropertiesLeafOperation, ModifyComponentPropertiesLeafOperationContext>;
    modifyComponentId: OperationConfigMap<ModifyComponentIdBranchOperation, ModifyComponentIdBranchOperationContext>;
    adjustComponentOrder: OperationConfigMap<AdjustComponentOrderLeafOperation, AdjustComponentOrderLeafOperationContext>;
    createTrait: OperationConfigMap<CreateTraitLeafOperation, CreateTraitLeafOperationContext>;
    removeTrait: OperationConfigMap<RemoveTraitLeafOperation, RemoveTraitLeafOperationContext>;
    modifyTraitProperty: OperationConfigMap<ModifyTraitPropertiesLeafOperation, ModifyTraitPropertiesLeafOperationContext>;
    replaceApp: OperationConfigMap<ReplaceAppLeafOperation, ReplaceAppLeafOperationContext>;
    pasteComponent: OperationConfigMap<PasteComponentLeafOperation, PasteComponentLeafOperationContext>;
    moveComponent: OperationConfigMap<MoveComponentBranchOperation, MoveComponentBranchOperationContext>;
    createDataSource: OperationConfigMap<CreateDataSourceBranchOperation, CreateDataSourceBranchOperationContext>;
};
export declare const genOperation: <T extends keyof OperationConfigMaps>(registry: RegistryInterface, type: T, context: OperationConfigMaps[T]["context"]) => IOperation;
export {};
