export declare type NativeType = { case: 'native'; data: { name: string; parameters: { name: string; }[]; }; }; export declare type GenericParam = { case: 'generic'; name: string; }; export declare type TypeParam = { case: 'type'; name: string; substitutions: { generic: string; instance: string; }[]; }; export declare type Param = GenericParam | TypeParam; export declare type NormalCase = { case: 'normal'; name: string; params: { value: Param; }[]; }; export declare type RecordCase = { case: 'record'; name: string; params: { key: string; value: Param; }[]; }; export declare type Case = NormalCase | RecordCase; export declare type UserType = { case: 'type'; data: { name: string; cases: Case[]; }; }; export declare type Type = NativeType | UserType; export declare type Root = { types: Type[]; };