import { unwrap, Unwrapped, Type, A } from "free-types-core"; import { $Accessor, $Iterator } from "./types.js"; export { $Free }; interface $Free> extends $Iterator { value: $GetValue; path: $GetPath; done: $Done; } interface $GetValue extends $Accessor { type: Args[A]; } interface $GetPath<$T extends Type> extends $Accessor { type: [$T, A]; } interface $Done extends $Accessor { type: A extends Args['length'] ? true : false; }