diff --git a/packages/core-api/src/apis/types.ts b/packages/core-api/src/apis/types.ts index 52355f5396..bb09fbecae 100644 --- a/packages/core-api/src/apis/types.ts +++ b/packages/core-api/src/apis/types.ts @@ -22,7 +22,7 @@ export type ApiRefType = T extends ApiRef ? U : never; export type TypesToApiRefs = { [key in keyof T]: ApiRef }; -export type ApiRefsToTypes }> = { +export type ApiRefsToTypes }> = { [key in keyof T]: ApiRefType; }; @@ -30,10 +30,24 @@ export type ApiHolder = { get(api: ApiRef): T | undefined; }; -export type ApiFactory = { +export type ApiFactory< + Api, + Impl, + Deps extends { [name in string]: unknown } +> = { implements: ApiRef; deps: TypesToApiRefs; factory(deps: Deps): Impl extends Api ? Impl : never; }; -export type AnyApiFactory = ApiFactory; +export type AnyApiFactory = ApiFactory< + unknown, + unknown, + { [key in string]: unknown } +>; + +export type ApiFactoryHolder = { + get( + api: ApiRef, + ): ApiFactory | undefined; +};