import { CancellationToken , Uri } from 'vscode' ; export const IVariableService = Symbol ( 'IVariableGenerator' ) ; export type Variables = { readonly [ key ] : string ; } ; export type VariableDefinitions = { readonly [ key ] : string | string [ ] ; } ; export interface IVariableService { getVariableDefinitions ( filePath ) : Promise < VariableDefinitions > ; generateVariables ( definitions , workspaceFolder , token ) : Promise < Variables > ; } export const ITemplateIterator = Symbol ( 'ITemplateIterator' ) ; export type TemplateItem = { type : 'file' | 'folder' ; path : string ; } ; export interface ITemplateIterator { getTemplates ( ) : Promise < TemplateItem [ ] > ; } export const IInstaller = Symbol ( 'IInstaller' ) ; export interface IInstaller { install ( workspaceFolder ) : Promise < boolean > ; } export const ICookiecutter = Symbol ( 'ICookiecutter' ) ; export interface ICookiecutter { create ( workspaceFolder ) : Promise < void > ; } export const IUi = Symbol ( 'IUi' ) ; export interface IUi { selectOption ( description , defaultValue , options , token ? ) : Promise < string > ; selectYesNo ( description , defaultValue , token ? ) : Promise < boolean > ; provideValue ( description , defaultValue , token ? ) : Promise < string > ; }