import { ModuleMetadata, Type } from '@nestjs/common/interfaces'; import { Middleware, Telegraf } from 'telegraf'; export interface TelegrafModuleOptions { token: string; botName?: string; options?: Partial<Telegraf.Options<any>>; launchOptions?: Telegraf.LaunchOptions | false; include?: Function[]; middlewares?: ReadonlyArray<Middleware<any>>; } export interface TelegrafOptionsFactory { createTelegrafOptions(): Promise<TelegrafModuleOptions> | TelegrafModuleOptions; } export interface TelegrafModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> { botName?: string; useExisting?: Type<TelegrafOptionsFactory>; useClass?: Type<TelegrafOptionsFactory>; useFactory?: ( ...args: any[] ) => Promise<TelegrafModuleOptions> | TelegrafModuleOptions; inject?: any[]; }