import { IAction } from "../core/action"; export interface IActionFactory { R>(fn: T): T & IAction; R>(fn: T): T & IAction; R>(fn: T): T & IAction; R>(fn: T): T & IAction; R>(fn: T): T & IAction; R>(fn: T): T & IAction; R>(name: string, fn: T): T & IAction; R>(name: string, fn: T): T & IAction; R>(name: string, fn: T): T & IAction; R>(name: string, fn: T): T & IAction; R>(name: string, fn: T): T & IAction; R>(name: string, fn: T): T & IAction; (fn: T): T & IAction; (name: string, fn: T): T & IAction; (customName: string): (target: Object, key: string, baseDescriptor?: PropertyDescriptor) => void; (target: Object, propertyKey: string, descriptor?: PropertyDescriptor): void; bound R>(fn: T): T & IAction; bound R>(fn: T): T & IAction; bound R>(fn: T): T & IAction; bound R>(fn: T): T & IAction; bound R>(fn: T): T & IAction; bound R>(fn: T): T & IAction; bound(fn: T): T & IAction; bound(name: string, fn: T): T & IAction; bound(target: Object, propertyKey: string, descriptor?: PropertyDescriptor): void; } export declare var action: IActionFactory; export declare function runInAction(block: () => T, scope?: any): T; export declare function runInAction(name: string, block: () => T, scope?: any): T; export declare function isAction(thing: any): boolean; export declare function defineBoundAction(target: any, propertyName: string, fn: Function): void;