/**
 * Entry point for Power Apps / D365.
 * Contains the framework.
 */
/// <reference types="xrm" />
import "reflect-metadata";
import { InitializeOptions } from "./core/primno";
import { CanBePromise, Control } from "./typing";
/**
 * Initialize Primno. Must be set before any event call.
 * @param options Initialize options
 */
export declare function initialize(options: InitializeOptions): void;
/**
 * Generic event handler.
 * @param eventTypeName
 * @param controlName
 * @param selectedControl
 * @param args
 * @returns
 */
export declare function onEvent(eventTypeName: string, controlName: string | undefined, selectedControl: Control, primaryControl: Control | undefined, ...args: unknown[]): CanBePromise<unknown>;
/**
 * Generic form event handler.
 * @param control Primary control
 * @param eventTypeName Event type name
 * @param targetName Target name. If undefined, the event is not related to a target/control.
 * @param args Optional args
 */
export declare function onFormEvent(control: Xrm.Events.EventContext, eventTypeName: string, targetName: string | undefined, ...args: unknown[]): CanBePromise<unknown>;
/**
 * Generic command event handler.
 * @param selectedControl Selected control
 * @param primaryControl Primary control
 * @param eventTypeName Event type name
 * @param targetName Target name
 * @param args Optional args
 */
export declare function onCommandEvent(selectedControl: Control, primaryControl: Control, eventTypeName: string, targetName: string, ...args: unknown[]): CanBePromise<unknown>;
/**
 * "onFormLoad" event handler. Must be called by Dynamics 365 on form loading.
 * @param control Primary control
 * @param args Optional args
 */
export declare function onFormLoad(control: Xrm.Events.EventContext, ...args: unknown[]): CanBePromise<unknown>;
/**
 * "onGridSave" event handler.
 * @param control Primary control
 * @param targetName Target name
 * @param args Optional args
 */
export declare function onGridSave(control: Xrm.Events.EventContext, targetName: string, ...args: unknown[]): CanBePromise<unknown>;
/**
 * "onGridRecordSelect" event handler.
 * @param control Primary control
 * @param targetName Target name
 * @param args Optional args
 */
export declare function onGridRecordSelect(control: Xrm.Events.EventContext, targetName: string, ...args: unknown[]): CanBePromise<unknown>;
/**
 * "onGridChange" event handler.
 * @param control Primary control
 * @param targetName Target name
 * @param args Optional args
 */
export declare function onGridChange(control: Xrm.Events.EventContext, targetName: string, ...args: unknown[]): CanBePromise<unknown>;
/**
 * "onCommandInvoke" event handler. Must be called by Dynamics 365 when a button on the command bar is pressed.
 * @param commandId Command name
 * @param selectedControl Selected control
 * @param primaryControl Primary control
 * @param args Optional args
 */
export declare function onCommandInvoke(selectedControl: Control, primaryControl: Control, commandId: string, ...args: unknown[]): CanBePromise<unknown>;
/**
 * "onPopulateQuery" event handler.
 * @param commandId Command name
 * @param selectedControl Selected control
 * @param primaryControl Primary control
 * @param args Optional args
 */
export declare function onPopulateQuery(selectedControl: Control, primaryControl: Control, commandId: string, ...args: unknown[]): CanBePromise<unknown>;
/**
 * "onEnableRule" event handler. Must be called by Dynamics 365 when a js button enable rule is triggered.
 * @param enableRuleName Enable rule name
 * @param selectedControl Selected control
 * @param primaryControl Primary control
 * @param args Optional args
 * @returns true if the rule is enabled, false otherwise
 */
export declare function onEnableRule(selectedControl: Control, primaryControl: Control, enableRuleName: string, ...args: unknown[]): CanBePromise<boolean>;
