diff --git a/src/apps/rednatco/api-impl.ts b/src/apps/rednatco/api-impl.ts
index b559ba13ce40c579f7a70d7d972504e93bf32c6b..4a4dafce40a1b51929171976addddea744d82de9 100644
--- a/src/apps/rednatco/api-impl.ts
+++ b/src/apps/rednatco/api-impl.ts
@@ -39,8 +39,8 @@ export class ReDNATCOMspApiImpl implements ReDNATCOMspApi.Object {
this.target!.loadStructure(data, type);
}
- query(type: ReDNATCOMspApi.Queries.Type): ReDNATCOMspApi.Response {
+ query<T extends ReDNATCOMspApi.Queries.Type>(type: T): ReDNATCOMspApi.ResponseTypes[T] {
this.check();
- return this.target!.apiQuery(type);
+ return this.target!.apiQuery(type) as ReDNATCOMspApi.ResponseTypes[T];
}
}
diff --git a/src/apps/rednatco/api.ts b/src/apps/rednatco/api.ts
index b53d578014a28788e487d24c8ce0765e588e92fd..8ccf9a541559c435a7459ec1ea4f28bfb2024990 100644
--- a/src/apps/rednatco/api.ts
+++ b/src/apps/rednatco/api.ts
@@ -106,6 +106,10 @@ export namespace ReDNATCOMspApi {
}
}
export type Response = Queries.CurrentFilter|Queries.SelectedStep;
+ export type ResponseTypes = {
+ 'current-filter': Queries.CurrentFilter,
+ 'selected-step': Queries.SelectedStep,
+ }
export interface Object {
command: (cmd: Command) => void;
@@ -113,6 +117,6 @@ export namespace ReDNATCOMspApi {
init: (elemId: string, onEvent?: (evt: Event) => void) => void;
isReady: () => boolean;
loadStructure: (data: string, type: 'cif'|'pdb') => void;
- query: (type: Queries.Type) => Response;
+ query: <T extends Queries.Type>(type: T) => ResponseTypes[T];
}
}