// types only, import as `import type { ... } ...` /** linear bezier curve implicit form coefficients */ type ImplicitForm1Coeffs = { vₓ : T; vᵧ : T; v : T; } /** quadratic bezier curve implicit form coefficients */ type ImplicitForm2Coeffs = ImplicitForm1Coeffs & { vₓₓ : T; vₓᵧ : T; vᵧᵧ : T; } /** cubic bezier curve implicit form coefficients */ type ImplicitForm3Coeffs = ImplicitForm2Coeffs & { vₓₓₓ : T; vₓₓᵧ : T; vₓᵧᵧ : T; vᵧᵧᵧ : T; } /** linear bezier curve implicit form coefficient errors */ type ImplicitForm1CoeffErrors = { vₓ_ : number; vᵧ_ : number; v_ : number; } /** quadratic bezier curve implicit form coefficients */ type ImplicitForm2CoeffErrors = ImplicitForm1CoeffErrors & { vₓₓ_ : number; vₓᵧ_ : number; vᵧᵧ_ : number; } /** cubic bezier curve implicit form coefficients */ type ImplicitForm3CoeffErrors = ImplicitForm2CoeffErrors & { vₓₓₓ_ : number; vₓₓᵧ_ : number; vₓᵧᵧ_ : number; vᵧᵧᵧ_ : number; } type ImplicitForm1 = { coeffs: ImplicitForm1Coeffs; errorBound: ImplicitForm1CoeffErrors; } type ImplicitForm2 = { coeffs: ImplicitForm2Coeffs; errorBound: ImplicitForm2CoeffErrors; } type ImplicitForm3 = { coeffs: ImplicitForm3Coeffs; errorBound: ImplicitForm3CoeffErrors; } type ImplicitForm = | ImplicitForm1 | ImplicitForm2 | ImplicitForm3; type ImplicitFormDouble = ImplicitForm; type ImplicitFormDd = ImplicitForm; type ImplicitFormExact1 = ImplicitForm1Coeffs; type ImplicitFormExact2 = ImplicitForm2Coeffs; type ImplicitFormExact3 = ImplicitForm3Coeffs; type ImplicitFormExact = | ImplicitFormExact1 | ImplicitFormExact2 | ImplicitFormExact3; //type CoeffKeys = keyof Coeffs; //type CoeffErrorKeys = keyof CoeffErrors; export type { ImplicitForm1, ImplicitForm2, ImplicitForm3, ImplicitForm, ImplicitFormDd, ImplicitFormDouble, ImplicitForm1Coeffs, ImplicitForm2Coeffs, ImplicitForm3Coeffs, ImplicitForm1CoeffErrors, ImplicitForm2CoeffErrors, ImplicitForm3CoeffErrors, ImplicitFormExact1, ImplicitFormExact2, ImplicitFormExact3, ImplicitFormExact }