{ lib, }: with lib; mkModule (self: { dtypes = mkModule (self': { blob = mkRepoType {}; json = mkRepoType { schema = { int = { type = "int"; }; str = { type = "str"; }; listOf = ety: { type = "list"; inherit ety; }; dictOf = kty: vty: { type = "dict"; inherit kty vty; }; }; }; filesystem = mkRepoType {}; foreignKeyOf = foreignClass: mkRepoType { class = foreignClass; }; seqOf = ty: mkRepoType { inherit ty; }; tupleOf = children: mkRepoType { inherit children; }; }); repoAdapters = mkModule (self': { seqToSpawn = mkAdapter { /* TODO */ }; tupleToRepos = mkAdapter { /* TODO */ }; }); })