import type * as VAN from "https://vanjs.org/code/van-1.5.5.d.ts"; import type * as VANX from "https://vanjs.org/code/van-x-0.6.3.d.ts"; type Replace = Omit & { readonly [P in K]: R }; declare module "vanjs-core" { export type State = VAN.State } declare global { namespace Van { export type * from "https://vanjs.org/code/van-1.5.5.d.ts"; } namespace VanX { export type * from "https://vanjs.org/code/van-x-0.6.3.d.ts"; } const van: Replace(arg:T, HMRKey?:string)=>VAN.State> const vanX: Replace(obj: T, HMRKey?:string) => T> & {Store:(obj:T, key:string)=>T} } declare global { namespace Gale { type KeyQuery = "@"; type KeyState = ":"; type KeyChild = "."; type KeyGroup = "^"; type UserStyles = Partial & {[key: `${KeyQuery|KeyState|KeyChild|KeyGroup}${string}`]: UserStyles } type UserSheet = Record type CollectKeys = {[Key in keyof Obj]: Obj[Key] extends object ? Key | CollectKeys : Key }[keyof Obj] type FilterKeys = Keys extends `${KeyChild|KeyGroup}${infer Rest}` ? Keys : never type CrossMultiply = A extends string ? B extends string ? `${A}${B}` : never : never type CrossMultiplyRecord = keyof Rec | { [K in keyof Rec]: K extends string ? CrossMultiply>> : never }[keyof Rec] type Tier = (selector:string, obj:UserStyles, suffix:string)=>string; type CreateSheet = (sheet:UserSheet&T, hash?:string)=>{ Tag:(...args:CrossMultiplyRecord[])=>string, CSS:string, DOM:Elemental>, Div:Circular, Van.TagFunc> } type Elemental = {[K in keyof HTMLElementTagNameMap]: Van.TagFunc&Circular>} type Circular = { [K in Keys]: Circular&Func }; } const Gale:Gale.CreateSheet } declare global { namespace JSS { type Block = Partial> type Responsive = Record type Unit = "px" | "em" | "rem" | "%" | "vh" | "vw" | "vmin" | "vmax" | "cm" | "mm" | "in" | "pt" | "pc" | "ch" | "ex" type UnitValue = `${number}${Unit}` | [amount:number, unit:Unit] type HexNumber = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"0"|"a"|"b"|"c"|"d"|"e"|"f" type HexTriplet = `#${HexNumber}${HexNumber}${HexNumber}` type HexColor = `#${HexNumber}${HexNumber}${HexNumber}${HexNumber}${HexNumber}${HexNumber}` type Rules = { fontSize: UnitValue, letterSpacing: UnitValue } type SheetGen =(mobile:Block, conditions?:Responsive)=> void } const Sheet:JSS.SheetGen }