import type { PartialList, λ } from "./types";
/**
 * Partially apply a function.
 *
 * @example
 * ```
 * const divide = (dividend: number, divisor: number) => dividend / divisor
 *
 * // (divisor: number) => number
 * const oneOver = partial(divide, 1)
 *
 * // prints: 0.25
 * console.log(oneOver(4))
 * ```
 */
declare const partial: <T extends λ<any[], any>, PL extends PartialList<Parameters<T>>>(fun: T, ...argsLeft: PL) => (...argsRight: Parameters<T> extends [...PL, ...infer PR] ? PR : never) => ReturnType<T>;
export default partial;
