import { Function } from './Function.js'; import { TupleLength } from './TupleLength.js'; import { TupleSlice } from './TupleSlice.js'; import './MathSubstract.js'; import './MathAdd.js'; import './chunks/CM89_aaq.js'; import './BooleanNor.js'; import './BooleanNot.js'; import './BooleanOr.js'; import './Tuple.js'; import './chunks/DZEfmVOc.js'; import './BooleanAnd.js'; import './MaybeReadonly.js'; import './MathNegative.js'; /** * A function where the first parameter is already bound to `this`. * * @template T The function to bind. * @example BoundThis<(x: number, y: string) => boolean> // (this: number, y: string) => boolean */ type Bind = P extends [] ? T : P extends [this: infer This] ? (this: This, ...parameters: Parameters) => ReturnType : P extends [this: infer This, ...infer R] ? (this: This, ...parameters: TupleSlice, TupleLength>) => ReturnType : (...parameters: TupleSlice, TupleLength

>) => ReturnType; export type { Bind };