import { EventCallback, WebAppInitData, WebAppUser } from './sdk'; type BOT_API_VERSIONS = [ '6.0', '6.1', '6.2', '6.4', '6.7', '6.9', '7.0', '7.2', '7.6', '7.7', '7.8', '7.10', '8.0', '9.0', '9.1', '9.5' ]; export type LATEST_VERSION = '9.5'; type Reverse = T extends [infer First, ...infer Rest] ? [...Reverse, First] : []; type Equals = X extends Y ? (Y extends X ? true : false) : false; export type Merge = Omit & U; export type SchemaBase = Merge, Base>; export type BotApiVersion = BOT_API_VERSIONS[number]; type VersionMap = T extends readonly [infer First extends BotApiVersion, infer Second extends BotApiVersion, ...infer Rest extends BotApiVersion[]] ? VersionMap<[Second, ...Rest], R & { [K in First]: Second; }> : R; type BotApiNextVersionMap = VersionMap; export type BotApiNextVersion = V extends keyof BotApiNextVersionMap ? BotApiNextVersionMap[V] : never; type BotApiPrevVersionMap = VersionMap>; export type BotApiPrevVersion = V extends keyof BotApiPrevVersionMap ? BotApiPrevVersionMap[V] : never; export type BotApiVersionRange = Equals extends true ? Start : Start | BotApiVersionRange, End>; type FilterSchemaByMinVersion = Schema extends { version: infer V; } ? V extends BotApiVersionRange ? Schema : never : Schema; export type VersionedReturnType = Omit, 'isVersionAtLeast'> & { isVersionAtLeast: (version: V) => this is VersionedReturnType; }; export type VersionedSchemaUnion, TVersions extends readonly BotApiVersion[]> = TVersions extends readonly [ infer Current extends keyof TSchema & BotApiVersion, infer Next extends BotApiVersion, ...infer Rest extends BotApiVersion[] ] ? (TSchema[Current] & { version: BotApiVersionRange>; }) | VersionedSchemaUnion : TVersions extends readonly [infer Last extends keyof TSchema & BotApiVersion] ? (TSchema[Last] & { version: BotApiVersionRange; }) : never; export type SinceUntil, Since extends keyof TSchema & BotApiVersion, Until extends BotApiVersion> = TSchema[Since] & { version: BotApiVersionRange>; }; export type SinceLatest, Since extends keyof TSchema & BotApiVersion> = TSchema[Since] & { version: BotApiVersionRange; }; /** * Mini Apps */ export type OnEventReturn = { off: () => void; }; export type OnEventOptions = { /** * Disables automatic subscription management; you need to call the returned function `off` to unsubscribe. * * Set to `false` by default. */ manual?: boolean; }; export type OnEventWithOptions = { (eventType: T, eventHandler: EventCallback[T], options?: O): OnEventReturn; }; /** * Widgets */ export type LoginWidgetUser = Pick & Pick; export {};