UNPKG

@omnia/fx-models

Version:
58 lines (57 loc) 2.27 kB
import { IMessageBusTopicSubscription } from "./Messaging"; export declare abstract class ReplaceToken { abstract readonly prefixToken: string; } export declare abstract class TokenDefinition<TokenValueType> extends ReplaceToken { cast(value: any): TokenValueType; dummy?: TokenValueType; } type PropType<TObj, TProp extends keyof TObj> = TObj[TProp]; export declare class TokenValue<TDefinition extends TokenDefinition<any>> { private definition; token: string; value: PropType<TDefinition, "dummy">; onChanged?: IMessageBusTopicSubscription<PropType<TDefinition, "dummy">>; constructor(definition: new () => TDefinition, token: string, // full token mtaching like CurrentTerm.termSetId=c43809d8-0691-490e-8316-24b912e4aa04 value: PropType<TDefinition, "dummy">, onChanged?: IMessageBusTopicSubscription<PropType<TDefinition, "dummy">>); isType(target: new () => TokenDefinition<any>): boolean; private _definitionInstance; } export interface TokenManifestConfiguration { prefixTokens: string[]; } export interface TokenRegistration { name: string; description?: string; } export interface ITokenRegistrationApi { register(tokens: TokenRegistration[]): void; getTokens(): TokenRegistration[]; } export interface ITokenProvider { resolve<TDefinition extends TokenDefinition<any>>(token: string): TokenValue<TDefinition> | Promise<TokenValue<TDefinition>>; } export interface ITokenProviderRegistration { register(registration: TokenProviderRegistration): void; getProviderByToken(token: string): Promise<new () => ITokenProvider>; } export declare class TokenProviderRegistration { tokens: Array<new () => TokenDefinition<any>>; provider: new () => ITokenProvider; constructor(tokens: Array<new () => TokenDefinition<any>>, provider: new () => ITokenProvider); } declare module "./Extends" { interface IOmniaFxApi { tokens: { registrations: Promise<ITokenRegistrationApi>; providers: Promise<ITokenProviderRegistration>; }; } interface IOmniaFxApiManifest { tokens: { registrations: ApiPath; providers: IExtendApiManifestWithConfiguration<TokenManifestConfiguration>; }; } } export {};