@omnia/fx-models
Version: 
Provide Omnia Fx Models Stuffs.
58 lines (57 loc) • 2.27 kB
TypeScript
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 {};