import * as CommonBehaviour from '../../behaviour/common/Behaviour';
import { BehaviourState } from '../../behaviour/common/BehaviourState';
import * as BehaviourTypes from '../../behaviour/common/BehaviourTypes';
export type ConfiguredBehaviour<C extends BehaviourConfigSpec, D extends BehaviourConfigDetail, S extends BehaviourState = BehaviourState> = BehaviourTypes.ConfiguredBehaviour<C, D, S>;
export type AlloyBehaviourRecord = BehaviourTypes.BehaviourRecord;
export type BehaviourConfigSpec = BehaviourTypes.BehaviourConfigSpec;
export type BehaviourConfigDetail = BehaviourTypes.BehaviourConfigDetail;
export type NamedConfiguredBehaviour<C extends BehaviourConfigSpec, D extends BehaviourConfigDetail, S extends BehaviourState = BehaviourState> = BehaviourTypes.NamedConfiguredBehaviour<C, D, S>;
export type AlloyBehaviour<C extends BehaviourConfigSpec, D extends BehaviourConfigDetail, S extends BehaviourState = BehaviourState> = BehaviourTypes.AlloyBehaviour<C, D, S>;
export type AlloyBehaviourConfig<D extends BehaviourConfigDetail, S extends BehaviourState, A extends BehaviourTypes.BehaviourApisRecord<D, S>, E extends BehaviourTypes.BehaviourExtraRecord<E> = {}> = BehaviourTypes.BehaviourConfig<D, S, A, E>;
export type BehaviourModeSpec<D extends BehaviourConfigDetail, S extends BehaviourState, A extends BehaviourTypes.BehaviourApisRecord<D, S>, E extends BehaviourTypes.BehaviourExtraRecord<E> = {}> = BehaviourTypes.BehaviourModeSpec<D, S, A, E>;
declare const derive: (capabilities: Array<NamedConfiguredBehaviour<any, any, any>>) => AlloyBehaviourRecord;
declare const create: <C extends BehaviourTypes.BehaviourConfigSpec, D extends BehaviourTypes.BehaviourConfigDetail, S extends BehaviourState, A extends BehaviourTypes.BehaviourApisRecord<D, S>, E extends BehaviourTypes.BehaviourExtraRecord<E> = {}>(data: AlloyBehaviourConfig<D, S, A, E>) => CommonBehaviour.AlloyBehaviourWithApis<C, D, S, A, E>;
declare const createModes: <C extends BehaviourTypes.BehaviourConfigSpec, D extends BehaviourTypes.BehaviourConfigDetail, S extends BehaviourState, A extends BehaviourTypes.BehaviourApisRecord<D, S>, E extends BehaviourTypes.BehaviourExtraRecord<E> = {}>(data: BehaviourModeSpec<D, S, A, E>) => CommonBehaviour.AlloyBehaviourWithApis<C, D, S, A, E>;
declare const revoke: () => undefined;
declare const noActive: () => {};
declare const noApis: () => {};
declare const noExtra: () => {};
export { derive, revoke, noActive, noApis, noExtra, create, createModes };
//# sourceMappingURL=Behaviour.d.ts.map