import type { ReplaceSelf, ReplaceSelfInTuple } from "./replace-self.js"; import type { Trait } from "@tsimpl/core"; export type BoundTrait = { [Key in keyof TTrait]: TTrait[Key] extends (self: any, ...args: infer Args) => infer Result ? (...args: ReplaceSelfInTuple) => ReplaceSelf : ReplaceSelf; }; export type ExtractTrait = BoundTrait;