UNPKG

1.94 kBTypeScriptView Raw
1import {ConfigurationBase} from './config';
2
3export declare abstract class IApplication {
4 /**
5 * Registers an application strategy e.g. an singleton service which to be used in application context
6 * @param {Function} serviceCtor
7 * @param {Function} strategyCtor
8 * @returns IApplication
9 */
10 abstract useStrategy(serviceCtor: void, strategyCtor: void): this;
11 /**
12 * @param {Function} serviceCtor
13 * @returns {boolean}
14 */
15 abstract hasStrategy(serviceCtor: void): boolean;
16
17 /**
18 * @param serviceCtor
19 */
20 abstract getStrategy<T>(serviceCtor: new() => T): T;
21
22 /**
23 * Gets the configuration of this application
24 * @returns {ConfigurationBase}
25 */
26 abstract getConfiguration(): ConfigurationBase;
27}
28
29export declare abstract class IApplicationService {
30 /**
31 * Gets the application of this service
32 * @returns {ApplicationBase}
33 */
34 abstract getApplication(): ApplicationBase;
35}
36
37
38// tslint:disable-next-line:ban-types
39export declare type ApplicationServiceConstructor<T> = Function & { prototype: T };
40
41export declare interface ApplicationBase {
42
43 readonly configuration: ConfigurationBase;
44
45 useStrategy(serviceCtor: ApplicationServiceConstructor<any>, strategyCtor: ApplicationServiceConstructor<any>): this;
46
47 useService(serviceCtor: ApplicationServiceConstructor<any>): this;
48
49 hasService<T>(serviceCtor: ApplicationServiceConstructor<T>): boolean;
50
51 getService<T>(serviceCtor: ApplicationServiceConstructor<T>): T;
52
53 getConfiguration(): ConfigurationBase;
54}
55
56export declare class ApplicationService implements IApplicationService {
57 readonly application: ApplicationBase;
58 /**
59 * @constructor
60 * @param {ApplicationBase=} app
61 */
62 constructor(app: ApplicationBase);
63 /**
64 * Gets the application of this service
65 * @returns {ApplicationBase}
66 */
67 getApplication(): ApplicationBase;
68}
69
70
71
\No newline at end of file