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 { // eslint-disable-next-line @typescript-eslint/ban-types once(): Function & once.FnProps; } }