UNPKG

@altostra/core

Version:

Core library for shared types and logic

31 lines (30 loc) 1.17 kB
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>;