import { Schema as S } from "@effect/schema" import { AbstractClass, Simplify } from "type-fest" import { Trait, TraitTuple } from "../Trait" import { TraitExpression } from "../TraitExpression" import { Extend, StaticMembers } from "../util" export function extendsEffectSchemaExpression< Fields extends S.Struct.Fields, A, I, R, C, Inherited, Proto, const Traits extends readonly Trait[], >( expression: TraitExpression< S.Class, Traits > ) { return (): ( AbstractClass< InstanceType< S.Class > & Simplify< Extend> >, ConstructorParameters> > & StaticMembers< S.Class > & Simplify< Extend> > ) => expression.extends as any }