import { TSESTree } from "@typescript-eslint/types"; import { SourceCode } from "eslint"; //#region src/type-tracer/types.d.ts type TypeName = "Array" | "Date" | "Function" | "Intl.Collator" | "Intl.DateTimeFormat" | "Intl.ListFormat" | "Intl.NumberFormat" | "Intl.PluralRules" | "Intl.RelativeTimeFormat" | "Intl.Segmenter" | "Intl.DisplayNames" | "Intl.Locale" | "Intl.DurationFormat" | "Promise" | "RegExp" | "String" | "Symbol" | "Int8Array" | "Uint8Array" | "Uint8ClampedArray" | "Int16Array" | "Uint16Array" | "Int32Array" | "Uint32Array" | "Float16Array" | "Float32Array" | "Float64Array" | "BigInt64Array" | "BigUint64Array" | "DataView" | "ArrayBuffer" | "SharedArrayBuffer" | "Object" | "Number" | "Boolean" | "BigInt" | "Iterator" | "DisposableStack" | "AsyncDisposableStack" | "Map" | "Set" | "WeakMap" | "WeakSet" | "WeakRef" | "FinalizationRegistry" | "Error" | "Temporal.Duration" | "Temporal.Instant" | "Temporal.PlainDate" | "Temporal.PlainDateTime" | "Temporal.PlainMonthDay" | "Temporal.PlainTime" | "Temporal.PlainYearMonth" | "Temporal.ZonedDateTime" | "null" | "undefined"; //#endregion //#region src/type-tracer/utils.d.ts type TypeTracer = (node: TSESTree.Expression) => TypeName[]; type TypeChecker = (node: TSESTree.Expression, className: TypeName, memberAccessNode?: TSESTree.MemberExpression | TSESTree.Property) => boolean | "aggressive"; //#endregion //#region src/type-tracer/type-tracer.d.ts type TypeCheckerOptions = { aggressive?: boolean; }; /** * Build type tracer. * @param context The rule context. * @returns Returns a type tracer. */ declare function buildTypeTracer(sourceCode: SourceCode): TypeTracer; /** * Build type checker. * @param context The rule context. * @param aggressiveResult The value to return if the type cannot be determined. * @returns Returns a type checker. */ declare function buildTypeChecker(sourceCode: SourceCode, options?: TypeCheckerOptions): TypeChecker; //#endregion export { type TypeChecker, type TypeCheckerOptions, type TypeName, type TypeTracer, buildTypeChecker, buildTypeTracer };