@altostra/core
Version:
Core library for shared types and logic
31 lines (30 loc) • 1.17 kB
TypeScript
import type { Template } from "./Template";
/**
* Templates provider interface
*/
export interface TemplatesProvider<TType extends string, TTemplate extends Template<TType>> {
/**
* The type of this template provider
*/
readonly type: TType;
/**
* Lists the templates that are provided by this templates provider
*/
list(): Promise<string[]>;
/**
* Gets a template by its name
* @param name The name of the template to get
* @returns The template with the specified name
*/
get(name: string): Promise<TTemplate>;
}
/**
* Provides basic `TemplatesProvider<TType, TTemplate>` implementation
*/
export declare abstract class TemplatesProviderBase<TType extends string, TTemplate extends Template<TType>> implements TemplatesProvider<TType, TTemplate> {
readonly type: TType;
constructor(type: TType);
abstract list(): Promise<string[]>;
abstract get(name: string): Promise<TTemplate>;
}
export declare function isTemplateProvider<TType extends string = string, TTemplate extends Template<TType> = Template<TType>>(val: unknown, type?: TType): val is TemplatesProvider<TType, TTemplate>;