import { ComponentClass } from '../Component'; /** * @description * Register a component (Controller, Receiver, Channel or Databox). * You only have to import the file in the app config. * You are able to register multiple components with the same * type and identifier but different apiLevels. * The identifier of the component will be created with the endpoint name of the component. * The endpoint name and apiLevel can be provided with the API decorator. * Otherwise, the endpoint name and apiLevel are parsed from the class name. * Therefore a particular class name convention needs to be followed, see the code examples. * However, you are able to override the resulting endpoint name or apiLevel with * the first parameter of this decorator. * @example * Example 1: * @Register() * @API("sendMsg",1) * class SendMessageController extends Controller {} * Endpoint name = sendMsg, apiLevel = 1 * * Example 2: * @Register() * class SendMessageController extends Controller {} * Endpoint name = sendMessage, apiLevel = undefined * * Example 3: * @Register() * class RemoveItem extends Controller {} * Endpoint name = removeItem, apiLevel = undefined * * Example 4: * @Register() * class BlockUserController_4 extends Controller {} * Endpoint name = blockUser, apiLevel = 4 * * Example 5: * @Register() * class AddItem_4 extends Controller {} * Endpoint name = addItem, apiLevel = 4 * * Example 6: * @Register() * class ProfileDatabox_13 extends Databox {} * Endpoint name = profile, apiLevel = 13 * * Example 7: * @Register() * class ProfileChannel_5 extends Channel {} * Endpoint name = profile, apiLevel = 5 * * Example 8: * @Register() * class MoveReceiver extends Receiver {} * Endpoint name = move, apiLevel = undefined * * Example 9: * @Register({name: "mv"}) * class MoveReceiver_10 extends Receiver {} * Endpoint name = mv, apiLevel = 10 * @param override * Optional parameter to override the resulting endpoint name and apiLevel. */ export declare const Register: (override?: { endpointName?: string; apiLevel?: number | null; }) => (target: ComponentClass) => void;