export interface IConfigValue { asBoolean ( ) : boolean ; asNumber ( ) : number ; asString ( ) : string ; getSource ( ) : 'default' | 'static' | 'remote' ; } export class IConfigSettings { fetchTimeMillis : number ; minimumFetchIntervalMillis : number ; } export interface ConfigDefaults { [ key ] : number | string | boolean ; } export interface IRemoteConfig { readonly fetchTimeMillis : number ; readonly lastFetchStatus : 'success' | 'failure' | 'no_fetch_yet' | 'throttled' ; settings : IConfigSettings ; activate ( ) : Promise < boolean > ; ensureInitialized ( ) : Promise < void > ; fetch ( expirationDurationSeconds ? ) : Promise < void > ; fetchAndActivate ( ) : Promise < boolean > ; getAll ( ) : Record < string , IConfigValue > ; getBoolean ( key ) : boolean ; getNumber ( key ) : number ; getString ( key ) : string ; getValue ( key ) : IConfigValue ; reset ( ) : Promise < void > ; setDefaults ( defaults ) : Promise < void > ; setDefaultsFromResource ( resourceName ) : Promise < void > ; }