// Type definitions for better-curry // Project: https://github.com/pocesar/js-bettercurry // Definitions by: Paulo Cesar // Definitions: https://github.com/borisyankov/DefinitelyTyped declare var BetterCurry: BetterCurryModule.BetterCurry; declare module BetterCurryModule { export interface DelegateOptions { as?: string; len?: number; args?: any[]; name?: string; } export class Delegate { proto: T; target: string; methods: any[]; getters: any[]; setters: any[]; all: (skip?: string[]) => void; method: (name: string|DelegateOptions) => Delegate; getter: (name: string|DelegateOptions) => Delegate; setter: (name: string|DelegateOptions) => Delegate; access: (name: string|DelegateOptions) => Delegate; revoke: (name: string) => Delegate; constructor(proto: T, target: string); } export interface OriginalFunctionReminder extends Function { __length: number; } export interface BetterCurry { predefine: (fn: T, args: any[], context?: Object, len?: number, checkArguments?: boolean) => OriginalFunctionReminder; wrap: (fn: T, context?: Object, len?: number, checkArguments?: boolean) => OriginalFunctionReminder; flatten: (...args: Array|any>) => any[]; delegate: (proto: T, target: string) => Delegate; MAX_OPTIMIZED: number; } } declare module 'better-curry' { var bc: BetterCurryModule.BetterCurry; export = bc; }