// Type definitions for once 1.4 // Project: https://github.com/isaacs/once // Definitions by: Denis Sokolov // BendingBender // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export = once; declare const once: Once; interface Once extends once.OnceFn { proto(): void; strict: once.OnceFn; } declare namespace once { interface OnceFn { (f: () => R): (() => R) & FnProps; (f: (t1: T1) => R): ((t1: T1) => R) & FnProps; (f: (t1: T1, t2: T2) => R): ((t1: T1, t2: T2) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3) => R): ((t1: T1, t2: T2, t3: T3) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3, t4: T4) => R): ((t1: T1, t2: T2, t3: T3, t4: T4) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R): ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R): ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R): ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R): ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R): ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R) & FnProps; (f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R): ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R) & FnProps; (f: (...args: any[]) => R): ((...args: any[]) => R) & FnProps; } interface FnProps { called: boolean; value: R | undefined; } } declare global { interface Function { // tslint:disable-next-line ban-types once(): Function & once.FnProps; } }