From 34515759c014eecda74aab16a465c2121c3f51b7 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 17 Nov 2017 20:36:43 -0800 Subject: [PATCH 01/29] Infer type parameters from indexes on those parameters --- src/compiler/checker.ts | 90 ++++++++++++++----- src/compiler/types.ts | 4 + .../reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + .../reference/indexAccessCombinedInference.js | 29 ++++++ .../indexAccessCombinedInference.symbols | 46 ++++++++++ .../indexAccessCombinedInference.types | 54 +++++++++++ .../baselines/reference/inferingFromAny.types | 2 +- .../compiler/indexAccessCombinedInference.ts | 17 ++++ 9 files changed, 221 insertions(+), 23 deletions(-) create mode 100644 tests/baselines/reference/indexAccessCombinedInference.js create mode 100644 tests/baselines/reference/indexAccessCombinedInference.symbols create mode 100644 tests/baselines/reference/indexAccessCombinedInference.types create mode 100644 tests/cases/compiler/indexAccessCombinedInference.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 87d95b64d31cb..60d817623eaed 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2645,8 +2645,8 @@ namespace ts { function createMappedTypeNodeFromType(type: MappedType) { Debug.assert(!!(type.flags & TypeFlags.Object)); - const readonlyToken = type.declaration && type.declaration.readonlyToken ? createToken(SyntaxKind.ReadonlyKeyword) : undefined; - const questionToken = type.declaration && type.declaration.questionToken ? createToken(SyntaxKind.QuestionToken) : undefined; + const readonlyToken = isReadonlyMappedType(type) ? createToken(SyntaxKind.ReadonlyKeyword) : undefined; + const questionToken = isOptionalMappedType(type) ? createToken(SyntaxKind.QuestionToken) : undefined; const typeParameterNode = typeParameterToDeclaration(getTypeParameterFromMappedType(type), context); const templateTypeNode = typeToTypeNodeHelper(getTemplateTypeFromMappedType(type), context); @@ -3717,7 +3717,7 @@ namespace ts { writePunctuation(writer, SyntaxKind.OpenBraceToken); writer.writeLine(); writer.increaseIndent(); - if (type.declaration.readonlyToken) { + if (isReadonlyMappedType(type)) { writeKeyword(writer, SyntaxKind.ReadonlyKeyword); writeSpace(writer); } @@ -3728,7 +3728,7 @@ namespace ts { writeSpace(writer); writeType(getConstraintTypeFromMappedType(type), TypeFormatFlags.None); writePunctuation(writer, SyntaxKind.CloseBracketToken); - if (type.declaration.questionToken) { + if (isOptionalMappedType(type)) { writePunctuation(writer, SyntaxKind.QuestionToken); } writePunctuation(writer, SyntaxKind.ColonToken); @@ -6108,11 +6108,9 @@ namespace ts { const constraintType = getConstraintTypeFromMappedType(type); const templateType = getTemplateTypeFromMappedType(type); const modifiersType = getApparentType(getModifiersTypeFromMappedType(type)); // The 'T' in 'keyof T' - const templateReadonly = !!type.declaration.readonlyToken; - const templateOptional = !!type.declaration.questionToken; - const constraintDeclaration = type.declaration.typeParameter.constraint; - if (constraintDeclaration.kind === SyntaxKind.TypeOperator && - (constraintDeclaration).operator === SyntaxKind.KeyOfKeyword) { + const templateReadonly = isReadonlyMappedType(type); + const templateOptional = isOptionalMappedType(type); + if (isPossiblyHomomorphicMappedType(type)) { // We have a { [P in keyof T]: X } for (const propertySymbol of getPropertiesOfType(modifiersType)) { addMemberForKeyType(getLiteralTypeFromPropertyName(propertySymbol), propertySymbol); @@ -6180,15 +6178,14 @@ namespace ts { function getTemplateTypeFromMappedType(type: MappedType) { return type.templateType || (type.templateType = type.declaration.type ? - instantiateType(addOptionality(getTypeFromTypeNode(type.declaration.type), !!type.declaration.questionToken), type.mapper || identityMapper) : + instantiateType(addOptionality(getTypeFromTypeNode(type.declaration.type), isOptionalMappedType(type)), type.mapper || identityMapper) : unknownType); } function getModifiersTypeFromMappedType(type: MappedType) { if (!type.modifiersType) { - const constraintDeclaration = type.declaration.typeParameter.constraint; - if (constraintDeclaration.kind === SyntaxKind.TypeOperator && - (constraintDeclaration).operator === SyntaxKind.KeyOfKeyword) { + if (isPossiblyHomomorphicMappedType(type)) { + const constraintDeclaration = type.declaration.typeParameter.constraint; // If the constraint declaration is a 'keyof T' node, the modifiers type is T. We check // AST nodes here because, when T is a non-generic type, the logic below eagerly resolves // 'keyof T' to a literal union type and we can't recover T from that type. @@ -6208,8 +6205,8 @@ namespace ts { } function getMappedTypeModifiers(type: MappedType): MappedTypeModifiers { - return (type.declaration.readonlyToken ? MappedTypeModifiers.Readonly : 0) | - (type.declaration.questionToken ? MappedTypeModifiers.Optional : 0); + return (isReadonlyMappedType(type) ? MappedTypeModifiers.Readonly : 0) | + (isOptionalMappedType(type) ? MappedTypeModifiers.Optional : 0); } function getCombinedMappedTypeModifiers(type: MappedType): MappedTypeModifiers { @@ -6219,7 +6216,7 @@ namespace ts { } function isPartialMappedType(type: Type) { - return getObjectFlags(type) & ObjectFlags.Mapped && !!(type).declaration.questionToken; + return getObjectFlags(type) & ObjectFlags.Mapped && isOptionalMappedType(type as MappedType); } function isGenericMappedType(type: Type) { @@ -9885,7 +9882,7 @@ namespace ts { if (target.flags & TypeFlags.TypeParameter) { // A source type { [P in keyof T]: X } is related to a target type T if X is related to T[P]. if (getObjectFlags(source) & ObjectFlags.Mapped && getConstraintTypeFromMappedType(source) === getIndexType(target)) { - if (!(source).declaration.questionToken) { + if (!isOptionalMappedType(source)) { const templateType = getTemplateTypeFromMappedType(source); const indexedAccessType = getIndexedAccessType(target, getTypeParameterFromMappedType(source)); if (result = isRelatedTo(templateType, indexedAccessType, reportErrors)) { @@ -11197,7 +11194,8 @@ namespace ts { inferredType: undefined, priority: undefined, topLevel: true, - isFixed: false + isFixed: false, + indexes: undefined, }; } @@ -11208,7 +11206,8 @@ namespace ts { inferredType: inference.inferredType, priority: inference.priority, topLevel: inference.topLevel, - isFixed: inference.isFixed + isFixed: inference.isFixed, + indexes: inference.indexes && inference.indexes.slice(), }; } @@ -11271,8 +11270,8 @@ namespace ts { const inference = createInferenceInfo(typeParameter); const inferences = [inference]; const templateType = getTemplateTypeFromMappedType(target); - const readonlyMask = target.declaration.readonlyToken ? false : true; - const optionalMask = target.declaration.questionToken ? 0 : SymbolFlags.Optional; + const readonlyMask = isReadonlyMappedType(target) ? false : true; + const optionalMask = isOptionalMappedType(target) ? 0 : SymbolFlags.Optional; const members = createSymbolTable(); for (const prop of properties) { const propType = getTypeOfSymbol(prop); @@ -11399,6 +11398,27 @@ namespace ts { } return; } + else if (target.flags & TypeFlags.IndexedAccess) { + const targetConstraint = (target).objectType; + const inference = getInferenceInfoForType(targetConstraint); + if (inference) { + if (!inference.isFixed) { + const map = createObjectType(ObjectFlags.Mapped); + map.templateType = source; + map.constraintType = (target).indexType; + map.typeParameter = createType(TypeFlags.TypeParameter); + // TODO (weswigham): Ensure the name chosen for the unused "K" does not shadow any other type variables in the given scope, so as to not have a chance of breaking declaration emit + map.typeParameter.symbol = createSymbol(SymbolFlags.TypeParameter, "K" as __String); + map.typeParameter.constraint = map.constraintType; + map.modifiersType = (target).indexType; + map.hasQuestionToken = false; + map.hasReadonlyToken = false; + map.hasPossiblyHomomorphicConstraint = false; + (inference.indexes || (inference.indexes = [])).push(map); + } + return; + } + } } if (getObjectFlags(source) & ObjectFlags.Reference && getObjectFlags(target) & ObjectFlags.Reference && (source).target === (target).target) { // If source and target are references to the same generic type, infer from type arguments @@ -11665,6 +11685,10 @@ namespace ts { const inference = context.inferences[index]; let inferredType = inference.inferredType; if (!inferredType) { + if (inference.indexes) { + // Build a candidate from all indexes + (inference.candidates || (inference.candidates = [])).push(getIntersectionType(inference.indexes)); + } if (inference.candidates) { // Extract all object literal types and replace them with a single widened and normalized type. const candidates = widenObjectLiteralCandidates(inference.candidates); @@ -20088,6 +20112,28 @@ namespace ts { forEach(node.types, checkSourceElement); } + function isReadonlyMappedType(type: MappedType) { + if (type.hasReadonlyToken === undefined) { + type.hasReadonlyToken = !!type.declaration.readonlyToken; + } + return type.hasReadonlyToken; + } + + function isOptionalMappedType(type: MappedType) { + if (type.hasQuestionToken === undefined) { + type.hasQuestionToken = !!type.declaration.questionToken; + } + return type.hasQuestionToken; + } + + function isPossiblyHomomorphicMappedType(type: MappedType) { + if (type.hasPossiblyHomomorphicConstraint === undefined) { + const constraint = type.declaration.typeParameter.constraint; + type.hasPossiblyHomomorphicConstraint = isTypeOperatorNode(constraint) && constraint.operator === SyntaxKind.KeyOfKeyword; + } + return type.hasPossiblyHomomorphicConstraint; + } + function checkIndexedAccessIndexType(type: Type, accessNode: ElementAccessExpression | IndexedAccessTypeNode) { if (!(type.flags & TypeFlags.IndexedAccess)) { return type; @@ -20097,7 +20143,7 @@ namespace ts { const indexType = (type).indexType; if (isTypeAssignableTo(indexType, getIndexType(objectType))) { if (accessNode.kind === SyntaxKind.ElementAccessExpression && isAssignmentTarget(accessNode) && - getObjectFlags(objectType) & ObjectFlags.Mapped && (objectType).declaration.readonlyToken) { + getObjectFlags(objectType) & ObjectFlags.Mapped && isReadonlyMappedType(objectType)) { error(accessNode, Diagnostics.Index_signature_in_type_0_only_permits_reading, typeToString(objectType)); } return type; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index dfd6831be42f7..890746dc27636 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3594,6 +3594,9 @@ namespace ts { constraintType?: Type; templateType?: Type; modifiersType?: Type; + hasQuestionToken?: boolean; + hasReadonlyToken?: boolean; + hasPossiblyHomomorphicConstraint?: boolean; } export interface EvolvingArrayType extends ObjectType { @@ -3744,6 +3747,7 @@ namespace ts { export interface InferenceInfo { typeParameter: TypeParameter; candidates: Type[]; + indexes: Type[]; // Partial candidates created by indexed accesses inferredType: Type; priority: InferencePriority; topLevel: boolean; diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index ad34924a097f9..c566c2df83734 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2154,6 +2154,7 @@ declare namespace ts { interface InferenceInfo { typeParameter: TypeParameter; candidates: Type[]; + indexes: Type[]; inferredType: Type; priority: InferencePriority; topLevel: boolean; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 4d06e48dc2565..fefe085fe11db 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2154,6 +2154,7 @@ declare namespace ts { interface InferenceInfo { typeParameter: TypeParameter; candidates: Type[]; + indexes: Type[]; inferredType: Type; priority: InferencePriority; topLevel: boolean; diff --git a/tests/baselines/reference/indexAccessCombinedInference.js b/tests/baselines/reference/indexAccessCombinedInference.js new file mode 100644 index 0000000000000..a3f19fa7fcc67 --- /dev/null +++ b/tests/baselines/reference/indexAccessCombinedInference.js @@ -0,0 +1,29 @@ +//// [indexAccessCombinedInference.ts] +interface Args { + TA: object, + TY: object +} + +function foo( + a: T["TA"], + b: T["TY"]): T["TA"] & T["TY"] { + return undefined!; +} + +const x = foo({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); + +//// [indexAccessCombinedInference.js] +function foo(a, b) { + return undefined; +} +var x = foo({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); diff --git a/tests/baselines/reference/indexAccessCombinedInference.symbols b/tests/baselines/reference/indexAccessCombinedInference.symbols new file mode 100644 index 0000000000000..c422efe422c8c --- /dev/null +++ b/tests/baselines/reference/indexAccessCombinedInference.symbols @@ -0,0 +1,46 @@ +=== tests/cases/compiler/indexAccessCombinedInference.ts === +interface Args { +>Args : Symbol(Args, Decl(indexAccessCombinedInference.ts, 0, 0)) + + TA: object, +>TA : Symbol(Args.TA, Decl(indexAccessCombinedInference.ts, 0, 16)) + + TY: object +>TY : Symbol(Args.TY, Decl(indexAccessCombinedInference.ts, 1, 15)) +} + +function foo( +>foo : Symbol(foo, Decl(indexAccessCombinedInference.ts, 3, 1)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) +>Args : Symbol(Args, Decl(indexAccessCombinedInference.ts, 0, 0)) + + a: T["TA"], +>a : Symbol(a, Decl(indexAccessCombinedInference.ts, 5, 29)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) + + b: T["TY"]): T["TA"] & T["TY"] { +>b : Symbol(b, Decl(indexAccessCombinedInference.ts, 6, 15)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) + + return undefined!; +>undefined : Symbol(undefined) +} + +const x = foo({ +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 11, 5)) +>foo : Symbol(foo, Decl(indexAccessCombinedInference.ts, 3, 1)) + + x: { +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 11, 15)) + + j: 12, +>j : Symbol(j, Decl(indexAccessCombinedInference.ts, 12, 8)) + + i: 11 +>i : Symbol(i, Decl(indexAccessCombinedInference.ts, 13, 14)) + } +}, { y: 42 }); +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 16, 4)) + diff --git a/tests/baselines/reference/indexAccessCombinedInference.types b/tests/baselines/reference/indexAccessCombinedInference.types new file mode 100644 index 0000000000000..f32c28de6266f --- /dev/null +++ b/tests/baselines/reference/indexAccessCombinedInference.types @@ -0,0 +1,54 @@ +=== tests/cases/compiler/indexAccessCombinedInference.ts === +interface Args { +>Args : Args + + TA: object, +>TA : object + + TY: object +>TY : object +} + +function foo( +>foo : (a: T["TA"], b: T["TY"]) => T["TA"] & T["TY"] +>T : T +>Args : Args + + a: T["TA"], +>a : T["TA"] +>T : T + + b: T["TY"]): T["TA"] & T["TY"] { +>b : T["TY"] +>T : T +>T : T +>T : T + + return undefined!; +>undefined! : undefined +>undefined : undefined +} + +const x = foo({ +>x : { x: { j: number; i: number; }; } & { y: number; } +>foo({ x: { j: 12, i: 11 }}, { y: 42 }) : { x: { j: number; i: number; }; } & { y: number; } +>foo : (a: T["TA"], b: T["TY"]) => T["TA"] & T["TY"] +>{ x: { j: 12, i: 11 }} : { x: { j: number; i: number; }; } + + x: { +>x : { j: number; i: number; } +>{ j: 12, i: 11 } : { j: number; i: number; } + + j: 12, +>j : number +>12 : 12 + + i: 11 +>i : number +>11 : 11 + } +}, { y: 42 }); +>{ y: 42 } : { y: number; } +>y : number +>42 : 42 + diff --git a/tests/baselines/reference/inferingFromAny.types b/tests/baselines/reference/inferingFromAny.types index 72e2024d0224e..dc660cdebc17d 100644 --- a/tests/baselines/reference/inferingFromAny.types +++ b/tests/baselines/reference/inferingFromAny.types @@ -293,7 +293,7 @@ var a = f18(a); var a = f19(a, a); >a : any ->f19(a, a) : any +>f19(a, a) : { [K in K]: any; } >f19 : (k: K, x: T[K]) => T >a : any >a : any diff --git a/tests/cases/compiler/indexAccessCombinedInference.ts b/tests/cases/compiler/indexAccessCombinedInference.ts new file mode 100644 index 0000000000000..c1d7f03ac22ee --- /dev/null +++ b/tests/cases/compiler/indexAccessCombinedInference.ts @@ -0,0 +1,17 @@ +interface Args { + TA: object, + TY: object +} + +function foo( + a: T["TA"], + b: T["TY"]): T["TA"] & T["TY"] { + return undefined!; +} + +const x = foo({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); \ No newline at end of file From f5b208c23f20125dad1d5ba1ffc38cac1c0a7e4b Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 21 Nov 2017 16:57:34 -0800 Subject: [PATCH 02/29] Greatly simplify partial inference type instantiation through use of an alias in lib --- src/compiler/checker.ts | 79 +++++++------------ src/lib/es5.d.ts | 9 +++ .../baselines/reference/inferingFromAny.types | 2 +- 3 files changed, 38 insertions(+), 52 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 60d817623eaed..d5e27dbeba82d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2645,8 +2645,8 @@ namespace ts { function createMappedTypeNodeFromType(type: MappedType) { Debug.assert(!!(type.flags & TypeFlags.Object)); - const readonlyToken = isReadonlyMappedType(type) ? createToken(SyntaxKind.ReadonlyKeyword) : undefined; - const questionToken = isOptionalMappedType(type) ? createToken(SyntaxKind.QuestionToken) : undefined; + const readonlyToken = type.declaration && type.declaration.readonlyToken ? createToken(SyntaxKind.ReadonlyKeyword) : undefined; + const questionToken = type.declaration && type.declaration.questionToken ? createToken(SyntaxKind.QuestionToken) : undefined; const typeParameterNode = typeParameterToDeclaration(getTypeParameterFromMappedType(type), context); const templateTypeNode = typeToTypeNodeHelper(getTemplateTypeFromMappedType(type), context); @@ -3717,7 +3717,7 @@ namespace ts { writePunctuation(writer, SyntaxKind.OpenBraceToken); writer.writeLine(); writer.increaseIndent(); - if (isReadonlyMappedType(type)) { + if (type.declaration.readonlyToken) { writeKeyword(writer, SyntaxKind.ReadonlyKeyword); writeSpace(writer); } @@ -3728,7 +3728,7 @@ namespace ts { writeSpace(writer); writeType(getConstraintTypeFromMappedType(type), TypeFormatFlags.None); writePunctuation(writer, SyntaxKind.CloseBracketToken); - if (isOptionalMappedType(type)) { + if (type.declaration.questionToken) { writePunctuation(writer, SyntaxKind.QuestionToken); } writePunctuation(writer, SyntaxKind.ColonToken); @@ -6108,9 +6108,11 @@ namespace ts { const constraintType = getConstraintTypeFromMappedType(type); const templateType = getTemplateTypeFromMappedType(type); const modifiersType = getApparentType(getModifiersTypeFromMappedType(type)); // The 'T' in 'keyof T' - const templateReadonly = isReadonlyMappedType(type); - const templateOptional = isOptionalMappedType(type); - if (isPossiblyHomomorphicMappedType(type)) { + const templateReadonly = !!type.declaration.readonlyToken; + const templateOptional = !!type.declaration.questionToken; + const constraintDeclaration = type.declaration.typeParameter.constraint; + if (constraintDeclaration.kind === SyntaxKind.TypeOperator && + (constraintDeclaration).operator === SyntaxKind.KeyOfKeyword) { // We have a { [P in keyof T]: X } for (const propertySymbol of getPropertiesOfType(modifiersType)) { addMemberForKeyType(getLiteralTypeFromPropertyName(propertySymbol), propertySymbol); @@ -6178,14 +6180,15 @@ namespace ts { function getTemplateTypeFromMappedType(type: MappedType) { return type.templateType || (type.templateType = type.declaration.type ? - instantiateType(addOptionality(getTypeFromTypeNode(type.declaration.type), isOptionalMappedType(type)), type.mapper || identityMapper) : + instantiateType(addOptionality(getTypeFromTypeNode(type.declaration.type), !!type.declaration.questionToken), type.mapper || identityMapper) : unknownType); } function getModifiersTypeFromMappedType(type: MappedType) { if (!type.modifiersType) { - if (isPossiblyHomomorphicMappedType(type)) { - const constraintDeclaration = type.declaration.typeParameter.constraint; + const constraintDeclaration = type.declaration.typeParameter.constraint; + if (constraintDeclaration.kind === SyntaxKind.TypeOperator && + (constraintDeclaration).operator === SyntaxKind.KeyOfKeyword) { // If the constraint declaration is a 'keyof T' node, the modifiers type is T. We check // AST nodes here because, when T is a non-generic type, the logic below eagerly resolves // 'keyof T' to a literal union type and we can't recover T from that type. @@ -6205,8 +6208,8 @@ namespace ts { } function getMappedTypeModifiers(type: MappedType): MappedTypeModifiers { - return (isReadonlyMappedType(type) ? MappedTypeModifiers.Readonly : 0) | - (isOptionalMappedType(type) ? MappedTypeModifiers.Optional : 0); + return (type.declaration.readonlyToken ? MappedTypeModifiers.Readonly : 0) | + (type.declaration.questionToken ? MappedTypeModifiers.Optional : 0); } function getCombinedMappedTypeModifiers(type: MappedType): MappedTypeModifiers { @@ -6216,7 +6219,7 @@ namespace ts { } function isPartialMappedType(type: Type) { - return getObjectFlags(type) & ObjectFlags.Mapped && isOptionalMappedType(type as MappedType); + return getObjectFlags(type) & ObjectFlags.Mapped && !!(type).declaration.questionToken; } function isGenericMappedType(type: Type) { @@ -9882,7 +9885,7 @@ namespace ts { if (target.flags & TypeFlags.TypeParameter) { // A source type { [P in keyof T]: X } is related to a target type T if X is related to T[P]. if (getObjectFlags(source) & ObjectFlags.Mapped && getConstraintTypeFromMappedType(source) === getIndexType(target)) { - if (!isOptionalMappedType(source)) { + if (!(source).declaration.questionToken) { const templateType = getTemplateTypeFromMappedType(source); const indexedAccessType = getIndexedAccessType(target, getTypeParameterFromMappedType(source)); if (result = isRelatedTo(templateType, indexedAccessType, reportErrors)) { @@ -11270,8 +11273,8 @@ namespace ts { const inference = createInferenceInfo(typeParameter); const inferences = [inference]; const templateType = getTemplateTypeFromMappedType(target); - const readonlyMask = isReadonlyMappedType(target) ? false : true; - const optionalMask = isOptionalMappedType(target) ? 0 : SymbolFlags.Optional; + const readonlyMask = target.declaration.readonlyToken ? false : true; + const optionalMask = target.declaration.questionToken ? 0 : SymbolFlags.Optional; const members = createSymbolTable(); for (const prop of properties) { const propType = getTypeOfSymbol(prop); @@ -11403,18 +11406,14 @@ namespace ts { const inference = getInferenceInfoForType(targetConstraint); if (inference) { if (!inference.isFixed) { - const map = createObjectType(ObjectFlags.Mapped); - map.templateType = source; - map.constraintType = (target).indexType; - map.typeParameter = createType(TypeFlags.TypeParameter); - // TODO (weswigham): Ensure the name chosen for the unused "K" does not shadow any other type variables in the given scope, so as to not have a chance of breaking declaration emit - map.typeParameter.symbol = createSymbol(SymbolFlags.TypeParameter, "K" as __String); - map.typeParameter.constraint = map.constraintType; - map.modifiersType = (target).indexType; - map.hasQuestionToken = false; - map.hasReadonlyToken = false; - map.hasPossiblyHomomorphicConstraint = false; - (inference.indexes || (inference.indexes = [])).push(map); + // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` + // Where `T` is `source` and `Keys` is `target.indexType` + const inferenceTypeSymbol = getGlobalSymbol("PartialInference" as __String, SymbolFlags.Type, Diagnostics.Cannot_find_global_type_0); + const inferenceType = getDeclaredTypeOfSymbol(inferenceTypeSymbol); + if (inferenceType !== unknownType) { + const mapper = createTypeMapper(getSymbolLinks(inferenceTypeSymbol).typeParameters, [source, (target as IndexedAccessType).indexType]); + (inference.indexes || (inference.indexes = [])).push(instantiateType(inferenceType, mapper)); + } } return; } @@ -20112,28 +20111,6 @@ namespace ts { forEach(node.types, checkSourceElement); } - function isReadonlyMappedType(type: MappedType) { - if (type.hasReadonlyToken === undefined) { - type.hasReadonlyToken = !!type.declaration.readonlyToken; - } - return type.hasReadonlyToken; - } - - function isOptionalMappedType(type: MappedType) { - if (type.hasQuestionToken === undefined) { - type.hasQuestionToken = !!type.declaration.questionToken; - } - return type.hasQuestionToken; - } - - function isPossiblyHomomorphicMappedType(type: MappedType) { - if (type.hasPossiblyHomomorphicConstraint === undefined) { - const constraint = type.declaration.typeParameter.constraint; - type.hasPossiblyHomomorphicConstraint = isTypeOperatorNode(constraint) && constraint.operator === SyntaxKind.KeyOfKeyword; - } - return type.hasPossiblyHomomorphicConstraint; - } - function checkIndexedAccessIndexType(type: Type, accessNode: ElementAccessExpression | IndexedAccessTypeNode) { if (!(type.flags & TypeFlags.IndexedAccess)) { return type; @@ -20143,7 +20120,7 @@ namespace ts { const indexType = (type).indexType; if (isTypeAssignableTo(indexType, getIndexType(objectType))) { if (accessNode.kind === SyntaxKind.ElementAccessExpression && isAssignmentTarget(accessNode) && - getObjectFlags(objectType) & ObjectFlags.Mapped && isReadonlyMappedType(objectType)) { + getObjectFlags(objectType) & ObjectFlags.Mapped && (objectType).declaration.readonlyToken) { error(accessNode, Diagnostics.Index_signature_in_type_0_only_permits_reading, typeToString(objectType)); } return type; diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 0f1a68de4c20d..88eeba043ebf2 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -1336,6 +1336,15 @@ type Record = { */ interface ThisType { } +/** + * Type instantiated to perform partial inferences from indexed accesses + */ +type PartialInference = ({ + [K in Keys]: { + [K1 in K]: T + } +})[Keys]; + /** * Represents a raw buffer of binary data, which is used to store data for the * different typed arrays. ArrayBuffers cannot be read from or written to directly, diff --git a/tests/baselines/reference/inferingFromAny.types b/tests/baselines/reference/inferingFromAny.types index dc660cdebc17d..70fa53cf218ea 100644 --- a/tests/baselines/reference/inferingFromAny.types +++ b/tests/baselines/reference/inferingFromAny.types @@ -293,7 +293,7 @@ var a = f18(a); var a = f19(a, a); >a : any ->f19(a, a) : { [K in K]: any; } +>f19(a, a) : { [K in Keys]: { [K1 in K]: any; }; }[K] >f19 : (k: K, x: T[K]) => T >a : any >a : any From ba064acf28177ec1fe61d1b4cedd7a1f1eabb972 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 21 Nov 2017 17:57:09 -0800 Subject: [PATCH 03/29] Add many more tests showing current behaviors --- .../reference/indexAccessCombinedInference.js | 135 +++++- .../indexAccessCombinedInference.symbols | 368 ++++++++++++++- .../indexAccessCombinedInference.types | 445 +++++++++++++++++- .../compiler/indexAccessCombinedInference.ts | 101 +++- 4 files changed, 1008 insertions(+), 41 deletions(-) diff --git a/tests/baselines/reference/indexAccessCombinedInference.js b/tests/baselines/reference/indexAccessCombinedInference.js index a3f19fa7fcc67..b31a76ef75725 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.js +++ b/tests/baselines/reference/indexAccessCombinedInference.js @@ -1,29 +1,148 @@ //// [indexAccessCombinedInference.ts] +// Simple case interface Args { TA: object, TY: object } -function foo( +declare function foo( a: T["TA"], - b: T["TY"]): T["TA"] & T["TY"] { - return undefined!; -} + b: T["TY"]): T["TA"] & T["TY"]; const x = foo({ x: { j: 12, i: 11 } -}, { y: 42 }); +}, { y: 42 }); + +// Union result type +interface A { + foo: number; +} +interface B { + bar: string; +} +declare const something: A | B; + +const y = foo(something, { bat: 42 }); + +// Union key type +interface Args2 { + TA?: object, // Optional since only one of TA or TB needs to be infered in the below argument list + TB?: object, + TY: object +} +declare function foo2( + a: T["TA"] | T["TB"], + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +declare function foo3( // Morally equivalent to foo2 + a: T["TA" | "TB"], + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +let z = foo2({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); +let zz = foo3({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); +z = zz; +zz = z; + +// Higher-order +interface Args3 { + Key: "A" | "B", + A: object, + B: object, + Merge: object, +} +declare const either: "A" | "B"; +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; + +const opt1 = pickOne("A", {x: 12}, {y: ""}, {z: /./}); +const opt2 = pickOne("B", {x: 12}, {y: ""}, {z: /./}); +const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); + +const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); +const opt4 = pickDelayed("A"); +const opt5 = pickDelayed("B"); +const opt6 = pickDelayed(either); + +// Reopenable +interface Args3 { + /** + * One must make patched parameters optional, otherwise signatures expecting the unpatched + * interface (ie, pickOne above) will not be able to produce a type satisfying the interface + * (as there are no inference sites for the new members) and will fall back to the constraints on each member + */ + Extra?: object, +} +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & {into: T["Merge"], extra: T["Extra"]}; +const opt7 = pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +const opt8 = pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); + +// Interactions with `this` types +interface TPicker { + Key: keyof this, + X: number, + Y: string +} +declare function chooseLiteral(choice: T["Key"], x: T["X"], y:T["Y"]): T[T["Key"]]; +const cx = chooseLiteral("X", 1, "no"); +const cy = chooseLiteral("Y", 0, "yes"); +const ceither = chooseLiteral("X" as "X" | "Y", 1, "yes"); +const cneither = chooseLiteral("Key", 0, "no"); + +// Multiple inference sites +interface Args4 { + 0: object, + 1: Record, +} +declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; + +const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); + //// [indexAccessCombinedInference.js] -function foo(a, b) { - return undefined; -} var x = foo({ x: { j: 12, i: 11 } }, { y: 42 }); +var y = foo(something, { bat: 42 }); +var z = foo2({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); +var zz = foo3({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); +z = zz; +zz = z; +var opt1 = pickOne("A", { x: 12 }, { y: "" }, { z: /./ }); +var opt2 = pickOne("B", { x: 12 }, { y: "" }, { z: /./ }); +var opt3 = pickOne(either, { x: 12 }, { y: "" }, { z: /./ }); +var pickDelayed = function (x) { return pickOne(x, { j: x }, { i: x }, { chosen: x }); }; +var opt4 = pickDelayed("A"); +var opt5 = pickDelayed("B"); +var opt6 = pickDelayed(either); +var opt7 = pickOne("A", { x: 12 }, { y: "" }, { z: /./ }, { z: /./ }); +var opt8 = pickOne("B", { x: 12 }, { y: "" }, { z: /./ }, { z: /./ }); +var opt9 = pickOne(either, { x: 12 }, { y: "" }, { z: /./ }, { z: /./ }); +var cx = chooseLiteral("X", 1, "no"); +var cy = chooseLiteral("Y", 0, "yes"); +var ceither = chooseLiteral("X", 1, "yes"); +var cneither = chooseLiteral("Key", 0, "no"); +var result = dualInputs({ x: 0 }, { x: 1 }, { x: function () { return ""; } }); diff --git a/tests/baselines/reference/indexAccessCombinedInference.symbols b/tests/baselines/reference/indexAccessCombinedInference.symbols index c422efe422c8c..d108b7d1e9c72 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.symbols +++ b/tests/baselines/reference/indexAccessCombinedInference.symbols @@ -1,46 +1,372 @@ === tests/cases/compiler/indexAccessCombinedInference.ts === +// Simple case interface Args { >Args : Symbol(Args, Decl(indexAccessCombinedInference.ts, 0, 0)) TA: object, ->TA : Symbol(Args.TA, Decl(indexAccessCombinedInference.ts, 0, 16)) +>TA : Symbol(Args.TA, Decl(indexAccessCombinedInference.ts, 1, 16)) TY: object ->TY : Symbol(Args.TY, Decl(indexAccessCombinedInference.ts, 1, 15)) +>TY : Symbol(Args.TY, Decl(indexAccessCombinedInference.ts, 2, 15)) } -function foo( ->foo : Symbol(foo, Decl(indexAccessCombinedInference.ts, 3, 1)) ->T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) +declare function foo( +>foo : Symbol(foo, Decl(indexAccessCombinedInference.ts, 4, 1)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 6, 21)) >Args : Symbol(Args, Decl(indexAccessCombinedInference.ts, 0, 0)) a: T["TA"], ->a : Symbol(a, Decl(indexAccessCombinedInference.ts, 5, 29)) ->T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) +>a : Symbol(a, Decl(indexAccessCombinedInference.ts, 6, 37)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 6, 21)) - b: T["TY"]): T["TA"] & T["TY"] { ->b : Symbol(b, Decl(indexAccessCombinedInference.ts, 6, 15)) ->T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) ->T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) ->T : Symbol(T, Decl(indexAccessCombinedInference.ts, 5, 13)) + b: T["TY"]): T["TA"] & T["TY"]; +>b : Symbol(b, Decl(indexAccessCombinedInference.ts, 7, 15)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 6, 21)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 6, 21)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 6, 21)) - return undefined!; ->undefined : Symbol(undefined) +const x = foo({ +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 10, 5)) +>foo : Symbol(foo, Decl(indexAccessCombinedInference.ts, 4, 1)) + + x: { +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 10, 15)) + + j: 12, +>j : Symbol(j, Decl(indexAccessCombinedInference.ts, 11, 8)) + + i: 11 +>i : Symbol(i, Decl(indexAccessCombinedInference.ts, 12, 14)) + } +}, { y: 42 }); +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 15, 4)) + +// Union result type +interface A { +>A : Symbol(A, Decl(indexAccessCombinedInference.ts, 15, 14)) + + foo: number; +>foo : Symbol(A.foo, Decl(indexAccessCombinedInference.ts, 18, 13)) } +interface B { +>B : Symbol(B, Decl(indexAccessCombinedInference.ts, 20, 1)) -const x = foo({ ->x : Symbol(x, Decl(indexAccessCombinedInference.ts, 11, 5)) ->foo : Symbol(foo, Decl(indexAccessCombinedInference.ts, 3, 1)) + bar: string; +>bar : Symbol(B.bar, Decl(indexAccessCombinedInference.ts, 21, 13)) +} +declare const something: A | B; +>something : Symbol(something, Decl(indexAccessCombinedInference.ts, 24, 13)) +>A : Symbol(A, Decl(indexAccessCombinedInference.ts, 15, 14)) +>B : Symbol(B, Decl(indexAccessCombinedInference.ts, 20, 1)) + +const y = foo(something, { bat: 42 }); +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 26, 5)) +>foo : Symbol(foo, Decl(indexAccessCombinedInference.ts, 4, 1)) +>something : Symbol(something, Decl(indexAccessCombinedInference.ts, 24, 13)) +>bat : Symbol(bat, Decl(indexAccessCombinedInference.ts, 26, 26)) + +// Union key type +interface Args2 { +>Args2 : Symbol(Args2, Decl(indexAccessCombinedInference.ts, 26, 38)) + + TA?: object, // Optional since only one of TA or TB needs to be infered in the below argument list +>TA : Symbol(Args2.TA, Decl(indexAccessCombinedInference.ts, 29, 17)) + + TB?: object, +>TB : Symbol(Args2.TB, Decl(indexAccessCombinedInference.ts, 30, 16)) + + TY: object +>TY : Symbol(Args2.TY, Decl(indexAccessCombinedInference.ts, 31, 16)) +} +declare function foo2( +>foo2 : Symbol(foo2, Decl(indexAccessCombinedInference.ts, 33, 1)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 34, 22)) +>Args2 : Symbol(Args2, Decl(indexAccessCombinedInference.ts, 26, 38)) + + a: T["TA"] | T["TB"], +>a : Symbol(a, Decl(indexAccessCombinedInference.ts, 34, 39)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 34, 22)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 34, 22)) + + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +>b : Symbol(b, Decl(indexAccessCombinedInference.ts, 35, 25)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 34, 22)) +>a : Symbol(a, Decl(indexAccessCombinedInference.ts, 36, 18)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 34, 22)) +>b : Symbol(b, Decl(indexAccessCombinedInference.ts, 36, 29)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 34, 22)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 34, 22)) + +declare function foo3( // Morally equivalent to foo2 +>foo3 : Symbol(foo3, Decl(indexAccessCombinedInference.ts, 36, 52)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 37, 22)) +>Args2 : Symbol(Args2, Decl(indexAccessCombinedInference.ts, 26, 38)) + + a: T["TA" | "TB"], +>a : Symbol(a, Decl(indexAccessCombinedInference.ts, 37, 39)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 37, 22)) + + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +>b : Symbol(b, Decl(indexAccessCombinedInference.ts, 38, 22)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 37, 22)) +>a : Symbol(a, Decl(indexAccessCombinedInference.ts, 39, 18)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 37, 22)) +>b : Symbol(b, Decl(indexAccessCombinedInference.ts, 39, 29)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 37, 22)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 37, 22)) + +let z = foo2({ +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 40, 3)) +>foo2 : Symbol(foo2, Decl(indexAccessCombinedInference.ts, 33, 1)) + + x: { +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 40, 14)) + + j: 12, +>j : Symbol(j, Decl(indexAccessCombinedInference.ts, 41, 8)) + + i: 11 +>i : Symbol(i, Decl(indexAccessCombinedInference.ts, 42, 14)) + } +}, { y: 42 }); +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 45, 4)) + +let zz = foo3({ +>zz : Symbol(zz, Decl(indexAccessCombinedInference.ts, 46, 3)) +>foo3 : Symbol(foo3, Decl(indexAccessCombinedInference.ts, 36, 52)) x: { ->x : Symbol(x, Decl(indexAccessCombinedInference.ts, 11, 15)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 46, 15)) j: 12, ->j : Symbol(j, Decl(indexAccessCombinedInference.ts, 12, 8)) +>j : Symbol(j, Decl(indexAccessCombinedInference.ts, 47, 8)) i: 11 ->i : Symbol(i, Decl(indexAccessCombinedInference.ts, 13, 14)) +>i : Symbol(i, Decl(indexAccessCombinedInference.ts, 48, 14)) } }, { y: 42 }); ->y : Symbol(y, Decl(indexAccessCombinedInference.ts, 16, 4)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 51, 4)) + +z = zz; +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 40, 3)) +>zz : Symbol(zz, Decl(indexAccessCombinedInference.ts, 46, 3)) + +zz = z; +>zz : Symbol(zz, Decl(indexAccessCombinedInference.ts, 46, 3)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 40, 3)) + +// Higher-order +interface Args3 { +>Args3 : Symbol(Args3, Decl(indexAccessCombinedInference.ts, 53, 7), Decl(indexAccessCombinedInference.ts, 72, 33)) + + Key: "A" | "B", +>Key : Symbol(Args3.Key, Decl(indexAccessCombinedInference.ts, 56, 17)) + + A: object, +>A : Symbol(Args3.A, Decl(indexAccessCombinedInference.ts, 57, 19)) + + B: object, +>B : Symbol(Args3.B, Decl(indexAccessCombinedInference.ts, 58, 14)) + + Merge: object, +>Merge : Symbol(Args3.Merge, Decl(indexAccessCombinedInference.ts, 59, 14)) +} +declare const either: "A" | "B"; +>either : Symbol(either, Decl(indexAccessCombinedInference.ts, 62, 13)) + +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) +>Args3 : Symbol(Args3, Decl(indexAccessCombinedInference.ts, 53, 7), Decl(indexAccessCombinedInference.ts, 72, 33)) +>key : Symbol(key, Decl(indexAccessCombinedInference.ts, 63, 42)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) +>left : Symbol(left, Decl(indexAccessCombinedInference.ts, 63, 56)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) +>right : Symbol(right, Decl(indexAccessCombinedInference.ts, 63, 70)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) +>into : Symbol(into, Decl(indexAccessCombinedInference.ts, 63, 85)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 63, 25)) + +const opt1 = pickOne("A", {x: 12}, {y: ""}, {z: /./}); +>opt1 : Symbol(opt1, Decl(indexAccessCombinedInference.ts, 65, 5)) +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 65, 27)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 65, 36)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 65, 45)) + +const opt2 = pickOne("B", {x: 12}, {y: ""}, {z: /./}); +>opt2 : Symbol(opt2, Decl(indexAccessCombinedInference.ts, 66, 5)) +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 66, 27)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 66, 36)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 66, 45)) + +const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); +>opt3 : Symbol(opt3, Decl(indexAccessCombinedInference.ts, 67, 5)) +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>either : Symbol(either, Decl(indexAccessCombinedInference.ts, 62, 13)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 67, 30)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 67, 39)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 67, 48)) + +const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); +>pickDelayed : Symbol(pickDelayed, Decl(indexAccessCombinedInference.ts, 69, 5)) +>TKey : Symbol(TKey, Decl(indexAccessCombinedInference.ts, 69, 21)) +>Args3 : Symbol(Args3, Decl(indexAccessCombinedInference.ts, 53, 7), Decl(indexAccessCombinedInference.ts, 72, 33)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 69, 48)) +>TKey : Symbol(TKey, Decl(indexAccessCombinedInference.ts, 69, 21)) +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 69, 48)) +>j : Symbol(j, Decl(indexAccessCombinedInference.ts, 69, 72)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 69, 48)) +>i : Symbol(i, Decl(indexAccessCombinedInference.ts, 69, 80)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 69, 48)) +>chosen : Symbol(chosen, Decl(indexAccessCombinedInference.ts, 69, 88)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 69, 48)) + +const opt4 = pickDelayed("A"); +>opt4 : Symbol(opt4, Decl(indexAccessCombinedInference.ts, 70, 5)) +>pickDelayed : Symbol(pickDelayed, Decl(indexAccessCombinedInference.ts, 69, 5)) + +const opt5 = pickDelayed("B"); +>opt5 : Symbol(opt5, Decl(indexAccessCombinedInference.ts, 71, 5)) +>pickDelayed : Symbol(pickDelayed, Decl(indexAccessCombinedInference.ts, 69, 5)) + +const opt6 = pickDelayed(either); +>opt6 : Symbol(opt6, Decl(indexAccessCombinedInference.ts, 72, 5)) +>pickDelayed : Symbol(pickDelayed, Decl(indexAccessCombinedInference.ts, 69, 5)) +>either : Symbol(either, Decl(indexAccessCombinedInference.ts, 62, 13)) + +// Reopenable +interface Args3 { +>Args3 : Symbol(Args3, Decl(indexAccessCombinedInference.ts, 53, 7), Decl(indexAccessCombinedInference.ts, 72, 33)) + + /** + * One must make patched parameters optional, otherwise signatures expecting the unpatched + * interface (ie, pickOne above) will not be able to produce a type satisfying the interface + * (as there are no inference sites for the new members) and will fall back to the constraints on each member + */ + Extra?: object, +>Extra : Symbol(Args3.Extra, Decl(indexAccessCombinedInference.ts, 75, 17)) +} +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & {into: T["Merge"], extra: T["Extra"]}; +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>Args3 : Symbol(Args3, Decl(indexAccessCombinedInference.ts, 53, 7), Decl(indexAccessCombinedInference.ts, 72, 33)) +>key : Symbol(key, Decl(indexAccessCombinedInference.ts, 83, 42)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>left : Symbol(left, Decl(indexAccessCombinedInference.ts, 83, 56)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>right : Symbol(right, Decl(indexAccessCombinedInference.ts, 83, 70)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>into : Symbol(into, Decl(indexAccessCombinedInference.ts, 83, 85)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>extra : Symbol(extra, Decl(indexAccessCombinedInference.ts, 83, 103)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>into : Symbol(into, Decl(indexAccessCombinedInference.ts, 83, 139)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) +>extra : Symbol(extra, Decl(indexAccessCombinedInference.ts, 83, 156)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 83, 25)) + +const opt7 = pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +>opt7 : Symbol(opt7, Decl(indexAccessCombinedInference.ts, 84, 5)) +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 84, 27)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 84, 36)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 84, 45)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 84, 55)) + +const opt8 = pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +>opt8 : Symbol(opt8, Decl(indexAccessCombinedInference.ts, 85, 5)) +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 85, 27)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 85, 36)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 85, 45)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 85, 55)) + +const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); +>opt9 : Symbol(opt9, Decl(indexAccessCombinedInference.ts, 86, 5)) +>pickOne : Symbol(pickOne, Decl(indexAccessCombinedInference.ts, 62, 32), Decl(indexAccessCombinedInference.ts, 82, 1)) +>either : Symbol(either, Decl(indexAccessCombinedInference.ts, 62, 13)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 86, 30)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 86, 39)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 86, 48)) +>z : Symbol(z, Decl(indexAccessCombinedInference.ts, 86, 58)) + +// Interactions with `this` types +interface TPicker { +>TPicker : Symbol(TPicker, Decl(indexAccessCombinedInference.ts, 86, 67)) + + Key: keyof this, +>Key : Symbol(TPicker.Key, Decl(indexAccessCombinedInference.ts, 89, 19)) + + X: number, +>X : Symbol(TPicker.X, Decl(indexAccessCombinedInference.ts, 90, 20)) + + Y: string +>Y : Symbol(TPicker.Y, Decl(indexAccessCombinedInference.ts, 91, 14)) +} +declare function chooseLiteral(choice: T["Key"], x: T["X"], y:T["Y"]): T[T["Key"]]; +>chooseLiteral : Symbol(chooseLiteral, Decl(indexAccessCombinedInference.ts, 93, 1)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 94, 31)) +>TPicker : Symbol(TPicker, Decl(indexAccessCombinedInference.ts, 86, 67)) +>choice : Symbol(choice, Decl(indexAccessCombinedInference.ts, 94, 50)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 94, 31)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 94, 67)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 94, 31)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 94, 78)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 94, 31)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 94, 31)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 94, 31)) + +const cx = chooseLiteral("X", 1, "no"); +>cx : Symbol(cx, Decl(indexAccessCombinedInference.ts, 95, 5)) +>chooseLiteral : Symbol(chooseLiteral, Decl(indexAccessCombinedInference.ts, 93, 1)) + +const cy = chooseLiteral("Y", 0, "yes"); +>cy : Symbol(cy, Decl(indexAccessCombinedInference.ts, 96, 5)) +>chooseLiteral : Symbol(chooseLiteral, Decl(indexAccessCombinedInference.ts, 93, 1)) + +const ceither = chooseLiteral("X" as "X" | "Y", 1, "yes"); +>ceither : Symbol(ceither, Decl(indexAccessCombinedInference.ts, 97, 5)) +>chooseLiteral : Symbol(chooseLiteral, Decl(indexAccessCombinedInference.ts, 93, 1)) + +const cneither = chooseLiteral("Key", 0, "no"); +>cneither : Symbol(cneither, Decl(indexAccessCombinedInference.ts, 98, 5)) +>chooseLiteral : Symbol(chooseLiteral, Decl(indexAccessCombinedInference.ts, 93, 1)) + +// Multiple inference sites +interface Args4 { +>Args4 : Symbol(Args4, Decl(indexAccessCombinedInference.ts, 98, 47)) + + 0: object, + 1: Record, +>Record : Symbol(Record, Decl(lib.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +} +declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; +>dualInputs : Symbol(dualInputs, Decl(indexAccessCombinedInference.ts, 104, 1)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) +>Args4 : Symbol(Args4, Decl(indexAccessCombinedInference.ts, 98, 47)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 105, 45)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 105, 55)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) +>toDelay : Symbol(toDelay, Decl(indexAccessCombinedInference.ts, 105, 66)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) +>transformers : Symbol(transformers, Decl(indexAccessCombinedInference.ts, 105, 95)) +>T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) + +const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); +>result : Symbol(result, Decl(indexAccessCombinedInference.ts, 107, 5)) +>dualInputs : Symbol(dualInputs, Decl(indexAccessCombinedInference.ts, 104, 1)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 107, 27)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 107, 35)) +>x : Symbol(x, Decl(indexAccessCombinedInference.ts, 107, 43)) diff --git a/tests/baselines/reference/indexAccessCombinedInference.types b/tests/baselines/reference/indexAccessCombinedInference.types index f32c28de6266f..03badaade7613 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.types +++ b/tests/baselines/reference/indexAccessCombinedInference.types @@ -1,4 +1,5 @@ === tests/cases/compiler/indexAccessCombinedInference.ts === +// Simple case interface Args { >Args : Args @@ -9,7 +10,7 @@ interface Args { >TY : object } -function foo( +declare function foo( >foo : (a: T["TA"], b: T["TY"]) => T["TA"] & T["TY"] >T : T >Args : Args @@ -18,17 +19,12 @@ function foo( >a : T["TA"] >T : T - b: T["TY"]): T["TA"] & T["TY"] { + b: T["TY"]): T["TA"] & T["TY"]; >b : T["TY"] >T : T >T : T >T : T - return undefined!; ->undefined! : undefined ->undefined : undefined -} - const x = foo({ >x : { x: { j: number; i: number; }; } & { y: number; } >foo({ x: { j: 12, i: 11 }}, { y: 42 }) : { x: { j: number; i: number; }; } & { y: number; } @@ -52,3 +48,438 @@ const x = foo({ >y : number >42 : 42 +// Union result type +interface A { +>A : A + + foo: number; +>foo : number +} +interface B { +>B : B + + bar: string; +>bar : string +} +declare const something: A | B; +>something : A | B +>A : A +>B : B + +const y = foo(something, { bat: 42 }); +>y : (A & { bat: number; }) | (B & { bat: number; }) +>foo(something, { bat: 42 }) : (A & { bat: number; }) | (B & { bat: number; }) +>foo : (a: T["TA"], b: T["TY"]) => T["TA"] & T["TY"] +>something : A | B +>{ bat: 42 } : { bat: number; } +>bat : number +>42 : 42 + +// Union key type +interface Args2 { +>Args2 : Args2 + + TA?: object, // Optional since only one of TA or TB needs to be infered in the below argument list +>TA : object + + TB?: object, +>TB : object + + TY: object +>TY : object +} +declare function foo2( +>foo2 : (a: T["TA"] | T["TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"]; } & T["TY"] +>T : T +>Args2 : Args2 + + a: T["TA"] | T["TB"], +>a : T["TA"] | T["TB"] +>T : T +>T : T + + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +>b : T["TY"] +>T : T +>a : T["TA"] +>T : T +>b : T["TB"] +>T : T +>T : T + +declare function foo3( // Morally equivalent to foo2 +>foo3 : (a: T["TA" | "TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"]; } & T["TY"] +>T : T +>Args2 : Args2 + + a: T["TA" | "TB"], +>a : T["TA" | "TB"] +>T : T + + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +>b : T["TY"] +>T : T +>a : T["TA"] +>T : T +>b : T["TB"] +>T : T +>T : T + +let z = foo2({ +>z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } +>foo2({ x: { j: 12, i: 11 }}, { y: 42 }) : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } +>foo2 : (a: T["TA"] | T["TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"]; } & T["TY"] +>{ x: { j: 12, i: 11 }} : { x: { j: number; i: number; }; } + + x: { +>x : { j: number; i: number; } +>{ j: 12, i: 11 } : { j: number; i: number; } + + j: 12, +>j : number +>12 : 12 + + i: 11 +>i : number +>11 : 11 + } +}, { y: 42 }); +>{ y: 42 } : { y: number; } +>y : number +>42 : 42 + +let zz = foo3({ +>zz : { a: any; b: any; } & { y: number; } +>foo3({ x: { j: 12, i: 11 }}, { y: 42 }) : { a: any; b: any; } & { y: number; } +>foo3 : (a: T["TA" | "TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"]; } & T["TY"] +>{ x: { j: 12, i: 11 }} : { x: { j: number; i: number; }; } + + x: { +>x : { j: number; i: number; } +>{ j: 12, i: 11 } : { j: number; i: number; } + + j: 12, +>j : number +>12 : 12 + + i: 11 +>i : number +>11 : 11 + } +}, { y: 42 }); +>{ y: 42 } : { y: number; } +>y : number +>42 : 42 + +z = zz; +>z = zz : { a: any; b: any; } & { y: number; } +>z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } +>zz : { a: any; b: any; } & { y: number; } + +zz = z; +>zz = z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } +>zz : { a: any; b: any; } & { y: number; } +>z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } + +// Higher-order +interface Args3 { +>Args3 : Args3 + + Key: "A" | "B", +>Key : "A" | "B" + + A: object, +>A : object + + B: object, +>B : object + + Merge: object, +>Merge : object +} +declare const either: "A" | "B"; +>either : "A" | "B" + +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>T : T +>Args3 : Args3 +>key : T["Key"] +>T : T +>left : T["A"] +>T : T +>right : T["B"] +>T : T +>into : T["Merge"] +>T : T +>T : T +>T : T +>T : T + +const opt1 = pickOne("A", {x: 12}, {y: ""}, {z: /./}); +>opt1 : { x: number; } & { z: RegExp; } +>pickOne("A", {x: 12}, {y: ""}, {z: /./}) : { x: number; } & { z: RegExp; } +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>"A" : "A" +>{x: 12} : { x: number; } +>x : number +>12 : 12 +>{y: ""} : { y: string; } +>y : string +>"" : "" +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp + +const opt2 = pickOne("B", {x: 12}, {y: ""}, {z: /./}); +>opt2 : { y: string; } & { z: RegExp; } +>pickOne("B", {x: 12}, {y: ""}, {z: /./}) : { y: string; } & { z: RegExp; } +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>"B" : "B" +>{x: 12} : { x: number; } +>x : number +>12 : 12 +>{y: ""} : { y: string; } +>y : string +>"" : "" +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp + +const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); +>opt3 : ({ x: number; } & { z: RegExp; }) | ({ y: string; } & { z: RegExp; }) +>pickOne(either, {x: 12}, {y: ""}, {z: /./}) : ({ x: number; } & { z: RegExp; }) | ({ y: string; } & { z: RegExp; }) +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>either : "A" | "B" +>{x: 12} : { x: number; } +>x : number +>12 : 12 +>{y: ""} : { y: string; } +>y : string +>"" : "" +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp + +const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); +>pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } +>(x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}) : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } +>TKey : TKey +>Args3 : Args3 +>x : TKey +>TKey : TKey +>pickOne(x, {j: x}, {i: x}, {chosen: x}) : ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>x : TKey +>{j: x} : { j: TKey; } +>j : TKey +>x : TKey +>{i: x} : { i: TKey; } +>i : TKey +>x : TKey +>{chosen: x} : { chosen: TKey; } +>chosen : TKey +>x : TKey + +const opt4 = pickDelayed("A"); +>opt4 : { j: "A"; } & { chosen: "A"; } +>pickDelayed("A") : { j: "A"; } & { chosen: "A"; } +>pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } +>"A" : "A" + +const opt5 = pickDelayed("B"); +>opt5 : { i: "B"; } & { chosen: "B"; } +>pickDelayed("B") : { i: "B"; } & { chosen: "B"; } +>pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } +>"B" : "B" + +const opt6 = pickDelayed(either); +>opt6 : ({ j: "A" | "B"; } & { chosen: "A" | "B"; }) | ({ i: "A" | "B"; } & { chosen: "A" | "B"; }) +>pickDelayed(either) : ({ j: "A" | "B"; } & { chosen: "A" | "B"; }) | ({ i: "A" | "B"; } & { chosen: "A" | "B"; }) +>pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } +>either : "A" | "B" + +// Reopenable +interface Args3 { +>Args3 : Args3 + + /** + * One must make patched parameters optional, otherwise signatures expecting the unpatched + * interface (ie, pickOne above) will not be able to produce a type satisfying the interface + * (as there are no inference sites for the new members) and will fall back to the constraints on each member + */ + Extra?: object, +>Extra : object +} +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & {into: T["Merge"], extra: T["Extra"]}; +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>T : T +>Args3 : Args3 +>key : T["Key"] +>T : T +>left : T["A"] +>T : T +>right : T["B"] +>T : T +>into : T["Merge"] +>T : T +>extra : T["Extra"] +>T : T +>T : T +>T : T +>into : T["Merge"] +>T : T +>extra : T["Extra"] +>T : T + +const opt7 = pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +>opt7 : { x: number; } & { into: { z: RegExp; }; extra: { z: RegExp; }; } +>pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}) : { x: number; } & { into: { z: RegExp; }; extra: { z: RegExp; }; } +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>"A" : "A" +>{x: 12} : { x: number; } +>x : number +>12 : 12 +>{y: ""} : { y: string; } +>y : string +>"" : "" +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp + +const opt8 = pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +>opt8 : { y: string; } & { into: { z: RegExp; }; extra: { z: RegExp; }; } +>pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}) : { y: string; } & { into: { z: RegExp; }; extra: { z: RegExp; }; } +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>"B" : "B" +>{x: 12} : { x: number; } +>x : number +>12 : 12 +>{y: ""} : { y: string; } +>y : string +>"" : "" +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp + +const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); +>opt9 : ({ x: number; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) | ({ y: string; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) +>pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}) : ({ x: number; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) | ({ y: string; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } +>either : "A" | "B" +>{x: 12} : { x: number; } +>x : number +>12 : 12 +>{y: ""} : { y: string; } +>y : string +>"" : "" +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp +>{z: /./} : { z: RegExp; } +>z : RegExp +>/./ : RegExp + +// Interactions with `this` types +interface TPicker { +>TPicker : TPicker + + Key: keyof this, +>Key : keyof this + + X: number, +>X : number + + Y: string +>Y : string +} +declare function chooseLiteral(choice: T["Key"], x: T["X"], y:T["Y"]): T[T["Key"]]; +>chooseLiteral : (choice: T["Key"], x: T["X"], y: T["Y"]) => T[T["Key"]] +>T : T +>TPicker : TPicker +>choice : T["Key"] +>T : T +>x : T["X"] +>T : T +>y : T["Y"] +>T : T +>T : T +>T : T + +const cx = chooseLiteral("X", 1, "no"); +>cx : 1 +>chooseLiteral("X", 1, "no") : 1 +>chooseLiteral : (choice: T["Key"], x: T["X"], y: T["Y"]) => T[T["Key"]] +>"X" : "X" +>1 : 1 +>"no" : "no" + +const cy = chooseLiteral("Y", 0, "yes"); +>cy : "yes" +>chooseLiteral("Y", 0, "yes") : "yes" +>chooseLiteral : (choice: T["Key"], x: T["X"], y: T["Y"]) => T[T["Key"]] +>"Y" : "Y" +>0 : 0 +>"yes" : "yes" + +const ceither = chooseLiteral("X" as "X" | "Y", 1, "yes"); +>ceither : 1 | "yes" +>chooseLiteral("X" as "X" | "Y", 1, "yes") : 1 | "yes" +>chooseLiteral : (choice: T["Key"], x: T["X"], y: T["Y"]) => T[T["Key"]] +>"X" as "X" | "Y" : "X" | "Y" +>"X" : "X" +>1 : 1 +>"yes" : "yes" + +const cneither = chooseLiteral("Key", 0, "no"); +>cneither : "Key" +>chooseLiteral("Key", 0, "no") : "Key" +>chooseLiteral : (choice: T["Key"], x: T["X"], y: T["Y"]) => T[T["Key"]] +>"Key" : "Key" +>0 : 0 +>"no" : "no" + +// Multiple inference sites +interface Args4 { +>Args4 : Args4 + + 0: object, + 1: Record, +>Record : Record +>Function : Function +} +declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; +>dualInputs : (x: T["0"], y: T["0"], toDelay: T["1"]) => T["0"] & { transformers: T["1"]; } +>T : T +>Args4 : Args4 +>x : T["0"] +>T : T +>y : T["0"] +>T : T +>toDelay : T["1"] +>T : T +>T : T +>transformers : T["1"] +>T : T + +const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); +>result : { x: number; } & { x: number; } & { transformers: { x: () => ""; }; } +>dualInputs({x: 0}, {x: 1}, {x: () => ""}) : { x: number; } & { x: number; } & { transformers: { x: () => ""; }; } +>dualInputs : (x: T["0"], y: T["0"], toDelay: T["1"]) => T["0"] & { transformers: T["1"]; } +>{x: 0} : { x: number; } +>x : number +>0 : 0 +>{x: 1} : { x: number; } +>x : number +>1 : 1 +>{x: () => ""} : { x: () => ""; } +>x : () => "" +>() => "" : () => "" +>"" : "" + diff --git a/tests/cases/compiler/indexAccessCombinedInference.ts b/tests/cases/compiler/indexAccessCombinedInference.ts index c1d7f03ac22ee..59af2dd60fa1f 100644 --- a/tests/cases/compiler/indexAccessCombinedInference.ts +++ b/tests/cases/compiler/indexAccessCombinedInference.ts @@ -1,17 +1,108 @@ +// Simple case interface Args { TA: object, TY: object } -function foo( +declare function foo( a: T["TA"], - b: T["TY"]): T["TA"] & T["TY"] { - return undefined!; -} + b: T["TY"]): T["TA"] & T["TY"]; const x = foo({ x: { j: 12, i: 11 } -}, { y: 42 }); \ No newline at end of file +}, { y: 42 }); + +// Union result type +interface A { + foo: number; +} +interface B { + bar: string; +} +declare const something: A | B; + +const y = foo(something, { bat: 42 }); + +// Union key type +interface Args2 { + TA?: object, // Optional since only one of TA or TB needs to be infered in the below argument list + TB?: object, + TY: object +} +declare function foo2( + a: T["TA"] | T["TB"], + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +declare function foo3( // Morally equivalent to foo2 + a: T["TA" | "TB"], + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; +let z = foo2({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); +let zz = foo3({ + x: { + j: 12, + i: 11 + } +}, { y: 42 }); +z = zz; +zz = z; + +// Higher-order +interface Args3 { + Key: "A" | "B", + A: object, + B: object, + Merge: object, +} +declare const either: "A" | "B"; +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; + +const opt1 = pickOne("A", {x: 12}, {y: ""}, {z: /./}); +const opt2 = pickOne("B", {x: 12}, {y: ""}, {z: /./}); +const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); + +const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); +const opt4 = pickDelayed("A"); +const opt5 = pickDelayed("B"); +const opt6 = pickDelayed(either); + +// Reopenable +interface Args3 { + /** + * One must make patched parameters optional, otherwise signatures expecting the unpatched + * interface (ie, pickOne above) will not be able to produce a type satisfying the interface + * (as there are no inference sites for the new members) and will fall back to the constraints on each member + */ + Extra?: object, +} +declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & {into: T["Merge"], extra: T["Extra"]}; +const opt7 = pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +const opt8 = pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}); +const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); + +// Interactions with `this` types +interface TPicker { + Key: keyof this, + X: number, + Y: string +} +declare function chooseLiteral(choice: T["Key"], x: T["X"], y:T["Y"]): T[T["Key"]]; +const cx = chooseLiteral("X", 1, "no"); +const cy = chooseLiteral("Y", 0, "yes"); +const ceither = chooseLiteral("X" as "X" | "Y", 1, "yes"); +const cneither = chooseLiteral("Key", 0, "no"); + +// Multiple inference sites +interface Args4 { + 0: object, + 1: Record, +} +declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; + +const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); From 93afc105479da2b36798b4f6a0a8f6cb87778512 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 1 Dec 2017 16:44:45 -0500 Subject: [PATCH 04/29] Discriminate partial inferences if not complete enough to satisfy constraint --- src/compiler/checker.ts | 33 +++++++++++- .../reference/typeInferenceOnIndexUnion.js | 13 +++++ .../typeInferenceOnIndexUnion.symbols | 45 ++++++++++++++++ .../reference/typeInferenceOnIndexUnion.types | 52 +++++++++++++++++++ .../compiler/typeInferenceOnIndexUnion.ts | 7 +++ 5 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/typeInferenceOnIndexUnion.js create mode 100644 tests/baselines/reference/typeInferenceOnIndexUnion.symbols create mode 100644 tests/baselines/reference/typeInferenceOnIndexUnion.types create mode 100644 tests/cases/compiler/typeInferenceOnIndexUnion.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d5e27dbeba82d..d9d96012fbc5a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11686,7 +11686,38 @@ namespace ts { if (!inferredType) { if (inference.indexes) { // Build a candidate from all indexes - (inference.candidates || (inference.candidates = [])).push(getIntersectionType(inference.indexes)); + let aggregateInference = getIntersectionType(inference.indexes); + const constraint = getConstraintOfTypeParameter(context.signature.typeParameters[index]); + if (constraint) { + const instantiatedConstraint = instantiateType(constraint, context); + if (!context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { + if (instantiatedConstraint.flags & TypeFlags.Union) { + const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); + if (discriminantProps) { + let match: Type; + findDiscriminant: for (const p of discriminantProps) { + const candidatePropType = getTypeOfPropertyOfType(aggregateInference, p.escapedName); + for (const type of (instantiatedConstraint as UnionType).types) { + const propType = getTypeOfPropertyOfType(type, p.escapedName); + if (propType && checkTypeAssignableTo(candidatePropType, propType, /*errorNode*/ undefined)) { + if (match && match !== type) { + match = undefined; + break findDiscriminant; + } + else { + match = type; + } + } + } + } + if (match) { + aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0); + } + } + } + } + } + (inference.candidates || (inference.candidates = [])).push(aggregateInference); } if (inference.candidates) { // Extract all object literal types and replace them with a single widened and normalized type. diff --git a/tests/baselines/reference/typeInferenceOnIndexUnion.js b/tests/baselines/reference/typeInferenceOnIndexUnion.js new file mode 100644 index 0000000000000..fc32ef0653e85 --- /dev/null +++ b/tests/baselines/reference/typeInferenceOnIndexUnion.js @@ -0,0 +1,13 @@ +//// [typeInferenceOnIndexUnion.ts] +type Options = { k: "a", a: number } | { k: "b", b: string }; +declare function f(p: T["k"]): T; +const x = f("a"); // expect it to be `{ k: "a", a: number }` + +type Options2 = { k: "a", a: number, c: {} } | { k: "b", b: string, c: {} }; +declare function f2(p: T["k"], c: T["c"]): T; +const x2 = f2("a", { x: 1, y: 2 }); // expect it to be `{ k: "a", a: number, c: {x: number, y: number} }` + + +//// [typeInferenceOnIndexUnion.js] +var x = f("a"); // expect it to be `{ k: "a", a: number }` +var x2 = f2("a", { x: 1, y: 2 }); // expect it to be `{ k: "a", a: number, c: {x: number, y: number} }` diff --git a/tests/baselines/reference/typeInferenceOnIndexUnion.symbols b/tests/baselines/reference/typeInferenceOnIndexUnion.symbols new file mode 100644 index 0000000000000..b3a0d0dc98f91 --- /dev/null +++ b/tests/baselines/reference/typeInferenceOnIndexUnion.symbols @@ -0,0 +1,45 @@ +=== tests/cases/compiler/typeInferenceOnIndexUnion.ts === +type Options = { k: "a", a: number } | { k: "b", b: string }; +>Options : Symbol(Options, Decl(typeInferenceOnIndexUnion.ts, 0, 0)) +>k : Symbol(k, Decl(typeInferenceOnIndexUnion.ts, 0, 16)) +>a : Symbol(a, Decl(typeInferenceOnIndexUnion.ts, 0, 24)) +>k : Symbol(k, Decl(typeInferenceOnIndexUnion.ts, 0, 40)) +>b : Symbol(b, Decl(typeInferenceOnIndexUnion.ts, 0, 48)) + +declare function f(p: T["k"]): T; +>f : Symbol(f, Decl(typeInferenceOnIndexUnion.ts, 0, 61)) +>T : Symbol(T, Decl(typeInferenceOnIndexUnion.ts, 1, 19)) +>Options : Symbol(Options, Decl(typeInferenceOnIndexUnion.ts, 0, 0)) +>p : Symbol(p, Decl(typeInferenceOnIndexUnion.ts, 1, 38)) +>T : Symbol(T, Decl(typeInferenceOnIndexUnion.ts, 1, 19)) +>T : Symbol(T, Decl(typeInferenceOnIndexUnion.ts, 1, 19)) + +const x = f("a"); // expect it to be `{ k: "a", a: number }` +>x : Symbol(x, Decl(typeInferenceOnIndexUnion.ts, 2, 5)) +>f : Symbol(f, Decl(typeInferenceOnIndexUnion.ts, 0, 61)) + +type Options2 = { k: "a", a: number, c: {} } | { k: "b", b: string, c: {} }; +>Options2 : Symbol(Options2, Decl(typeInferenceOnIndexUnion.ts, 2, 17)) +>k : Symbol(k, Decl(typeInferenceOnIndexUnion.ts, 4, 17)) +>a : Symbol(a, Decl(typeInferenceOnIndexUnion.ts, 4, 25)) +>c : Symbol(c, Decl(typeInferenceOnIndexUnion.ts, 4, 36)) +>k : Symbol(k, Decl(typeInferenceOnIndexUnion.ts, 4, 48)) +>b : Symbol(b, Decl(typeInferenceOnIndexUnion.ts, 4, 56)) +>c : Symbol(c, Decl(typeInferenceOnIndexUnion.ts, 4, 67)) + +declare function f2(p: T["k"], c: T["c"]): T; +>f2 : Symbol(f2, Decl(typeInferenceOnIndexUnion.ts, 4, 76)) +>T : Symbol(T, Decl(typeInferenceOnIndexUnion.ts, 5, 20)) +>Options2 : Symbol(Options2, Decl(typeInferenceOnIndexUnion.ts, 2, 17)) +>p : Symbol(p, Decl(typeInferenceOnIndexUnion.ts, 5, 40)) +>T : Symbol(T, Decl(typeInferenceOnIndexUnion.ts, 5, 20)) +>c : Symbol(c, Decl(typeInferenceOnIndexUnion.ts, 5, 50)) +>T : Symbol(T, Decl(typeInferenceOnIndexUnion.ts, 5, 20)) +>T : Symbol(T, Decl(typeInferenceOnIndexUnion.ts, 5, 20)) + +const x2 = f2("a", { x: 1, y: 2 }); // expect it to be `{ k: "a", a: number, c: {x: number, y: number} }` +>x2 : Symbol(x2, Decl(typeInferenceOnIndexUnion.ts, 6, 5)) +>f2 : Symbol(f2, Decl(typeInferenceOnIndexUnion.ts, 4, 76)) +>x : Symbol(x, Decl(typeInferenceOnIndexUnion.ts, 6, 20)) +>y : Symbol(y, Decl(typeInferenceOnIndexUnion.ts, 6, 26)) + diff --git a/tests/baselines/reference/typeInferenceOnIndexUnion.types b/tests/baselines/reference/typeInferenceOnIndexUnion.types new file mode 100644 index 0000000000000..57e171d86ba74 --- /dev/null +++ b/tests/baselines/reference/typeInferenceOnIndexUnion.types @@ -0,0 +1,52 @@ +=== tests/cases/compiler/typeInferenceOnIndexUnion.ts === +type Options = { k: "a", a: number } | { k: "b", b: string }; +>Options : Options +>k : "a" +>a : number +>k : "b" +>b : string + +declare function f(p: T["k"]): T; +>f : (p: T["k"]) => T +>T : T +>Options : Options +>p : T["k"] +>T : T +>T : T + +const x = f("a"); // expect it to be `{ k: "a", a: number }` +>x : { k: "a"; a: number; } +>f("a") : { k: "a"; a: number; } +>f : (p: T["k"]) => T +>"a" : "a" + +type Options2 = { k: "a", a: number, c: {} } | { k: "b", b: string, c: {} }; +>Options2 : Options2 +>k : "a" +>a : number +>c : {} +>k : "b" +>b : string +>c : {} + +declare function f2(p: T["k"], c: T["c"]): T; +>f2 : (p: T["k"], c: T["c"]) => T +>T : T +>Options2 : Options2 +>p : T["k"] +>T : T +>c : T["c"] +>T : T +>T : T + +const x2 = f2("a", { x: 1, y: 2 }); // expect it to be `{ k: "a", a: number, c: {x: number, y: number} }` +>x2 : { k: "a"; c: { x: number; y: number; }; a: number; } +>f2("a", { x: 1, y: 2 }) : { k: "a"; c: { x: number; y: number; }; a: number; } +>f2 : (p: T["k"], c: T["c"]) => T +>"a" : "a" +>{ x: 1, y: 2 } : { x: number; y: number; } +>x : number +>1 : 1 +>y : number +>2 : 2 + diff --git a/tests/cases/compiler/typeInferenceOnIndexUnion.ts b/tests/cases/compiler/typeInferenceOnIndexUnion.ts new file mode 100644 index 0000000000000..35c5fb16a9fa8 --- /dev/null +++ b/tests/cases/compiler/typeInferenceOnIndexUnion.ts @@ -0,0 +1,7 @@ +type Options = { k: "a", a: number } | { k: "b", b: string }; +declare function f(p: T["k"]): T; +const x = f("a"); // expect it to be `{ k: "a", a: number }` + +type Options2 = { k: "a", a: number, c: {} } | { k: "b", b: string, c: {} }; +declare function f2(p: T["k"], c: T["c"]): T; +const x2 = f2("a", { x: 1, y: 2 }); // expect it to be `{ k: "a", a: number, c: {x: number, y: number} }` From 49e19617b41ee17a536ed50870c4e315c2c4f548 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 21 Dec 2017 14:58:29 -0800 Subject: [PATCH 05/29] Move case to prefered location --- src/compiler/checker.ts | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d9d96012fbc5a..95b943ebde094 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11401,23 +11401,6 @@ namespace ts { } return; } - else if (target.flags & TypeFlags.IndexedAccess) { - const targetConstraint = (target).objectType; - const inference = getInferenceInfoForType(targetConstraint); - if (inference) { - if (!inference.isFixed) { - // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` - // Where `T` is `source` and `Keys` is `target.indexType` - const inferenceTypeSymbol = getGlobalSymbol("PartialInference" as __String, SymbolFlags.Type, Diagnostics.Cannot_find_global_type_0); - const inferenceType = getDeclaredTypeOfSymbol(inferenceTypeSymbol); - if (inferenceType !== unknownType) { - const mapper = createTypeMapper(getSymbolLinks(inferenceTypeSymbol).typeParameters, [source, (target as IndexedAccessType).indexType]); - (inference.indexes || (inference.indexes = [])).push(instantiateType(inferenceType, mapper)); - } - } - return; - } - } } if (getObjectFlags(source) & ObjectFlags.Reference && getObjectFlags(target) & ObjectFlags.Reference && (source).target === (target).target) { // If source and target are references to the same generic type, infer from type arguments @@ -11449,6 +11432,23 @@ namespace ts { inferFromTypes((source).objectType, (target).objectType); inferFromTypes((source).indexType, (target).indexType); } + else if (target.flags & TypeFlags.IndexedAccess) { + const targetConstraint = (target).objectType; + const inference = getInferenceInfoForType(targetConstraint); + if (inference) { + if (!inference.isFixed) { + // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` + // Where `T` is `source` and `Keys` is `target.indexType` + const inferenceTypeSymbol = getGlobalSymbol("PartialInference" as __String, SymbolFlags.Type, Diagnostics.Cannot_find_global_type_0); + const inferenceType = getDeclaredTypeOfSymbol(inferenceTypeSymbol); + if (inferenceType !== unknownType) { + const mapper = createTypeMapper(getSymbolLinks(inferenceTypeSymbol).typeParameters, [source, (target as IndexedAccessType).indexType]); + (inference.indexes || (inference.indexes = [])).push(instantiateType(inferenceType, mapper)); + } + } + return; + } + } else if (target.flags & TypeFlags.UnionOrIntersection) { const targetTypes = (target).types; let typeVariableCount = 0; From 96772e5d88626ab7063acc0bdeedd1e0505abffa Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 21 Dec 2017 15:13:11 -0800 Subject: [PATCH 06/29] Small refactor to reduce how many comparisons are performed --- src/compiler/checker.ts | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 95b943ebde094..f6d05ad27b5e4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11690,29 +11690,27 @@ namespace ts { const constraint = getConstraintOfTypeParameter(context.signature.typeParameters[index]); if (constraint) { const instantiatedConstraint = instantiateType(constraint, context); - if (!context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { - if (instantiatedConstraint.flags & TypeFlags.Union) { - const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); - if (discriminantProps) { - let match: Type; - findDiscriminant: for (const p of discriminantProps) { - const candidatePropType = getTypeOfPropertyOfType(aggregateInference, p.escapedName); - for (const type of (instantiatedConstraint as UnionType).types) { - const propType = getTypeOfPropertyOfType(type, p.escapedName); - if (propType && checkTypeAssignableTo(candidatePropType, propType, /*errorNode*/ undefined)) { - if (match && match !== type) { - match = undefined; - break findDiscriminant; - } - else { - match = type; - } + if (instantiatedConstraint.flags & TypeFlags.Union && !context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { + const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); + if (discriminantProps) { + let match: Type; + findDiscriminant: for (const p of discriminantProps) { + const candidatePropType = getTypeOfPropertyOfType(aggregateInference, p.escapedName); + for (const type of (instantiatedConstraint as UnionType).types) { + const propType = getTypeOfPropertyOfType(type, p.escapedName); + if (propType && checkTypeAssignableTo(candidatePropType, propType, /*errorNode*/ undefined)) { + if (match && match !== type) { + match = undefined; + break findDiscriminant; + } + else { + match = type; } } } - if (match) { - aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0); - } + } + if (match) { + aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0); } } } From 2e0c6354b729c94c157500d22389adadb14788a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 28 Feb 2023 10:49:19 +0100 Subject: [PATCH 07/29] Infer reverse mapped types based on inferences made for its concrete properties --- src/compiler/checker.ts | 28 ++- ...eMappedConcretePropertiesInference.symbols | 183 ++++++++++++++++++ ...rseMappedConcretePropertiesInference.types | 179 +++++++++++++++++ ...everseMappedConcretePropertiesInference.ts | 60 ++++++ 4 files changed, 446 insertions(+), 4 deletions(-) create mode 100644 tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols create mode 100644 tests/baselines/reference/reverseMappedConcretePropertiesInference.types create mode 100644 tests/cases/compiler/reverseMappedConcretePropertiesInference.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 70e0220bbb39c..fc8cce8d58087 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -23935,9 +23935,21 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function inferReverseMappedType(sourceType: Type, target: MappedType, constraint: IndexType): Type { const typeParameter = getIndexedAccessType(constraint.type, getTypeParameterFromMappedType(target)) as TypeParameter; const templateType = getTemplateTypeFromMappedType(target); - const inference = createInferenceInfo(typeParameter); - inferTypes([inference], sourceType, templateType); - return getTypeFromInference(inference) || unknownType; + const inferences = [createInferenceInfo(typeParameter)]; + inferTypes(inferences, sourceType, templateType); + const wholeInferredType = getTypeFromInference(inferences[0]); + if (!wholeInferredType && inferences.length > 1) { + const members = createSymbolTable(); + for (let i = 1; i < inferences.length; i++) { + const indexType = (inferences[i].typeParameter as IndexedAccessType).indexType as StringLiteralType; + const name = escapeLeadingUnderscores(indexType.value); + const prop = createSymbol(SymbolFlags.Property, name); + prop.links.type = getTypeFromInference(inferences[i]) || unknownType; + members.set(name, prop); + } + return createAnonymousType(undefined, members, emptyArray, emptyArray, emptyArray); + } + return wholeInferredType || unknownType; } function* getUnmatchedProperties(source: Type, target: Type, requireOptionalProperties: boolean, matchDiscriminantProperties: boolean): IterableIterator { @@ -24255,7 +24267,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (isFromInferenceBlockedSource(source)) { return; } - const inference = getInferenceInfoForType(target); + let inference = getInferenceInfoForType(target); + if ( + !inference && (target.flags & TypeFlags.IndexedAccess) && + inferences[0].typeParameter.flags & TypeFlags.IndexedAccess && + (target as IndexedAccessType).indexType.flags & TypeFlags.StringLiteral && + ((target as IndexedAccessType).objectType.flags & TypeFlags.IndexedAccess) + ) { + inferences.push(inference = createInferenceInfo(target)); + } if (inference) { // If target is a type parameter, make an inference, unless the source type contains // a "non-inferrable" type. Types with this flag set are markers used to prevent inference. diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols b/tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols new file mode 100644 index 0000000000000..658734ebae9ef --- /dev/null +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols @@ -0,0 +1,183 @@ +=== tests/cases/compiler/reverseMappedConcretePropertiesInference.ts === +declare function test>(a: { +>test : Symbol(test, Decl(reverseMappedConcretePropertiesInference.ts, 0, 0)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 0, 48)) +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 0, 62)) +>a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 0, 80)) + + [K in keyof T]: { +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) + + foo: T[K]["foo"]; +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 1, 19)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) + + onFoo: (fooArg: T[K]["foo"]) => void; +>onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 2, 21)) +>fooArg : Symbol(fooArg, Decl(reverseMappedConcretePropertiesInference.ts, 3, 12)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) + + bar: T[K]["bar"]; +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 3, 41)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) + + onBar: (barArg: T[K]["bar"]) => void; +>onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 4, 21)) +>barArg : Symbol(barArg, Decl(reverseMappedConcretePropertiesInference.ts, 5, 12)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) + + }; +}): T; +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) + +const res = test({ +>res : Symbol(res, Decl(reverseMappedConcretePropertiesInference.ts, 9, 5)) +>test : Symbol(test, Decl(reverseMappedConcretePropertiesInference.ts, 0, 0)) + + a: { +>a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 9, 18)) + + foo: 'answer', +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 10, 8)) + + onFoo: (arg) => arg.length, +>onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 11, 22)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 12, 16)) +>arg.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 12, 16)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) + + bar: 42, +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 12, 35)) + + onBar: (arg) => arg + 10 +>onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 13, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 14, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 14, 16)) + + }, + b: { +>b : Symbol(b, Decl(reverseMappedConcretePropertiesInference.ts, 15, 6)) + + foo: true, +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 16, 8)) + + onFoo: (arg) => !!arg, +>onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 17, 18)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 18, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 18, 16)) + + bar: [1, 2, 3], +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 18, 30)) + + onBar: (arg) => [arg, arg] +>onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 19, 23)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 20, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 20, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 20, 16)) + + }, +}) + +interface QueryFunctionContext { +>QueryFunctionContext : Symbol(QueryFunctionContext, Decl(reverseMappedConcretePropertiesInference.ts, 22, 2)) +>TQueryKey : Symbol(TQueryKey, Decl(reverseMappedConcretePropertiesInference.ts, 24, 31)) + + queryKey: TQueryKey; +>queryKey : Symbol(QueryFunctionContext.queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 24, 58)) +>TQueryKey : Symbol(TQueryKey, Decl(reverseMappedConcretePropertiesInference.ts, 24, 31)) +} + +type QueryOptions = { +>QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 26, 1)) + + key: string; +>key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 28, 21)) + + fnData?: unknown; +>fnData : Symbol(fnData, Decl(reverseMappedConcretePropertiesInference.ts, 29, 14)) + +}; + +type UseQueriesOptions> = { +>UseQueriesOptions : Symbol(UseQueriesOptions, Decl(reverseMappedConcretePropertiesInference.ts, 31, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 3 more) +>QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 26, 1)) + + [K in keyof T]: { +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) + + queryKey: T[K]["key"]; +>queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 34, 19)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) + + queryFn?: ( +>queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 35, 26)) + + ctx: QueryFunctionContext +>ctx : Symbol(ctx, Decl(reverseMappedConcretePropertiesInference.ts, 36, 15)) +>QueryFunctionContext : Symbol(QueryFunctionContext, Decl(reverseMappedConcretePropertiesInference.ts, 22, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) + + ) => Promise | T[K]["fnData"]; +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) + + }; +}; + +declare function useQueries>( +>useQueries : Symbol(useQueries, Decl(reverseMappedConcretePropertiesInference.ts, 40, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 42, 28)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 3 more) +>QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 26, 1)) + + queries: [...UseQueriesOptions] +>queries : Symbol(queries, Decl(reverseMappedConcretePropertiesInference.ts, 42, 67)) +>UseQueriesOptions : Symbol(UseQueriesOptions, Decl(reverseMappedConcretePropertiesInference.ts, 31, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 42, 28)) + +): T; +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 42, 28)) + +const resQueries = useQueries([ +>resQueries : Symbol(resQueries, Decl(reverseMappedConcretePropertiesInference.ts, 46, 5)) +>useQueries : Symbol(useQueries, Decl(reverseMappedConcretePropertiesInference.ts, 40, 2)) + { + queryKey: "users", +>queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 47, 3)) + + queryFn: (key) => [{ name: "Andarist" }], +>queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 48, 22)) +>key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 49, 14)) +>name : Symbol(name, Decl(reverseMappedConcretePropertiesInference.ts, 49, 24)) + + }, + { + queryKey: "posts", +>queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 51, 3)) + + queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), +>queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 52, 22)) +>key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 53, 14)) +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>title : Symbol(title, Decl(reverseMappedConcretePropertiesInference.ts, 53, 40)) + } +]); + diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types new file mode 100644 index 0000000000000..1619fda245c67 --- /dev/null +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types @@ -0,0 +1,179 @@ +=== tests/cases/compiler/reverseMappedConcretePropertiesInference.ts === +declare function test>(a: { +>test : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T +>foo : unknown +>bar : unknown +>a : { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; } + + [K in keyof T]: { + foo: T[K]["foo"]; +>foo : T[K]["foo"] + + onFoo: (fooArg: T[K]["foo"]) => void; +>onFoo : (fooArg: T[K]["foo"]) => void +>fooArg : T[K]["foo"] + + bar: T[K]["bar"]; +>bar : T[K]["bar"] + + onBar: (barArg: T[K]["bar"]) => void; +>onBar : (barArg: T[K]["bar"]) => void +>barArg : T[K]["bar"] + + }; +}): T; + +const res = test({ +>res : { a: { foo: string; bar: number; }; b: { foo: boolean; bar: number[]; }; } +>test({ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },}) : { a: { foo: string; bar: number; }; b: { foo: boolean; bar: number[]; }; } +>test : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T +>{ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },} : { a: { foo: string; onFoo: (arg: string) => number; bar: number; onBar: (arg: number) => number; }; b: { foo: true; onFoo: (arg: boolean) => boolean; bar: number[]; onBar: (arg: number[]) => number[][]; }; } + + a: { +>a : { foo: string; onFoo: (arg: string) => number; bar: number; onBar: (arg: number) => number; } +>{ foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 } : { foo: string; onFoo: (arg: string) => number; bar: number; onBar: (arg: number) => number; } + + foo: 'answer', +>foo : string +>'answer' : "answer" + + onFoo: (arg) => arg.length, +>onFoo : (arg: string) => number +>(arg) => arg.length : (arg: string) => number +>arg : string +>arg.length : number +>arg : string +>length : number + + bar: 42, +>bar : number +>42 : 42 + + onBar: (arg) => arg + 10 +>onBar : (arg: number) => number +>(arg) => arg + 10 : (arg: number) => number +>arg : number +>arg + 10 : number +>arg : number +>10 : 10 + + }, + b: { +>b : { foo: true; onFoo: (arg: boolean) => boolean; bar: number[]; onBar: (arg: number[]) => number[][]; } +>{ foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] } : { foo: true; onFoo: (arg: boolean) => boolean; bar: number[]; onBar: (arg: number[]) => number[][]; } + + foo: true, +>foo : true +>true : true + + onFoo: (arg) => !!arg, +>onFoo : (arg: boolean) => boolean +>(arg) => !!arg : (arg: boolean) => boolean +>arg : boolean +>!!arg : boolean +>!arg : boolean +>arg : boolean + + bar: [1, 2, 3], +>bar : number[] +>[1, 2, 3] : number[] +>1 : 1 +>2 : 2 +>3 : 3 + + onBar: (arg) => [arg, arg] +>onBar : (arg: number[]) => number[][] +>(arg) => [arg, arg] : (arg: number[]) => number[][] +>arg : number[] +>[arg, arg] : number[][] +>arg : number[] +>arg : number[] + + }, +}) + +interface QueryFunctionContext { + queryKey: TQueryKey; +>queryKey : TQueryKey +} + +type QueryOptions = { +>QueryOptions : { key: string; fnData?: unknown; } + + key: string; +>key : string + + fnData?: unknown; +>fnData : unknown + +}; + +type UseQueriesOptions> = { +>UseQueriesOptions : UseQueriesOptions + + [K in keyof T]: { + queryKey: T[K]["key"]; +>queryKey : T[K]["key"] + + queryFn?: ( +>queryFn : ((ctx: QueryFunctionContext) => Promise | T[K]["fnData"]) | undefined + + ctx: QueryFunctionContext +>ctx : QueryFunctionContext + + ) => Promise | T[K]["fnData"]; + }; +}; + +declare function useQueries>( +>useQueries : (queries: [...UseQueriesOptions]) => T + + queries: [...UseQueriesOptions] +>queries : [...UseQueriesOptions] + +): T; + +const resQueries = useQueries([ +>resQueries : [{ key: "users"; fnData: { name: string; }[]; }, { key: "posts"; fnData: { title: string; }[]; }] +>useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : [{ key: "users"; fnData: { name: string; }[]; }, { key: "posts"; fnData: { title: string; }[]; }] +>useQueries : (queries: [...UseQueriesOptions]) => T +>[ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }] : [{ queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; }, { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; }] + { +>{ queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], } : { queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; } + + queryKey: "users", +>queryKey : "users" +>"users" : "users" + + queryFn: (key) => [{ name: "Andarist" }], +>queryFn : (key: QueryFunctionContext<"users">) => { name: string; }[] +>(key) => [{ name: "Andarist" }] : (key: QueryFunctionContext<"users">) => { name: string; }[] +>key : QueryFunctionContext<"users"> +>[{ name: "Andarist" }] : { name: string; }[] +>{ name: "Andarist" } : { name: string; } +>name : string +>"Andarist" : "Andarist" + + }, + { +>{ queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), } : { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; } + + queryKey: "posts", +>queryKey : "posts" +>"posts" : "posts" + + queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), +>queryFn : (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]> +>(key) => Promise.resolve([{ title: 'TS 5.1' }]) : (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]> +>key : QueryFunctionContext<"posts"> +>Promise.resolve([{ title: 'TS 5.1' }]) : Promise<{ title: string; }[]> +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +>Promise : PromiseConstructor +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +>[{ title: 'TS 5.1' }] : { title: string; }[] +>{ title: 'TS 5.1' } : { title: string; } +>title : string +>'TS 5.1' : "TS 5.1" + } +]); + diff --git a/tests/cases/compiler/reverseMappedConcretePropertiesInference.ts b/tests/cases/compiler/reverseMappedConcretePropertiesInference.ts new file mode 100644 index 0000000000000..d5a13fe36d5b9 --- /dev/null +++ b/tests/cases/compiler/reverseMappedConcretePropertiesInference.ts @@ -0,0 +1,60 @@ +// @strict: true +// @lib: esnext +// @noEmit: true + +declare function test>(a: { + [K in keyof T]: { + foo: T[K]["foo"]; + onFoo: (fooArg: T[K]["foo"]) => void; + bar: T[K]["bar"]; + onBar: (barArg: T[K]["bar"]) => void; + }; +}): T; + +const res = test({ + a: { + foo: 'answer', + onFoo: (arg) => arg.length, + bar: 42, + onBar: (arg) => arg + 10 + }, + b: { + foo: true, + onFoo: (arg) => !!arg, + bar: [1, 2, 3], + onBar: (arg) => [arg, arg] + }, +}) + +interface QueryFunctionContext { + queryKey: TQueryKey; +} + +type QueryOptions = { + key: string; + fnData?: unknown; +}; + +type UseQueriesOptions> = { + [K in keyof T]: { + queryKey: T[K]["key"]; + queryFn?: ( + ctx: QueryFunctionContext + ) => Promise | T[K]["fnData"]; + }; +}; + +declare function useQueries>( + queries: [...UseQueriesOptions] +): T; + +const resQueries = useQueries([ + { + queryKey: "users", + queryFn: (key) => [{ name: "Andarist" }], + }, + { + queryKey: "posts", + queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), + } +]); From d0e8b8b4b9e49447921d7c1646c92488bccb66bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 18 Apr 2023 00:39:30 +0200 Subject: [PATCH 08/29] update baselines, note: some are broken --- src/harness/fourslashInterfaceImpl.ts | 1 + .../reference/correlatedUnions.types | 10 +- .../indexAccessCombinedInference.errors.txt | 130 +++++++++ .../indexAccessCombinedInference.symbols | 7 +- .../indexAccessCombinedInference.types | 107 ++----- .../baselines/reference/inferingFromAny.types | 2 +- .../reference/keyofAndIndexedAccess.types | 6 +- ...actDefaultPropsInferenceSuccess.errors.txt | 63 +---- .../reactDefaultPropsInferenceSuccess.types | 32 +-- .../thisTypeInObjectLiterals2.errors.txt | 260 ++++++++++++++++++ .../reference/thisTypeInObjectLiterals2.js | 5 - .../thisTypeInObjectLiterals2.symbols | 8 +- .../reference/thisTypeInObjectLiterals2.types | 32 +-- .../reference/typeInferenceOnIndexUnion.types | 13 +- 14 files changed, 470 insertions(+), 206 deletions(-) create mode 100644 tests/baselines/reference/indexAccessCombinedInference.errors.txt create mode 100644 tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt diff --git a/src/harness/fourslashInterfaceImpl.ts b/src/harness/fourslashInterfaceImpl.ts index d7ad6357b83c9..2e5a2738b83c3 100644 --- a/src/harness/fourslashInterfaceImpl.ts +++ b/src/harness/fourslashInterfaceImpl.ts @@ -1191,6 +1191,7 @@ export namespace Completion { typeEntry("Capitalize"), typeEntry("Uncapitalize"), interfaceEntry("ThisType"), + typeEntry("PartialInference"), varEntry("ArrayBuffer"), interfaceEntry("ArrayBufferTypes"), typeEntry("ArrayBufferLike"), diff --git a/tests/baselines/reference/correlatedUnions.types b/tests/baselines/reference/correlatedUnions.types index 4f80a4250d1e2..dc7077f294f18 100644 --- a/tests/baselines/reference/correlatedUnions.types +++ b/tests/baselines/reference/correlatedUnions.types @@ -489,7 +489,7 @@ function ff1() { >Keys : keyof { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; } const funs: { [P in Keys]: (...args: ArgMap[P]) => void } = { ->funs : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; } +>funs : { sum: (a: number, b: number) => void; concat: (a: string, b: string, c: string) => void; } >args : { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[P] >{ sum: (a, b) => a + b, concat: (a, b, c) => a + b + c } : { sum: (a: number, b: number) => number; concat: (a: string, b: string, c: string) => string; } @@ -520,14 +520,14 @@ function ff1() { >args : { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[K] const fn = funs[funKey]; ->fn : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; }[K] ->funs[funKey] : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; }[K] ->funs : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; } +>fn : { sum: (a: number, b: number) => void; concat: (a: string, b: string, c: string) => void; }[K] +>funs[funKey] : { sum: (a: number, b: number) => void; concat: (a: string, b: string, c: string) => void; }[K] +>funs : { sum: (a: number, b: number) => void; concat: (a: string, b: string, c: string) => void; } >funKey : K fn(...args); >fn(...args) : void ->fn : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; }[K] +>fn : { sum: (a: number, b: number) => void; concat: (a: string, b: string, c: string) => void; }[K] >...args : string | number >args : { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[K] } diff --git a/tests/baselines/reference/indexAccessCombinedInference.errors.txt b/tests/baselines/reference/indexAccessCombinedInference.errors.txt new file mode 100644 index 0000000000000..56bd3f9e28e35 --- /dev/null +++ b/tests/baselines/reference/indexAccessCombinedInference.errors.txt @@ -0,0 +1,130 @@ +tests/cases/compiler/indexAccessCombinedInference.ts(104,21): error TS2536: Type '"0"' cannot be used to index type 'this'. +tests/cases/compiler/indexAccessCombinedInference.ts(106,49): error TS2536: Type '"0"' cannot be used to index type 'T'. +tests/cases/compiler/indexAccessCombinedInference.ts(106,60): error TS2536: Type '"0"' cannot be used to index type 'T'. +tests/cases/compiler/indexAccessCombinedInference.ts(106,77): error TS2536: Type '"1"' cannot be used to index type 'T'. +tests/cases/compiler/indexAccessCombinedInference.ts(106,86): error TS2536: Type '"0"' cannot be used to index type 'T'. +tests/cases/compiler/indexAccessCombinedInference.ts(106,110): error TS2536: Type '"1"' cannot be used to index type 'T'. + + +==== tests/cases/compiler/indexAccessCombinedInference.ts (6 errors) ==== + // Simple case + interface Args { + TA: object, + TY: object + } + + declare function foo( + a: T["TA"], + b: T["TY"]): T["TA"] & T["TY"]; + + const x = foo({ + x: { + j: 12, + i: 11 + } + }, { y: 42 }); + + // Union result type + interface A { + foo: number; + } + interface B { + bar: string; + } + declare const something: A | B; + + const y = foo(something, { bat: 42 }); + + // Union key type + interface Args2 { + TA?: object, // Optional since only one of TA or TB needs to be infered in the below argument list + TB?: object, + TY: object + } + declare function foo2( + a: T["TA"] | T["TB"], + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; + declare function foo3( // Morally equivalent to foo2 + a: T["TA" | "TB"], + b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; + let z = foo2({ + x: { + j: 12, + i: 11 + } + }, { y: 42 }); + let zz = foo3({ + x: { + j: 12, + i: 11 + } + }, { y: 42 }); + z = zz; + zz = z; + + // Higher-order + interface Args3 { + Key: "A" | "B", + A: object, + B: object, + Merge: object, + } + declare const either: "A" | "B"; + declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; + + const opt1 = pickOne("A", {x: 12}, {y: ""}, {z: /./}); + const opt2 = pickOne("B", {x: 12}, {y: ""}, {z: /./}); + const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); + + const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); + const opt4 = pickDelayed("A"); + const opt5 = pickDelayed("B"); + const opt6 = pickDelayed(either); + + // Reopenable + interface Args3 { + /** + * One must make patched parameters optional, otherwise signatures expecting the unpatched + * interface (ie, pickOne above) will not be able to produce a type satisfying the interface + * (as there are no inference sites for the new members) and will fall back to the constraints on each member + */ + Extra?: object, + } + declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & {into: T["Merge"], extra: T["Extra"]}; + const opt7 = pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}); + const opt8 = pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}); + const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); + + // Interactions with `this` types + interface TPicker { + Key: keyof this, + X: number, + Y: string + } + declare function chooseLiteral(choice: T["Key"], x: T["X"], y:T["Y"]): T[T["Key"]]; + const cx = chooseLiteral("X", 1, "no"); + const cy = chooseLiteral("Y", 0, "yes"); + const ceither = chooseLiteral("X" as "X" | "Y", 1, "yes"); + const cneither = chooseLiteral("Key", 0, "no"); + + // Multiple inference sites + interface Args4 { + 0: object, + 1: Record, + ~~~~~~~~~ +!!! error TS2536: Type '"0"' cannot be used to index type 'this'. + } + declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; + ~~~~~~ +!!! error TS2536: Type '"0"' cannot be used to index type 'T'. + ~~~~~~ +!!! error TS2536: Type '"0"' cannot be used to index type 'T'. + ~~~~~~ +!!! error TS2536: Type '"1"' cannot be used to index type 'T'. + ~~~~~~ +!!! error TS2536: Type '"0"' cannot be used to index type 'T'. + ~~~~~~ +!!! error TS2536: Type '"1"' cannot be used to index type 'T'. + + const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); + \ No newline at end of file diff --git a/tests/baselines/reference/indexAccessCombinedInference.symbols b/tests/baselines/reference/indexAccessCombinedInference.symbols index d108b7d1e9c72..599b8f74394da 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.symbols +++ b/tests/baselines/reference/indexAccessCombinedInference.symbols @@ -345,9 +345,12 @@ interface Args4 { >Args4 : Symbol(Args4, Decl(indexAccessCombinedInference.ts, 98, 47)) 0: object, +>0 : Symbol(Args4[0], Decl(indexAccessCombinedInference.ts, 101, 17)) + 1: Record, ->Record : Symbol(Record, Decl(lib.d.ts, --, --)) ->Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>1 : Symbol(Args4[1], Decl(indexAccessCombinedInference.ts, 102, 14)) +>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) } declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; >dualInputs : Symbol(dualInputs, Decl(indexAccessCombinedInference.ts, 104, 1)) diff --git a/tests/baselines/reference/indexAccessCombinedInference.types b/tests/baselines/reference/indexAccessCombinedInference.types index 03badaade7613..523749d82c9ac 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.types +++ b/tests/baselines/reference/indexAccessCombinedInference.types @@ -1,8 +1,6 @@ === tests/cases/compiler/indexAccessCombinedInference.ts === // Simple case interface Args { ->Args : Args - TA: object, >TA : object @@ -12,18 +10,12 @@ interface Args { declare function foo( >foo : (a: T["TA"], b: T["TY"]) => T["TA"] & T["TY"] ->T : T ->Args : Args a: T["TA"], >a : T["TA"] ->T : T b: T["TY"]): T["TA"] & T["TY"]; >b : T["TY"] ->T : T ->T : T ->T : T const x = foo({ >x : { x: { j: number; i: number; }; } & { y: number; } @@ -50,25 +42,19 @@ const x = foo({ // Union result type interface A { ->A : A - foo: number; >foo : number } interface B { ->B : B - bar: string; >bar : string } declare const something: A | B; >something : A | B ->A : A ->B : B const y = foo(something, { bat: 42 }); >y : (A & { bat: number; }) | (B & { bat: number; }) ->foo(something, { bat: 42 }) : (A & { bat: number; }) | (B & { bat: number; }) +>foo(something, { bat: 42 }) : (A | B) & { bat: number; } >foo : (a: T["TA"], b: T["TY"]) => T["TA"] & T["TY"] >something : A | B >{ bat: 42 } : { bat: number; } @@ -77,8 +63,6 @@ const y = foo(something, { bat: 42 }); // Union key type interface Args2 { ->Args2 : Args2 - TA?: object, // Optional since only one of TA or TB needs to be infered in the below argument list >TA : object @@ -89,41 +73,26 @@ interface Args2 { >TY : object } declare function foo2( ->foo2 : (a: T["TA"] | T["TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"]; } & T["TY"] ->T : T ->Args2 : Args2 +>foo2 : (a: T["TA"] | T["TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"];} & T["TY"] a: T["TA"] | T["TB"], >a : T["TA"] | T["TB"] ->T : T ->T : T b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; >b : T["TY"] ->T : T >a : T["TA"] ->T : T >b : T["TB"] ->T : T ->T : T declare function foo3( // Morally equivalent to foo2 ->foo3 : (a: T["TA" | "TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"]; } & T["TY"] ->T : T ->Args2 : Args2 +>foo3 : (a: T["TA" | "TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"];} & T["TY"] a: T["TA" | "TB"], >a : T["TA" | "TB"] ->T : T b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; >b : T["TY"] ->T : T >a : T["TA"] ->T : T >b : T["TB"] ->T : T ->T : T let z = foo2({ >z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } @@ -149,8 +118,8 @@ let z = foo2({ >42 : 42 let zz = foo3({ ->zz : { a: any; b: any; } & { y: number; } ->foo3({ x: { j: 12, i: 11 }}, { y: 42 }) : { a: any; b: any; } & { y: number; } +>zz : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } +>foo3({ x: { j: 12, i: 11 }}, { y: 42 }) : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } >foo3 : (a: T["TA" | "TB"], b: T["TY"]) => { a: T["TA"]; b: T["TB"]; } & T["TY"] >{ x: { j: 12, i: 11 }} : { x: { j: number; i: number; }; } @@ -172,19 +141,17 @@ let zz = foo3({ >42 : 42 z = zz; ->z = zz : { a: any; b: any; } & { y: number; } +>z = zz : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } >z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } ->zz : { a: any; b: any; } & { y: number; } +>zz : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } zz = z; >zz = z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } ->zz : { a: any; b: any; } & { y: number; } +>zz : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } >z : { a: { x: { j: number; i: number; }; }; b: { x: { j: number; i: number; }; }; } & { y: number; } // Higher-order interface Args3 { ->Args3 : Args3 - Key: "A" | "B", >Key : "A" | "B" @@ -202,19 +169,10 @@ declare const either: "A" | "B"; declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; >pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } ->T : T ->Args3 : Args3 >key : T["Key"] ->T : T >left : T["A"] ->T : T >right : T["B"] ->T : T >into : T["Merge"] ->T : T ->T : T ->T : T ->T : T const opt1 = pickOne("A", {x: 12}, {y: ""}, {z: /./}); >opt1 : { x: number; } & { z: RegExp; } @@ -248,7 +206,7 @@ const opt2 = pickOne("B", {x: 12}, {y: ""}, {z: /./}); const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); >opt3 : ({ x: number; } & { z: RegExp; }) | ({ y: string; } & { z: RegExp; }) ->pickOne(either, {x: 12}, {y: ""}, {z: /./}) : ({ x: number; } & { z: RegExp; }) | ({ y: string; } & { z: RegExp; }) +>pickOne(either, {x: 12}, {y: ""}, {z: /./}) : ({ x: number; } | { y: string; }) & { z: RegExp; } >pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } >either : "A" | "B" >{x: 12} : { x: number; } @@ -264,10 +222,7 @@ const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); >pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } >(x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}) : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } ->TKey : TKey ->Args3 : Args3 >x : TKey ->TKey : TKey >pickOne(x, {j: x}, {i: x}, {chosen: x}) : ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } >pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } >x : TKey @@ -295,14 +250,12 @@ const opt5 = pickDelayed("B"); const opt6 = pickDelayed(either); >opt6 : ({ j: "A" | "B"; } & { chosen: "A" | "B"; }) | ({ i: "A" | "B"; } & { chosen: "A" | "B"; }) ->pickDelayed(either) : ({ j: "A" | "B"; } & { chosen: "A" | "B"; }) | ({ i: "A" | "B"; } & { chosen: "A" | "B"; }) +>pickDelayed(either) : ({ j: "A" | "B"; } | { i: "A" | "B"; }) & { chosen: "A" | "B"; } >pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } >either : "A" | "B" // Reopenable interface Args3 { ->Args3 : Args3 - /** * One must make patched parameters optional, otherwise signatures expecting the unpatched * interface (ie, pickOne above) will not be able to produce a type satisfying the interface @@ -312,25 +265,14 @@ interface Args3 { >Extra : object } declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & {into: T["Merge"], extra: T["Extra"]}; ->pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } ->T : T ->Args3 : Args3 +>pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"];}; } >key : T["Key"] ->T : T >left : T["A"] ->T : T >right : T["B"] ->T : T >into : T["Merge"] ->T : T >extra : T["Extra"] ->T : T ->T : T ->T : T >into : T["Merge"] ->T : T >extra : T["Extra"] ->T : T const opt7 = pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}); >opt7 : { x: number; } & { into: { z: RegExp; }; extra: { z: RegExp; }; } @@ -370,7 +312,7 @@ const opt8 = pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}); const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); >opt9 : ({ x: number; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) | ({ y: string; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) ->pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}) : ({ x: number; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) | ({ y: string; } & { into: { z: RegExp; }; extra: { z: RegExp; }; }) +>pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}) : ({ x: number; } | { y: string; }) & { into: { z: RegExp; }; extra: { z: RegExp; }; } >pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } >either : "A" | "B" >{x: 12} : { x: number; } @@ -388,8 +330,6 @@ const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); // Interactions with `this` types interface TPicker { ->TPicker : TPicker - Key: keyof this, >Key : keyof this @@ -401,16 +341,9 @@ interface TPicker { } declare function chooseLiteral(choice: T["Key"], x: T["X"], y:T["Y"]): T[T["Key"]]; >chooseLiteral : (choice: T["Key"], x: T["X"], y: T["Y"]) => T[T["Key"]] ->T : T ->TPicker : TPicker >choice : T["Key"] ->T : T >x : T["X"] ->T : T >y : T["Y"] ->T : T ->T : T ->T : T const cx = chooseLiteral("X", 1, "no"); >cx : 1 @@ -447,26 +380,18 @@ const cneither = chooseLiteral("Key", 0, "no"); // Multiple inference sites interface Args4 { ->Args4 : Args4 - 0: object, +>0 : object + 1: Record, ->Record : Record ->Function : Function +>1 : Record } declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; ->dualInputs : (x: T["0"], y: T["0"], toDelay: T["1"]) => T["0"] & { transformers: T["1"]; } ->T : T ->Args4 : Args4 +>dualInputs : (x: T["0"], y: T["0"], toDelay: T["1"]) => T["0"] & { transformers: T["1"];} >x : T["0"] ->T : T >y : T["0"] ->T : T >toDelay : T["1"] ->T : T ->T : T >transformers : T["1"] ->T : T const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); >result : { x: number; } & { x: number; } & { transformers: { x: () => ""; }; } diff --git a/tests/baselines/reference/inferingFromAny.types b/tests/baselines/reference/inferingFromAny.types index 817287ed8180c..29782e569f84c 100644 --- a/tests/baselines/reference/inferingFromAny.types +++ b/tests/baselines/reference/inferingFromAny.types @@ -203,7 +203,7 @@ var a = f18(a); var a = f19(a, a); >a : any ->f19(a, a) : { [K in Keys]: { [K1 in K]: any; }; }[K] +>f19(a, a) : PartialInference >f19 : (k: K, x: T[K]) => T >a : any >a : any diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index e8d59f2fa7978..5a6e943ed2d2a 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -58,10 +58,10 @@ type K00 = keyof any; // string >K00 : string | number | symbol type K01 = keyof string; // "toString" | "charAt" | ... ->K01 : number | "length" | "toString" | "concat" | "slice" | "indexOf" | "lastIndexOf" | "charAt" | "charCodeAt" | "localeCompare" | "match" | "replace" | "search" | "split" | "substring" | "toLowerCase" | "toLocaleLowerCase" | "toUpperCase" | "toLocaleUpperCase" | "trim" | "substr" | "valueOf" +>K01 : number | "charAt" | "charCodeAt" | "concat" | "indexOf" | "lastIndexOf" | "localeCompare" | "match" | "replace" | "search" | "slice" | "split" | "substring" | "toLowerCase" | "toLocaleLowerCase" | "toUpperCase" | "toLocaleUpperCase" | "trim" | "length" | "substr" | "toString" | "valueOf" type K02 = keyof number; // "toString" | "toFixed" | "toExponential" | ... ->K02 : "toString" | "toLocaleString" | "toFixed" | "toExponential" | "toPrecision" | "valueOf" +>K02 : "toFixed" | "toExponential" | "toPrecision" | "toString" | "toLocaleString" | "valueOf" type K03 = keyof boolean; // "valueOf" >K03 : "valueOf" @@ -97,7 +97,7 @@ type K14 = keyof Object; // "constructor" | "toString" | ... >K14 : keyof Object type K15 = keyof E; // "toString" | "toFixed" | "toExponential" | ... ->K15 : "toString" | "toLocaleString" | "toFixed" | "toExponential" | "toPrecision" | "valueOf" +>K15 : "toFixed" | "toExponential" | "toPrecision" | "toString" | "toLocaleString" | "valueOf" type K16 = keyof [string, number]; // "0" | "1" | "length" | "toString" | ... >K16 : keyof [string, number] diff --git a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt index 335f0febc862f..3c3962fa6ae8d 100644 --- a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt +++ b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt @@ -1,26 +1,10 @@ -tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(27,36): error TS2769: No overload matches this call. - Overload 1 of 2, '(props: Readonly): FieldFeedback', gave the following error. - Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. - Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. - Type 'void' is not assignable to type 'boolean'. - Overload 2 of 2, '(props: Props, context?: any): FieldFeedback', gave the following error. - Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(43,41): error TS2769: No overload matches this call. - Overload 1 of 2, '(props: Readonly): FieldFeedbackBeta', gave the following error. - Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. - Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. - Type 'void' is not assignable to type 'boolean'. - Overload 2 of 2, '(props: Props, context?: any): FieldFeedbackBeta', gave the following error. - Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,37): error TS2769: No overload matches this call. - Overload 1 of 2, '(props: Readonly): FieldFeedback2', gave the following error. - Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. - Type 'void' is not assignable to type 'boolean'. - Overload 2 of 2, '(props: MyPropsProps, context?: any): FieldFeedback2', gave the following error. - Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. +tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(24,42): error TS7006: Parameter 'value' implicitly has an 'any' type. +tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(27,42): error TS7006: Parameter 'value' implicitly has an 'any' type. +tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(61,43): error TS7006: Parameter 'value' implicitly has an 'any' type. +tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: Parameter 'value' implicitly has an 'any' type. -==== tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx (3 errors) ==== +==== tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx (4 errors) ==== /// import React from 'react'; @@ -45,19 +29,13 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,37): error TS2769: // OK const Test1 = () => !!value} />; + ~~~~~ +!!! error TS7006: Parameter 'value' implicitly has an 'any' type. // Error: Void not assignable to boolean const Test2 = () => console.log(value)} />; - ~~~~ -!!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedback', gave the following error. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. -!!! error TS2769: Type 'void' is not assignable to type 'boolean'. -!!! error TS2769: Overload 2 of 2, '(props: Props, context?: any): FieldFeedback', gave the following error. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' -!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' + ~~~~~ +!!! error TS7006: Parameter 'value' implicitly has an 'any' type. class FieldFeedbackBeta

extends React.Component

{ static defaultProps: BaseProps = { @@ -74,16 +52,6 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,37): error TS2769: // Error: Void not assignable to boolean const Test2a = () => console.log(value)} error>Hah; - ~~~~ -!!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedbackBeta', gave the following error. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. -!!! error TS2769: Type 'void' is not assignable to type 'boolean'. -!!! error TS2769: Overload 2 of 2, '(props: Props, context?: any): FieldFeedbackBeta', gave the following error. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children"> & Partial & Readonly, keyof Props>> & Partial>' -!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children"> & Partial & Readonly, keyof Props>> & Partial>' interface MyPropsProps extends Props { when: (value: string) => boolean; @@ -102,18 +70,13 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,37): error TS2769: // OK const Test3 = () => !!value} />; + ~~~~~ +!!! error TS7006: Parameter 'value' implicitly has an 'any' type. // Error: Void not assignable to boolean const Test4 = () => console.log(value)} />; - ~~~~ -!!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedback2', gave the following error. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. -!!! error TS2769: Type 'void' is not assignable to type 'boolean'. -!!! error TS2769: Overload 2 of 2, '(props: MyPropsProps, context?: any): FieldFeedback2', gave the following error. -!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. -!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:46:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' -!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:46:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' + ~~~~~ +!!! error TS7006: Parameter 'value' implicitly has an 'any' type. // OK const Test5 = () => ; diff --git a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types index 9995e298150c5..289c831bc55a1 100644 --- a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types +++ b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types @@ -49,12 +49,12 @@ const Test1 = () => !!value} />; >() => !!value} /> : () => JSX.Element > !!value} /> : JSX.Element >FieldFeedback : typeof FieldFeedback ->when : (value: string) => boolean ->value => !!value : (value: string) => boolean ->value : string +>when : (value: any) => boolean +>value => !!value : (value: any) => boolean +>value : any >!!value : boolean >!value : boolean ->value : string +>value : any // Error: Void not assignable to boolean const Test2 = () => console.log(value)} />; @@ -62,14 +62,14 @@ const Test2 = () => console.log(value)} />; >() => console.log(value)} /> : () => JSX.Element > console.log(value)} /> : JSX.Element >FieldFeedback : typeof FieldFeedback ->when : (value: string) => void ->value => console.log(value) : (value: string) => void ->value : string +>when : (value: any) => void +>value => console.log(value) : (value: any) => void +>value : any >console.log(value) : void >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->value : string +>value : any class FieldFeedbackBeta

extends React.Component

{ >FieldFeedbackBeta : FieldFeedbackBeta

@@ -176,12 +176,12 @@ const Test3 = () => !!value} />; >() => !!value} /> : () => JSX.Element > !!value} /> : JSX.Element >FieldFeedback2 : typeof FieldFeedback2 ->when : (value: string) => boolean ->value => !!value : (value: string) => boolean ->value : string +>when : (value: any) => boolean +>value => !!value : (value: any) => boolean +>value : any >!!value : boolean >!value : boolean ->value : string +>value : any // Error: Void not assignable to boolean const Test4 = () => console.log(value)} />; @@ -189,14 +189,14 @@ const Test4 = () => console.log(value)} />; >() => console.log(value)} /> : () => JSX.Element > console.log(value)} /> : JSX.Element >FieldFeedback2 : typeof FieldFeedback2 ->when : (value: string) => void ->value => console.log(value) : (value: string) => void ->value : string +>when : (value: any) => void +>value => console.log(value) : (value: any) => void +>value : any >console.log(value) : void >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->value : string +>value : any // OK const Test5 = () => ; diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt b/tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt new file mode 100644 index 0000000000000..b00cc7e423fb5 --- /dev/null +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt @@ -0,0 +1,260 @@ +tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(224,9): error TS2322: Type '{ test(): number; hello: { get(): string; set(value: string): void; }; }' is not assignable to type 'Accessors<{ hello: string; }>'. + Object literal may only specify known properties, and 'test' does not exist in type 'Accessors<{ hello: string; }>'. +tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(239,5): error TS2339: Property 'f' does not exist on type '{ x: number; y: number; }'. +tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(240,5): error TS2339: Property 'test' does not exist on type '{ x: number; y: number; }'. +tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(241,5): error TS2339: Property 'hello' does not exist on type '{ x: number; y: number; }'. + + +==== tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts (4 errors) ==== + // In methods of an object literal with no contextual type, 'this' has the type + // of the object literal. + + let obj1 = { + a: 1, + f() { + return this.a; + }, + b: "hello", + c: { + g() { + this.g(); + } + }, + get d() { + return this.a; + }, + get e() { + return this.b; + }, + set e(value) { + this.b = value; + } + }; + + // In methods of an object literal with a contextual type, 'this' has the + // contextual type. + + type Point = { + x: number; + y: number; + z?: number; + moveBy(dx: number, dy: number, dz?: number): void; + } + + let p1: Point = { + x: 10, + y: 20, + moveBy(dx, dy, dz) { + this.x += dx; + this.y += dy; + if (this.z && dz) { + this.z += dz; + } + } + }; + + let p2: Point | null = { + x: 10, + y: 20, + moveBy(dx, dy, dz) { + this.x += dx; + this.y += dy; + if (this.z && dz) { + this.z += dz; + } + } + }; + + let p3: Point | undefined = { + x: 10, + y: 20, + moveBy(dx, dy, dz) { + this.x += dx; + this.y += dy; + if (this.z && dz) { + this.z += dz; + } + } + }; + + let p4: Point | null | undefined = { + x: 10, + y: 20, + moveBy(dx, dy, dz) { + this.x += dx; + this.y += dy; + if (this.z && dz) { + this.z += dz; + } + } + }; + + declare function f1(p: Point): void; + + f1({ + x: 10, + y: 20, + moveBy(dx, dy, dz) { + this.x += dx; + this.y += dy; + if (this.z && dz) { + this.z += dz; + } + } + }); + + declare function f2(p: Point | null | undefined): void; + + f2({ + x: 10, + y: 20, + moveBy(dx, dy, dz) { + this.x += dx; + this.y += dy; + if (this.z && dz) { + this.z += dz; + } + } + }); + + // In methods of an object literal with a contextual type that includes some + // ThisType, 'this' is of type T. + + type ObjectDescriptor = { + data?: D; + methods?: M & ThisType; // Type of 'this' in methods is D & M + } + + declare function makeObject(desc: ObjectDescriptor): D & M; + + let x1 = makeObject({ + data: { x: 0, y: 0 }, + methods: { + moveBy(dx: number, dy: number) { + this.x += dx; // Strongly typed this + this.y += dy; // Strongly typed this + } + } + }); + + // In methods contained in an object literal with a contextual type that includes + // some ThisType, 'this' is of type T. + + type ObjectDescriptor2 = ThisType & { + data?: D; + methods?: M; + } + + declare function makeObject2(desc: ObjectDescriptor): D & M; + + let x2 = makeObject2({ + data: { x: 0, y: 0 }, + methods: { + moveBy(dx: number, dy: number) { + this.x += dx; // Strongly typed this + this.y += dy; // Strongly typed this + } + } + }); + + // Check pattern similar to Object.defineProperty and Object.defineProperties + + type PropDesc = { + value?: T; + get?(): T; + set?(value: T): void; + } + + type PropDescMap = { + [K in keyof T]: PropDesc; + } + + declare function defineProp(obj: T, name: K, desc: PropDesc & ThisType): T & Record; + + declare function defineProps(obj: T, descs: PropDescMap & ThisType): T & U; + + let p10 = defineProp(p1, "foo", { value: 42 }); + p10.foo = p10.foo + 1; + + let p11 = defineProp(p1, "bar", { + get() { + return this.x; + }, + set(value: number) { + this.x = value; + } + }); + p11.bar = p11.bar + 1; + + let p12 = defineProps(p1, { + foo: { + value: 42 + }, + bar: { + get(): number { + return this.x; + }, + set(value: number) { + this.x = value; + } + } + }); + p12.foo = p12.foo + 1; + p12.bar = p12.bar + 1; + + // Proof of concept for typing of Vue.js + + type Accessors = { [K in keyof T]: (() => T[K]) | Computed }; + + type Dictionary = { [x: string]: T } + + type Computed = { + get?(): T; + set?(value: T): void; + } + + type VueOptions = ThisType & { + data?: D | (() => D); + methods?: M; + computed?: Accessors

; + } + + declare const Vue: new (options: VueOptions) => D & M & P; + + let vue = new Vue({ + data: () => ({ x: 1, y: 2 }), + methods: { + f(x: string) { + return this.x; + } + }, + computed: { + test(): number { + ~~~~ +!!! error TS2322: Type '{ test(): number; hello: { get(): string; set(value: string): void; }; }' is not assignable to type 'Accessors<{ hello: string; }>'. +!!! error TS2322: Object literal may only specify known properties, and 'test' does not exist in type 'Accessors<{ hello: string; }>'. +!!! related TS6500 tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts:211:5: The expected type comes from property 'computed' which is declared here on type 'VueOptions<{ x: number; y: number; }, { f(x: string): number; }, { hello: string; }>' + return this.x; + }, + hello: { + get() { + return "hi"; + }, + set(value: string) { + } + } + } + }); + + vue; + vue.x; + vue.f("abc"); + ~ +!!! error TS2339: Property 'f' does not exist on type '{ x: number; y: number; }'. + vue.test; + ~~~~ +!!! error TS2339: Property 'test' does not exist on type '{ x: number; y: number; }'. + vue.hello; + ~~~~~ +!!! error TS2339: Property 'hello' does not exist on type '{ x: number; y: number; }'. + \ No newline at end of file diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.js b/tests/baselines/reference/thisTypeInObjectLiterals2.js index 320edfc61c31f..1114422c9c0ee 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.js +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.js @@ -484,9 +484,4 @@ declare const Vue: new (options: VueOptions) => D & M & P; declare let vue: { x: number; y: number; -} & { - f(x: string): number; -} & { - test: number; - hello: string; }; diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.symbols b/tests/baselines/reference/thisTypeInObjectLiterals2.symbols index 0ed97b942f1c5..313a9a619fa30 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.symbols +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.symbols @@ -726,6 +726,7 @@ let vue = new Vue({ return this.x; >this.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) +>this : Symbol(__object, Decl(thisTypeInObjectLiterals2.ts, 216, 17)) >x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) } }, @@ -737,6 +738,7 @@ let vue = new Vue({ return this.x; >this.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) +>this : Symbol(__object, Decl(thisTypeInObjectLiterals2.ts, 216, 17)) >x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) }, @@ -765,17 +767,11 @@ vue.x; >x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) vue.f("abc"); ->vue.f : Symbol(f, Decl(thisTypeInObjectLiterals2.ts, 217, 14)) >vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) ->f : Symbol(f, Decl(thisTypeInObjectLiterals2.ts, 217, 14)) vue.test; ->vue.test : Symbol(test, Decl(thisTypeInObjectLiterals2.ts, 222, 15)) >vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) ->test : Symbol(test, Decl(thisTypeInObjectLiterals2.ts, 222, 15)) vue.hello; ->vue.hello : Symbol(hello, Decl(thisTypeInObjectLiterals2.ts, 225, 10)) >vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) ->hello : Symbol(hello, Decl(thisTypeInObjectLiterals2.ts, 225, 10)) diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.types b/tests/baselines/reference/thisTypeInObjectLiterals2.types index a4e97906ecdde..1d00535f1fc89 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.types +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.types @@ -704,8 +704,8 @@ declare const Vue: new (options: VueOptions) => D & M & P; >options : VueOptions let vue = new Vue({ ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } ->new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } +>new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } >Vue : new (options: VueOptions) => D & M & P >{ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }} : { data: () => { x: number; y: number; }; methods: { f(x: string): number; }; computed: { test(): number; hello: { get(): string; set(value: string): void; }; }; } @@ -729,7 +729,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>this : { x: number; y: number; } >x : number } }, @@ -742,7 +742,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>this : { x: number; y: number; } >x : number }, @@ -766,27 +766,27 @@ let vue = new Vue({ }); vue; ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } vue.x; >vue.x : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } >x : number vue.f("abc"); ->vue.f("abc") : number ->vue.f : (x: string) => number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } ->f : (x: string) => number +>vue.f("abc") : any +>vue.f : any +>vue : { x: number; y: number; } +>f : any >"abc" : "abc" vue.test; ->vue.test : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } ->test : number +>vue.test : any +>vue : { x: number; y: number; } +>test : any vue.hello; ->vue.hello : string ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } ->hello : string +>vue.hello : any +>vue : { x: number; y: number; } +>hello : any diff --git a/tests/baselines/reference/typeInferenceOnIndexUnion.types b/tests/baselines/reference/typeInferenceOnIndexUnion.types index 57e171d86ba74..5ca5a9c604fed 100644 --- a/tests/baselines/reference/typeInferenceOnIndexUnion.types +++ b/tests/baselines/reference/typeInferenceOnIndexUnion.types @@ -1,6 +1,6 @@ === tests/cases/compiler/typeInferenceOnIndexUnion.ts === type Options = { k: "a", a: number } | { k: "b", b: string }; ->Options : Options +>Options : { k: "a"; a: number; } | { k: "b"; b: string; } >k : "a" >a : number >k : "b" @@ -8,11 +8,7 @@ type Options = { k: "a", a: number } | { k: "b", b: string }; declare function f(p: T["k"]): T; >f : (p: T["k"]) => T ->T : T ->Options : Options >p : T["k"] ->T : T ->T : T const x = f("a"); // expect it to be `{ k: "a", a: number }` >x : { k: "a"; a: number; } @@ -21,7 +17,7 @@ const x = f("a"); // expect it to be `{ k: "a", a: number }` >"a" : "a" type Options2 = { k: "a", a: number, c: {} } | { k: "b", b: string, c: {} }; ->Options2 : Options2 +>Options2 : { k: "a"; a: number; c: {}; } | { k: "b"; b: string; c: {}; } >k : "a" >a : number >c : {} @@ -31,13 +27,8 @@ type Options2 = { k: "a", a: number, c: {} } | { k: "b", b: string, c: {} }; declare function f2(p: T["k"], c: T["c"]): T; >f2 : (p: T["k"], c: T["c"]) => T ->T : T ->Options2 : Options2 >p : T["k"] ->T : T >c : T["c"] ->T : T ->T : T const x2 = f2("a", { x: 1, y: 2 }); // expect it to be `{ k: "a", a: number, c: {x: number, y: number} }` >x2 : { k: "a"; c: { x: number; y: number; }; a: number; } From e5d0ea890bf928e6b9a76fd8a18a6d85145f0936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 18 Apr 2023 00:43:11 +0200 Subject: [PATCH 09/29] use new `inference.indexes` in reverse mapped type inference --- src/compiler/checker.ts | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f0e1b78dd8969..68a437a300584 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24106,21 +24106,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function inferReverseMappedType(sourceType: Type, target: MappedType, constraint: IndexType): Type { const typeParameter = getIndexedAccessType(constraint.type, getTypeParameterFromMappedType(target)) as TypeParameter; const templateType = getTemplateTypeFromMappedType(target); - const inferences = [createInferenceInfo(typeParameter)]; - inferTypes(inferences, sourceType, templateType); - const wholeInferredType = getTypeFromInference(inferences[0]); - if (!wholeInferredType && inferences.length > 1) { - const members = createSymbolTable(); - for (let i = 1; i < inferences.length; i++) { - const indexType = (inferences[i].typeParameter as IndexedAccessType).indexType as StringLiteralType; - const name = escapeLeadingUnderscores(indexType.value); - const prop = createSymbol(SymbolFlags.Property, name); - prop.links.type = getTypeFromInference(inferences[i]) || unknownType; - members.set(name, prop); - } - return createAnonymousType(undefined, members, emptyArray, emptyArray, emptyArray); - } - return wholeInferredType || unknownType; + const inference = createInferenceInfo(typeParameter); + inferTypes([inference], sourceType, templateType); + return getTypeFromInference(inference) || (inference.indexes ? getIntersectionType(inference.indexes) : unknownType); } function* getUnmatchedProperties(source: Type, target: Type, requireOptionalProperties: boolean, matchDiscriminantProperties: boolean): IterableIterator { @@ -24438,15 +24426,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (isFromInferenceBlockedSource(source)) { return; } - let inference = getInferenceInfoForType(target); - if ( - !inference && (target.flags & TypeFlags.IndexedAccess) && - inferences[0].typeParameter.flags & TypeFlags.IndexedAccess && - (target as IndexedAccessType).indexType.flags & TypeFlags.StringLiteral && - ((target as IndexedAccessType).objectType.flags & TypeFlags.IndexedAccess) - ) { - inferences.push(inference = createInferenceInfo(target)); - } + const inference = getInferenceInfoForType(target); if (inference) { // If target is a type parameter, make an inference, unless the source type contains // a "non-inferrable" type. Types with this flag set are markers used to prevent inference. From b0b2fcb1ff2672ecae7afbf1d154663fdf51dadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 18 Apr 2023 09:16:12 +0200 Subject: [PATCH 10/29] update reverse mapped baseline --- ...rseMappedConcretePropertiesInference.types | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types index 1619fda245c67..31cb77a54c78c 100644 --- a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types @@ -24,8 +24,8 @@ declare function test>( }): T; const res = test({ ->res : { a: { foo: string; bar: number; }; b: { foo: boolean; bar: number[]; }; } ->test({ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },}) : { a: { foo: string; bar: number; }; b: { foo: boolean; bar: number[]; }; } +>res : { a: { foo: string; } & { bar: number; }; b: { foo: boolean; } & { bar: number[]; }; } +>test({ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },}) : { a: { foo: string; } & { bar: number; }; b: { foo: boolean; } & { bar: number[]; }; } >test : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T >{ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },} : { a: { foo: string; onFoo: (arg: string) => number; bar: number; onBar: (arg: number) => number; }; b: { foo: true; onFoo: (arg: boolean) => boolean; bar: number[]; onBar: (arg: number[]) => number[][]; }; } @@ -134,21 +134,21 @@ declare function useQueries>( ): T; const resQueries = useQueries([ ->resQueries : [{ key: "users"; fnData: { name: string; }[]; }, { key: "posts"; fnData: { title: string; }[]; }] ->useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : [{ key: "users"; fnData: { name: string; }[]; }, { key: "posts"; fnData: { title: string; }[]; }] +>resQueries : readonly QueryOptions[] +>useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : readonly QueryOptions[] >useQueries : (queries: [...UseQueriesOptions]) => T ->[ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }] : [{ queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; }, { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; }] +>[ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }] : ({ queryKey: string; queryFn: (key: QueryFunctionContext) => { name: string; }[]; } | { queryKey: string; queryFn: (key: QueryFunctionContext) => Promise<{ title: string; }[]>; })[] { ->{ queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], } : { queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; } +>{ queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], } : { queryKey: string; queryFn: (key: QueryFunctionContext) => { name: string; }[]; } queryKey: "users", ->queryKey : "users" +>queryKey : string >"users" : "users" queryFn: (key) => [{ name: "Andarist" }], ->queryFn : (key: QueryFunctionContext<"users">) => { name: string; }[] ->(key) => [{ name: "Andarist" }] : (key: QueryFunctionContext<"users">) => { name: string; }[] ->key : QueryFunctionContext<"users"> +>queryFn : (key: QueryFunctionContext) => { name: string; }[] +>(key) => [{ name: "Andarist" }] : (key: QueryFunctionContext) => { name: string; }[] +>key : QueryFunctionContext >[{ name: "Andarist" }] : { name: string; }[] >{ name: "Andarist" } : { name: string; } >name : string @@ -156,16 +156,16 @@ const resQueries = useQueries([ }, { ->{ queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), } : { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; } +>{ queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), } : { queryKey: string; queryFn: (key: QueryFunctionContext) => Promise<{ title: string; }[]>; } queryKey: "posts", ->queryKey : "posts" +>queryKey : string >"posts" : "posts" queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), ->queryFn : (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]> ->(key) => Promise.resolve([{ title: 'TS 5.1' }]) : (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]> ->key : QueryFunctionContext<"posts"> +>queryFn : (key: QueryFunctionContext) => Promise<{ title: string; }[]> +>(key) => Promise.resolve([{ title: 'TS 5.1' }]) : (key: QueryFunctionContext) => Promise<{ title: string; }[]> +>key : QueryFunctionContext >Promise.resolve([{ title: 'TS 5.1' }]) : Promise<{ title: string; }[]> >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } >Promise : PromiseConstructor From 7fe118a17a3bc61cb12af93b7e84cb8f7c05388c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 18 Apr 2023 10:46:51 +0200 Subject: [PATCH 11/29] Call `getActualTypeVariable` appropriately to fix inference for a tuple reverse mapped type --- src/compiler/checker.ts | 2 +- ...ppedConcretePropertiesInference.errors.txt | 72 +++++++++++++++++++ ...rseMappedConcretePropertiesInference.types | 26 +++---- 3 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 68a437a300584..9879c62f8eada 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24513,7 +24513,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } else if (target.flags & TypeFlags.IndexedAccess) { const targetConstraint = (target as IndexedAccessType).objectType; - const inference = getInferenceInfoForType(targetConstraint); + const inference = getInferenceInfoForType(getActualTypeVariable(targetConstraint)); if (inference) { if (!inference.isFixed) { // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt b/tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt new file mode 100644 index 0000000000000..513353a6e7e45 --- /dev/null +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt @@ -0,0 +1,72 @@ +tests/cases/compiler/reverseMappedConcretePropertiesInference.ts(54,5): error TS2322: Type '(key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>' is not assignable to type '(ctx: QueryFunctionContext<"posts">) => ({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. + Type 'Promise<{ title: string; }[]>' is not assignable to type '({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. + Type 'Promise<{ title: string; }[]>' is not assignable to type 'Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. + Type '{ title: string; }[]' is not assignable to type '{ title: string; }[] & Promise<{ title: string; }[]>'. + Type '{ title: string; }[]' is missing the following properties from type 'Promise<{ title: string; }[]>': then, catch, finally, [Symbol.toStringTag] + + +==== tests/cases/compiler/reverseMappedConcretePropertiesInference.ts (1 errors) ==== + declare function test>(a: { + [K in keyof T]: { + foo: T[K]["foo"]; + onFoo: (fooArg: T[K]["foo"]) => void; + bar: T[K]["bar"]; + onBar: (barArg: T[K]["bar"]) => void; + }; + }): T; + + const res = test({ + a: { + foo: 'answer', + onFoo: (arg) => arg.length, + bar: 42, + onBar: (arg) => arg + 10 + }, + b: { + foo: true, + onFoo: (arg) => !!arg, + bar: [1, 2, 3], + onBar: (arg) => [arg, arg] + }, + }) + + interface QueryFunctionContext { + queryKey: TQueryKey; + } + + type QueryOptions = { + key: string; + fnData?: unknown; + }; + + type UseQueriesOptions> = { + [K in keyof T]: { + queryKey: T[K]["key"]; + queryFn?: ( + ctx: QueryFunctionContext + ) => Promise | T[K]["fnData"]; + }; + }; + + declare function useQueries>( + queries: [...UseQueriesOptions] + ): T; + + const resQueries = useQueries([ + { + queryKey: "users", + queryFn: (key) => [{ name: "Andarist" }], + }, + { + queryKey: "posts", + queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), + ~~~~~~~ +!!! error TS2322: Type '(key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>' is not assignable to type '(ctx: QueryFunctionContext<"posts">) => ({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. +!!! error TS2322: Type 'Promise<{ title: string; }[]>' is not assignable to type '({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. +!!! error TS2322: Type 'Promise<{ title: string; }[]>' is not assignable to type 'Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. +!!! error TS2322: Type '{ title: string; }[]' is not assignable to type '{ title: string; }[] & Promise<{ title: string; }[]>'. +!!! error TS2322: Type '{ title: string; }[]' is missing the following properties from type 'Promise<{ title: string; }[]>': then, catch, finally, [Symbol.toStringTag] +!!! related TS6500 tests/cases/compiler/reverseMappedConcretePropertiesInference.ts:37:5: The expected type comes from property 'queryFn' which is declared here on type '{ queryKey: "posts"; queryFn?: ((ctx: QueryFunctionContext<"posts">) => ({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>) | undefined; }' + } + ]); + \ No newline at end of file diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types index 31cb77a54c78c..4e77f62651fd3 100644 --- a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types @@ -134,21 +134,21 @@ declare function useQueries>( ): T; const resQueries = useQueries([ ->resQueries : readonly QueryOptions[] ->useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : readonly QueryOptions[] +>resQueries : [{ key: "users"; }, { key: "posts"; }] +>useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : [{ key: "users"; }, { key: "posts"; }] >useQueries : (queries: [...UseQueriesOptions]) => T ->[ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }] : ({ queryKey: string; queryFn: (key: QueryFunctionContext) => { name: string; }[]; } | { queryKey: string; queryFn: (key: QueryFunctionContext) => Promise<{ title: string; }[]>; })[] +>[ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }] : [{ queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; }, { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; }] { ->{ queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], } : { queryKey: string; queryFn: (key: QueryFunctionContext) => { name: string; }[]; } +>{ queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], } : { queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; } queryKey: "users", ->queryKey : string +>queryKey : "users" >"users" : "users" queryFn: (key) => [{ name: "Andarist" }], ->queryFn : (key: QueryFunctionContext) => { name: string; }[] ->(key) => [{ name: "Andarist" }] : (key: QueryFunctionContext) => { name: string; }[] ->key : QueryFunctionContext +>queryFn : (key: QueryFunctionContext<"users">) => { name: string; }[] +>(key) => [{ name: "Andarist" }] : (key: QueryFunctionContext<"users">) => { name: string; }[] +>key : QueryFunctionContext<"users"> >[{ name: "Andarist" }] : { name: string; }[] >{ name: "Andarist" } : { name: string; } >name : string @@ -156,16 +156,16 @@ const resQueries = useQueries([ }, { ->{ queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), } : { queryKey: string; queryFn: (key: QueryFunctionContext) => Promise<{ title: string; }[]>; } +>{ queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), } : { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; } queryKey: "posts", ->queryKey : string +>queryKey : "posts" >"posts" : "posts" queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), ->queryFn : (key: QueryFunctionContext) => Promise<{ title: string; }[]> ->(key) => Promise.resolve([{ title: 'TS 5.1' }]) : (key: QueryFunctionContext) => Promise<{ title: string; }[]> ->key : QueryFunctionContext +>queryFn : (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]> +>(key) => Promise.resolve([{ title: 'TS 5.1' }]) : (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]> +>key : QueryFunctionContext<"posts"> >Promise.resolve([{ title: 'TS 5.1' }]) : Promise<{ title: string; }[]> >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } >Promise : PromiseConstructor From 50e6a0c84a542addf9ce1d26f5934e37ac9750c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 18 Apr 2023 13:33:43 +0200 Subject: [PATCH 12/29] Avoid inferring an index under `InferencePriority.NakedTypeVariable` --- src/compiler/checker.ts | 2 +- ...ppedConcretePropertiesInference.errors.txt | 72 ------------------- ...rseMappedConcretePropertiesInference.types | 4 +- 3 files changed, 3 insertions(+), 75 deletions(-) delete mode 100644 tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9879c62f8eada..f273f83ed4879 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24511,7 +24511,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { inferFromTypes((source as IndexedAccessType).objectType, (target as IndexedAccessType).objectType); inferFromTypes((source as IndexedAccessType).indexType, (target as IndexedAccessType).indexType); } - else if (target.flags & TypeFlags.IndexedAccess) { + else if (!(priority & InferencePriority.NakedTypeVariable) && target.flags & TypeFlags.IndexedAccess) { const targetConstraint = (target as IndexedAccessType).objectType; const inference = getInferenceInfoForType(getActualTypeVariable(targetConstraint)); if (inference) { diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt b/tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt deleted file mode 100644 index 513353a6e7e45..0000000000000 --- a/tests/baselines/reference/reverseMappedConcretePropertiesInference.errors.txt +++ /dev/null @@ -1,72 +0,0 @@ -tests/cases/compiler/reverseMappedConcretePropertiesInference.ts(54,5): error TS2322: Type '(key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>' is not assignable to type '(ctx: QueryFunctionContext<"posts">) => ({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. - Type 'Promise<{ title: string; }[]>' is not assignable to type '({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. - Type 'Promise<{ title: string; }[]>' is not assignable to type 'Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. - Type '{ title: string; }[]' is not assignable to type '{ title: string; }[] & Promise<{ title: string; }[]>'. - Type '{ title: string; }[]' is missing the following properties from type 'Promise<{ title: string; }[]>': then, catch, finally, [Symbol.toStringTag] - - -==== tests/cases/compiler/reverseMappedConcretePropertiesInference.ts (1 errors) ==== - declare function test>(a: { - [K in keyof T]: { - foo: T[K]["foo"]; - onFoo: (fooArg: T[K]["foo"]) => void; - bar: T[K]["bar"]; - onBar: (barArg: T[K]["bar"]) => void; - }; - }): T; - - const res = test({ - a: { - foo: 'answer', - onFoo: (arg) => arg.length, - bar: 42, - onBar: (arg) => arg + 10 - }, - b: { - foo: true, - onFoo: (arg) => !!arg, - bar: [1, 2, 3], - onBar: (arg) => [arg, arg] - }, - }) - - interface QueryFunctionContext { - queryKey: TQueryKey; - } - - type QueryOptions = { - key: string; - fnData?: unknown; - }; - - type UseQueriesOptions> = { - [K in keyof T]: { - queryKey: T[K]["key"]; - queryFn?: ( - ctx: QueryFunctionContext - ) => Promise | T[K]["fnData"]; - }; - }; - - declare function useQueries>( - queries: [...UseQueriesOptions] - ): T; - - const resQueries = useQueries([ - { - queryKey: "users", - queryFn: (key) => [{ name: "Andarist" }], - }, - { - queryKey: "posts", - queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), - ~~~~~~~ -!!! error TS2322: Type '(key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>' is not assignable to type '(ctx: QueryFunctionContext<"posts">) => ({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. -!!! error TS2322: Type 'Promise<{ title: string; }[]>' is not assignable to type '({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. -!!! error TS2322: Type 'Promise<{ title: string; }[]>' is not assignable to type 'Promise<{ title: string; }[] & Promise<{ title: string; }[]>>'. -!!! error TS2322: Type '{ title: string; }[]' is not assignable to type '{ title: string; }[] & Promise<{ title: string; }[]>'. -!!! error TS2322: Type '{ title: string; }[]' is missing the following properties from type 'Promise<{ title: string; }[]>': then, catch, finally, [Symbol.toStringTag] -!!! related TS6500 tests/cases/compiler/reverseMappedConcretePropertiesInference.ts:37:5: The expected type comes from property 'queryFn' which is declared here on type '{ queryKey: "posts"; queryFn?: ((ctx: QueryFunctionContext<"posts">) => ({ title: string; }[] & Promise<{ title: string; }[]>) | Promise<{ title: string; }[] & Promise<{ title: string; }[]>>) | undefined; }' - } - ]); - \ No newline at end of file diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types index 4e77f62651fd3..6c3c01a6e6e0a 100644 --- a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types @@ -134,8 +134,8 @@ declare function useQueries>( ): T; const resQueries = useQueries([ ->resQueries : [{ key: "users"; }, { key: "posts"; }] ->useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : [{ key: "users"; }, { key: "posts"; }] +>resQueries : [{ key: "users"; } & { fnData: { name: string; }[]; }, { key: "posts"; } & { fnData: { title: string; }[]; }] +>useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : [{ key: "users"; } & { fnData: { name: string; }[]; }, { key: "posts"; } & { fnData: { title: string; }[]; }] >useQueries : (queries: [...UseQueriesOptions]) => T >[ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }] : [{ queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; }, { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; }] { From 4febb9cab6b012f1d2681c23c5fa825ce7dad208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Wed, 19 Apr 2023 10:48:37 +0200 Subject: [PATCH 13/29] always discard aggregate inference that is not assignable to the constraint --- src/compiler/checker.ts | 10 +++-- ...omIndicesNotAssignableToConstraint.symbols | 44 +++++++++++++++++++ ...FromIndicesNotAssignableToConstraint.types | 32 ++++++++++++++ ...ateFromIndicesNotAssignableToConstraint.ts | 18 ++++++++ 4 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.symbols create mode 100644 tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.types create mode 100644 tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f273f83ed4879..7ea7540b0837e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -25164,9 +25164,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { // Build a candidate from all indexes let aggregateInference = getIntersectionType(inference.indexes); const constraint = getConstraintOfTypeParameter(signature.typeParameters![index]); - if (constraint) { - const instantiatedConstraint = instantiateType(constraint, context.nonFixingMapper); - if (instantiatedConstraint.flags & TypeFlags.Union && !context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { + const instantiatedConstraint = constraint && instantiateType(constraint, context.nonFixingMapper); + if (!instantiatedConstraint || context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { + if (instantiatedConstraint && instantiatedConstraint.flags & TypeFlags.Union) { const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); if (discriminantProps) { let match: Type | undefined; @@ -25190,8 +25190,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } } + else { + (inference.candidates || (inference.candidates = [])).push(aggregateInference); + } } - (inference.candidates || (inference.candidates = [])).push(aggregateInference); } const inferredCovariantType = inference.candidates ? getCovariantInference(inference, signature) : undefined; if (inference.contraCandidates) { diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.symbols b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.symbols new file mode 100644 index 0000000000000..68a3357363d20 --- /dev/null +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.symbols @@ -0,0 +1,44 @@ +=== tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts === +interface Expression extends Node { +>Expression : Symbol(Expression, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 0, 0)) +>Node : Symbol(Node, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 89)) + + _expressionBrand: any; +>_expressionBrand : Symbol(Expression._expressionBrand, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 0, 35)) +} + +declare function setParent(child: T, parent: T["parent"] | undefined): T; +>setParent : Symbol(setParent, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 2, 1)) +>T : Symbol(T, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 27)) +>Node : Symbol(Node, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 89)) +>child : Symbol(child, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 43)) +>T : Symbol(T, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 27)) +>parent : Symbol(parent, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 52)) +>T : Symbol(T, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 27)) +>T : Symbol(T, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 27)) + +interface Node { +>Node : Symbol(Node, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 89)) + + readonly kind: number; +>kind : Symbol(Node.kind, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 6, 16)) + + readonly parent: Node; +>parent : Symbol(Node.parent, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 7, 26)) +>Node : Symbol(Node, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 89)) +} + +declare const expr: Expression +>expr : Symbol(expr, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 11, 13)) +>Expression : Symbol(Expression, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 0, 0)) + +declare const node: Node +>node : Symbol(node, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 12, 13)) +>Node : Symbol(Node, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 4, 89)) + +const res = setParent(expr, node) // Expression +>res : Symbol(res, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 14, 5)) +>setParent : Symbol(setParent, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 2, 1)) +>expr : Symbol(expr, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 11, 13)) +>node : Symbol(node, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts, 12, 13)) + diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.types b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.types new file mode 100644 index 0000000000000..545c4e1b73cda --- /dev/null +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraint.types @@ -0,0 +1,32 @@ +=== tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts === +interface Expression extends Node { + _expressionBrand: any; +>_expressionBrand : any +} + +declare function setParent(child: T, parent: T["parent"] | undefined): T; +>setParent : (child: T, parent: T["parent"] | undefined) => T +>child : T +>parent : T["parent"] | undefined + +interface Node { + readonly kind: number; +>kind : number + + readonly parent: Node; +>parent : Node +} + +declare const expr: Expression +>expr : Expression + +declare const node: Node +>node : Node + +const res = setParent(expr, node) // Expression +>res : Expression +>setParent(expr, node) : Expression +>setParent : (child: T, parent: T["parent"] | undefined) => T +>expr : Expression +>node : Node + diff --git a/tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts b/tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts new file mode 100644 index 0000000000000..0b3a82685c793 --- /dev/null +++ b/tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraint.ts @@ -0,0 +1,18 @@ +// @strict: true +// @noEmit: true + +interface Expression extends Node { + _expressionBrand: any; +} + +declare function setParent(child: T, parent: T["parent"] | undefined): T; + +interface Node { + readonly kind: number; + readonly parent: Node; +} + +declare const expr: Expression +declare const node: Node + +const res = setParent(expr, node) // Expression \ No newline at end of file From c2d4b0f80be9fd03f0475d15fa9278739bfc0943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Wed, 19 Apr 2023 11:27:27 +0200 Subject: [PATCH 14/29] bring back the union discriminating logic --- src/compiler/checker.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7ea7540b0837e..dd93ad0b3ecce 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -25163,10 +25163,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (inference.indexes) { // Build a candidate from all indexes let aggregateInference = getIntersectionType(inference.indexes); - const constraint = getConstraintOfTypeParameter(signature.typeParameters![index]); - const instantiatedConstraint = constraint && instantiateType(constraint, context.nonFixingMapper); - if (!instantiatedConstraint || context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { - if (instantiatedConstraint && instantiatedConstraint.flags & TypeFlags.Union) { + const constraint = getConstraintOfTypeParameter(inference.typeParameter); + if (constraint) { + const instantiatedConstraint = instantiateType(constraint, context.nonFixingMapper); + const comparableToConstraint = context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference)); + if (instantiatedConstraint.flags & TypeFlags.Union && !comparableToConstraint) { + const originalAggregateInference = aggregateInference; const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); if (discriminantProps) { let match: Type | undefined; @@ -25189,11 +25191,17 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0, /*readonly*/ false); } } + if (originalAggregateInference !== aggregateInference) { + inference.candidates = append(inference.candidates, aggregateInference); + } } - else { - (inference.candidates || (inference.candidates = [])).push(aggregateInference); + else if (comparableToConstraint) { + inference.candidates = append(inference.candidates, aggregateInference); } } + else { + inference.candidates = append(inference.candidates, aggregateInference); + } } const inferredCovariantType = inference.candidates ? getCovariantInference(inference, signature) : undefined; if (inference.contraCandidates) { From 11b02d0b3e3d66944b40e9022afedf0216901bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Wed, 19 Apr 2023 11:42:10 +0200 Subject: [PATCH 15/29] fixed incorrect indexed access in tests --- .../indexAccessCombinedInference.errors.txt | 130 ------------------ .../reference/indexAccessCombinedInference.js | 4 +- .../indexAccessCombinedInference.symbols | 10 +- .../indexAccessCombinedInference.types | 18 +-- .../compiler/indexAccessCombinedInference.ts | 4 +- 5 files changed, 18 insertions(+), 148 deletions(-) delete mode 100644 tests/baselines/reference/indexAccessCombinedInference.errors.txt diff --git a/tests/baselines/reference/indexAccessCombinedInference.errors.txt b/tests/baselines/reference/indexAccessCombinedInference.errors.txt deleted file mode 100644 index 56bd3f9e28e35..0000000000000 --- a/tests/baselines/reference/indexAccessCombinedInference.errors.txt +++ /dev/null @@ -1,130 +0,0 @@ -tests/cases/compiler/indexAccessCombinedInference.ts(104,21): error TS2536: Type '"0"' cannot be used to index type 'this'. -tests/cases/compiler/indexAccessCombinedInference.ts(106,49): error TS2536: Type '"0"' cannot be used to index type 'T'. -tests/cases/compiler/indexAccessCombinedInference.ts(106,60): error TS2536: Type '"0"' cannot be used to index type 'T'. -tests/cases/compiler/indexAccessCombinedInference.ts(106,77): error TS2536: Type '"1"' cannot be used to index type 'T'. -tests/cases/compiler/indexAccessCombinedInference.ts(106,86): error TS2536: Type '"0"' cannot be used to index type 'T'. -tests/cases/compiler/indexAccessCombinedInference.ts(106,110): error TS2536: Type '"1"' cannot be used to index type 'T'. - - -==== tests/cases/compiler/indexAccessCombinedInference.ts (6 errors) ==== - // Simple case - interface Args { - TA: object, - TY: object - } - - declare function foo( - a: T["TA"], - b: T["TY"]): T["TA"] & T["TY"]; - - const x = foo({ - x: { - j: 12, - i: 11 - } - }, { y: 42 }); - - // Union result type - interface A { - foo: number; - } - interface B { - bar: string; - } - declare const something: A | B; - - const y = foo(something, { bat: 42 }); - - // Union key type - interface Args2 { - TA?: object, // Optional since only one of TA or TB needs to be infered in the below argument list - TB?: object, - TY: object - } - declare function foo2( - a: T["TA"] | T["TB"], - b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; - declare function foo3( // Morally equivalent to foo2 - a: T["TA" | "TB"], - b: T["TY"]): {a: T["TA"], b: T["TB"]} & T["TY"]; - let z = foo2({ - x: { - j: 12, - i: 11 - } - }, { y: 42 }); - let zz = foo3({ - x: { - j: 12, - i: 11 - } - }, { y: 42 }); - z = zz; - zz = z; - - // Higher-order - interface Args3 { - Key: "A" | "B", - A: object, - B: object, - Merge: object, - } - declare const either: "A" | "B"; - declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; - - const opt1 = pickOne("A", {x: 12}, {y: ""}, {z: /./}); - const opt2 = pickOne("B", {x: 12}, {y: ""}, {z: /./}); - const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); - - const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); - const opt4 = pickDelayed("A"); - const opt5 = pickDelayed("B"); - const opt6 = pickDelayed(either); - - // Reopenable - interface Args3 { - /** - * One must make patched parameters optional, otherwise signatures expecting the unpatched - * interface (ie, pickOne above) will not be able to produce a type satisfying the interface - * (as there are no inference sites for the new members) and will fall back to the constraints on each member - */ - Extra?: object, - } - declare function pickOne(key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & {into: T["Merge"], extra: T["Extra"]}; - const opt7 = pickOne("A", {x: 12}, {y: ""}, {z: /./}, {z: /./}); - const opt8 = pickOne("B", {x: 12}, {y: ""}, {z: /./}, {z: /./}); - const opt9 = pickOne(either, {x: 12}, {y: ""}, {z: /./}, {z: /./}); - - // Interactions with `this` types - interface TPicker { - Key: keyof this, - X: number, - Y: string - } - declare function chooseLiteral(choice: T["Key"], x: T["X"], y:T["Y"]): T[T["Key"]]; - const cx = chooseLiteral("X", 1, "no"); - const cy = chooseLiteral("Y", 0, "yes"); - const ceither = chooseLiteral("X" as "X" | "Y", 1, "yes"); - const cneither = chooseLiteral("Key", 0, "no"); - - // Multiple inference sites - interface Args4 { - 0: object, - 1: Record, - ~~~~~~~~~ -!!! error TS2536: Type '"0"' cannot be used to index type 'this'. - } - declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; - ~~~~~~ -!!! error TS2536: Type '"0"' cannot be used to index type 'T'. - ~~~~~~ -!!! error TS2536: Type '"0"' cannot be used to index type 'T'. - ~~~~~~ -!!! error TS2536: Type '"1"' cannot be used to index type 'T'. - ~~~~~~ -!!! error TS2536: Type '"0"' cannot be used to index type 'T'. - ~~~~~~ -!!! error TS2536: Type '"1"' cannot be used to index type 'T'. - - const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); - \ No newline at end of file diff --git a/tests/baselines/reference/indexAccessCombinedInference.js b/tests/baselines/reference/indexAccessCombinedInference.js index b31a76ef75725..12232d7a312a8 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.js +++ b/tests/baselines/reference/indexAccessCombinedInference.js @@ -102,9 +102,9 @@ const cneither = chooseLiteral("Key", 0, "no"); // Multiple inference sites interface Args4 { 0: object, - 1: Record, + 1: Record, } -declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; +declare function dualInputs(x: T[0], y: T[0], toDelay: T[1]): T[0] & {transformers: T[1]}; const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); diff --git a/tests/baselines/reference/indexAccessCombinedInference.symbols b/tests/baselines/reference/indexAccessCombinedInference.symbols index 599b8f74394da..e0e823bd60977 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.symbols +++ b/tests/baselines/reference/indexAccessCombinedInference.symbols @@ -347,23 +347,23 @@ interface Args4 { 0: object, >0 : Symbol(Args4[0], Decl(indexAccessCombinedInference.ts, 101, 17)) - 1: Record, + 1: Record, >1 : Symbol(Args4[1], Decl(indexAccessCombinedInference.ts, 102, 14)) >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) >Function : Symbol(Function, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) } -declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; +declare function dualInputs(x: T[0], y: T[0], toDelay: T[1]): T[0] & {transformers: T[1]}; >dualInputs : Symbol(dualInputs, Decl(indexAccessCombinedInference.ts, 104, 1)) >T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) >Args4 : Symbol(Args4, Decl(indexAccessCombinedInference.ts, 98, 47)) >x : Symbol(x, Decl(indexAccessCombinedInference.ts, 105, 45)) >T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) ->y : Symbol(y, Decl(indexAccessCombinedInference.ts, 105, 55)) +>y : Symbol(y, Decl(indexAccessCombinedInference.ts, 105, 53)) >T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) ->toDelay : Symbol(toDelay, Decl(indexAccessCombinedInference.ts, 105, 66)) +>toDelay : Symbol(toDelay, Decl(indexAccessCombinedInference.ts, 105, 62)) >T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) >T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) ->transformers : Symbol(transformers, Decl(indexAccessCombinedInference.ts, 105, 95)) +>transformers : Symbol(transformers, Decl(indexAccessCombinedInference.ts, 105, 87)) >T : Symbol(T, Decl(indexAccessCombinedInference.ts, 105, 28)) const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); diff --git a/tests/baselines/reference/indexAccessCombinedInference.types b/tests/baselines/reference/indexAccessCombinedInference.types index 523749d82c9ac..491bf3844d93d 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.types +++ b/tests/baselines/reference/indexAccessCombinedInference.types @@ -383,20 +383,20 @@ interface Args4 { 0: object, >0 : object - 1: Record, ->1 : Record + 1: Record, +>1 : Record } -declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; ->dualInputs : (x: T["0"], y: T["0"], toDelay: T["1"]) => T["0"] & { transformers: T["1"];} ->x : T["0"] ->y : T["0"] ->toDelay : T["1"] ->transformers : T["1"] +declare function dualInputs(x: T[0], y: T[0], toDelay: T[1]): T[0] & {transformers: T[1]}; +>dualInputs : (x: T[0], y: T[0], toDelay: T[1]) => T[0] & { transformers: T[1];} +>x : T[0] +>y : T[0] +>toDelay : T[1] +>transformers : T[1] const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); >result : { x: number; } & { x: number; } & { transformers: { x: () => ""; }; } >dualInputs({x: 0}, {x: 1}, {x: () => ""}) : { x: number; } & { x: number; } & { transformers: { x: () => ""; }; } ->dualInputs : (x: T["0"], y: T["0"], toDelay: T["1"]) => T["0"] & { transformers: T["1"]; } +>dualInputs : (x: T[0], y: T[0], toDelay: T[1]) => T[0] & { transformers: T[1]; } >{x: 0} : { x: number; } >x : number >0 : 0 diff --git a/tests/cases/compiler/indexAccessCombinedInference.ts b/tests/cases/compiler/indexAccessCombinedInference.ts index 59af2dd60fa1f..e72131d320f04 100644 --- a/tests/cases/compiler/indexAccessCombinedInference.ts +++ b/tests/cases/compiler/indexAccessCombinedInference.ts @@ -101,8 +101,8 @@ const cneither = chooseLiteral("Key", 0, "no"); // Multiple inference sites interface Args4 { 0: object, - 1: Record, + 1: Record, } -declare function dualInputs(x: T["0"], y: T["0"], toDelay: T["1"]): T["0"] & {transformers: T["1"]}; +declare function dualInputs(x: T[0], y: T[0], toDelay: T[1]): T[0] & {transformers: T[1]}; const result = dualInputs({x: 0}, {x: 1}, {x: () => ""}); From 97adac5dd85cefbe817860fb2763244f774f1198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Wed, 19 Apr 2023 13:45:37 +0200 Subject: [PATCH 16/29] only use the aggregate inference when there are no other candidates --- src/compiler/checker.ts | 49 ++-- .../reference/keyofAndIndexedAccess.types | 6 +- ...actDefaultPropsInferenceSuccess.errors.txt | 51 +++- .../thisTypeInObjectLiterals2.errors.txt | 260 ------------------ .../reference/thisTypeInObjectLiterals2.js | 10 +- .../thisTypeInObjectLiterals2.symbols | 132 +++++---- .../reference/thisTypeInObjectLiterals2.types | 36 ++- .../thisType/thisTypeInObjectLiterals2.ts | 2 - 8 files changed, 158 insertions(+), 388 deletions(-) delete mode 100644 tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index dd93ad0b3ecce..c5d84fbfcd2cd 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24522,7 +24522,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const inferenceType = inferenceTypeSymbol && getDeclaredTypeOfSymbol(inferenceTypeSymbol); if (inferenceType && inferenceType !== unknownType) { const mapper = createTypeMapper(getSymbolLinks(inferenceTypeSymbol).typeParameters!, [source, (target as IndexedAccessType).indexType]); - (inference.indexes || (inference.indexes = [])).push(instantiateType(inferenceType, mapper)); + inference.indexes = append(inference.indexes, instantiateType(inferenceType, mapper)); } } return; @@ -25160,15 +25160,27 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { let inferredType: Type | undefined; const signature = context.signature; if (signature) { - if (inference.indexes) { - // Build a candidate from all indexes + const inferredCovariantType = inference.candidates ? getCovariantInference(inference, signature) : undefined; + if (inference.contraCandidates) { + // If we have both co- and contra-variant inferences, we use the co-variant inference if it is not 'never', + // it is a subtype of some contra-variant inference, and no other type parameter is constrained to this type + // parameter and has inferences that would conflict. Otherwise, we use the contra-variant inference. + const useCovariantType = inferredCovariantType && !(inferredCovariantType.flags & TypeFlags.Never) && + some(inference.contraCandidates, t => isTypeSubtypeOf(inferredCovariantType, t)) && + every(context.inferences, other => + other !== inference && getConstraintOfTypeParameter(other.typeParameter) !== inference.typeParameter || + every(other.candidates, t => isTypeSubtypeOf(t, inferredCovariantType))); + inferredType = useCovariantType ? inferredCovariantType : getContravariantInference(inference); + } + else if (inferredCovariantType) { + inferredType = inferredCovariantType; + } + else if (inference.indexes) { let aggregateInference = getIntersectionType(inference.indexes); const constraint = getConstraintOfTypeParameter(inference.typeParameter); if (constraint) { const instantiatedConstraint = instantiateType(constraint, context.nonFixingMapper); - const comparableToConstraint = context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference)); - if (instantiatedConstraint.flags & TypeFlags.Union && !comparableToConstraint) { - const originalAggregateInference = aggregateInference; + if (instantiatedConstraint.flags & TypeFlags.Union && !context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); if (discriminantProps) { let match: Type | undefined; @@ -25191,32 +25203,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0, /*readonly*/ false); } } - if (originalAggregateInference !== aggregateInference) { - inference.candidates = append(inference.candidates, aggregateInference); - } - } - else if (comparableToConstraint) { - inference.candidates = append(inference.candidates, aggregateInference); } } - else { - inference.candidates = append(inference.candidates, aggregateInference); - } - } - const inferredCovariantType = inference.candidates ? getCovariantInference(inference, signature) : undefined; - if (inference.contraCandidates) { - // If we have both co- and contra-variant inferences, we use the co-variant inference if it is not 'never', - // it is a subtype of some contra-variant inference, and no other type parameter is constrained to this type - // parameter and has inferences that would conflict. Otherwise, we use the contra-variant inference. - const useCovariantType = inferredCovariantType && !(inferredCovariantType.flags & TypeFlags.Never) && - some(inference.contraCandidates, t => isTypeSubtypeOf(inferredCovariantType, t)) && - every(context.inferences, other => - other !== inference && getConstraintOfTypeParameter(other.typeParameter) !== inference.typeParameter || - every(other.candidates, t => isTypeSubtypeOf(t, inferredCovariantType))); - inferredType = useCovariantType ? inferredCovariantType : getContravariantInference(inference); - } - else if (inferredCovariantType) { - inferredType = inferredCovariantType; + inferredType = aggregateInference; } else if (context.flags & InferenceFlags.NoDefault) { // We use silentNeverType as the wildcard that signals no inferences. diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index 5a6e943ed2d2a..e8d59f2fa7978 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -58,10 +58,10 @@ type K00 = keyof any; // string >K00 : string | number | symbol type K01 = keyof string; // "toString" | "charAt" | ... ->K01 : number | "charAt" | "charCodeAt" | "concat" | "indexOf" | "lastIndexOf" | "localeCompare" | "match" | "replace" | "search" | "slice" | "split" | "substring" | "toLowerCase" | "toLocaleLowerCase" | "toUpperCase" | "toLocaleUpperCase" | "trim" | "length" | "substr" | "toString" | "valueOf" +>K01 : number | "length" | "toString" | "concat" | "slice" | "indexOf" | "lastIndexOf" | "charAt" | "charCodeAt" | "localeCompare" | "match" | "replace" | "search" | "split" | "substring" | "toLowerCase" | "toLocaleLowerCase" | "toUpperCase" | "toLocaleUpperCase" | "trim" | "substr" | "valueOf" type K02 = keyof number; // "toString" | "toFixed" | "toExponential" | ... ->K02 : "toFixed" | "toExponential" | "toPrecision" | "toString" | "toLocaleString" | "valueOf" +>K02 : "toString" | "toLocaleString" | "toFixed" | "toExponential" | "toPrecision" | "valueOf" type K03 = keyof boolean; // "valueOf" >K03 : "valueOf" @@ -97,7 +97,7 @@ type K14 = keyof Object; // "constructor" | "toString" | ... >K14 : keyof Object type K15 = keyof E; // "toString" | "toFixed" | "toExponential" | ... ->K15 : "toFixed" | "toExponential" | "toPrecision" | "toString" | "toLocaleString" | "valueOf" +>K15 : "toString" | "toLocaleString" | "toFixed" | "toExponential" | "toPrecision" | "valueOf" type K16 = keyof [string, number]; // "0" | "1" | "length" | "toString" | ... >K16 : keyof [string, number] diff --git a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt index 3c3962fa6ae8d..26bf596fa531b 100644 --- a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt +++ b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt @@ -1,10 +1,30 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(24,42): error TS7006: Parameter 'value' implicitly has an 'any' type. +tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(27,36): error TS2769: No overload matches this call. + Overload 1 of 2, '(props: Readonly): FieldFeedback', gave the following error. + Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. + Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. + Type 'void' is not assignable to type 'boolean'. + Overload 2 of 2, '(props: Props, context?: any): FieldFeedback', gave the following error. + Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(27,42): error TS7006: Parameter 'value' implicitly has an 'any' type. +tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(43,41): error TS2769: No overload matches this call. + Overload 1 of 2, '(props: Readonly): FieldFeedbackBeta', gave the following error. + Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. + Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. + Type 'void' is not assignable to type 'boolean'. + Overload 2 of 2, '(props: Props, context?: any): FieldFeedbackBeta', gave the following error. + Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(61,43): error TS7006: Parameter 'value' implicitly has an 'any' type. +tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,37): error TS2769: No overload matches this call. + Overload 1 of 2, '(props: Readonly): FieldFeedback2', gave the following error. + Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. + Type 'void' is not assignable to type 'boolean'. + Overload 2 of 2, '(props: MyPropsProps, context?: any): FieldFeedback2', gave the following error. + Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: Parameter 'value' implicitly has an 'any' type. -==== tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx (4 errors) ==== +==== tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx (7 errors) ==== /// import React from 'react'; @@ -34,6 +54,16 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: // Error: Void not assignable to boolean const Test2 = () => console.log(value)} />; + ~~~~ +!!! error TS2769: No overload matches this call. +!!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedback', gave the following error. +!!! error TS2769: Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. +!!! error TS2769: Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. +!!! error TS2769: Type 'void' is not assignable to type 'boolean'. +!!! error TS2769: Overload 2 of 2, '(props: Props, context?: any): FieldFeedback', gave the following error. +!!! error TS2769: Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. +!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' +!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' ~~~~~ !!! error TS7006: Parameter 'value' implicitly has an 'any' type. @@ -52,6 +82,16 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: // Error: Void not assignable to boolean const Test2a = () => console.log(value)} error>Hah; + ~~~~ +!!! error TS2769: No overload matches this call. +!!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedbackBeta', gave the following error. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. +!!! error TS2769: Type 'void' is not assignable to type 'boolean'. +!!! error TS2769: Overload 2 of 2, '(props: Props, context?: any): FieldFeedbackBeta', gave the following error. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. +!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children"> & Partial & Readonly, keyof Props>> & Partial>' +!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children"> & Partial & Readonly, keyof Props>> & Partial>' interface MyPropsProps extends Props { when: (value: string) => boolean; @@ -75,6 +115,15 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: // Error: Void not assignable to boolean const Test4 = () => console.log(value)} />; + ~~~~ +!!! error TS2769: No overload matches this call. +!!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedback2', gave the following error. +!!! error TS2769: Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. +!!! error TS2769: Type 'void' is not assignable to type 'boolean'. +!!! error TS2769: Overload 2 of 2, '(props: MyPropsProps, context?: any): FieldFeedback2', gave the following error. +!!! error TS2769: Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. +!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:46:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' +!!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:46:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' ~~~~~ !!! error TS7006: Parameter 'value' implicitly has an 'any' type. diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt b/tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt deleted file mode 100644 index b00cc7e423fb5..0000000000000 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.errors.txt +++ /dev/null @@ -1,260 +0,0 @@ -tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(224,9): error TS2322: Type '{ test(): number; hello: { get(): string; set(value: string): void; }; }' is not assignable to type 'Accessors<{ hello: string; }>'. - Object literal may only specify known properties, and 'test' does not exist in type 'Accessors<{ hello: string; }>'. -tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(239,5): error TS2339: Property 'f' does not exist on type '{ x: number; y: number; }'. -tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(240,5): error TS2339: Property 'test' does not exist on type '{ x: number; y: number; }'. -tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts(241,5): error TS2339: Property 'hello' does not exist on type '{ x: number; y: number; }'. - - -==== tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts (4 errors) ==== - // In methods of an object literal with no contextual type, 'this' has the type - // of the object literal. - - let obj1 = { - a: 1, - f() { - return this.a; - }, - b: "hello", - c: { - g() { - this.g(); - } - }, - get d() { - return this.a; - }, - get e() { - return this.b; - }, - set e(value) { - this.b = value; - } - }; - - // In methods of an object literal with a contextual type, 'this' has the - // contextual type. - - type Point = { - x: number; - y: number; - z?: number; - moveBy(dx: number, dy: number, dz?: number): void; - } - - let p1: Point = { - x: 10, - y: 20, - moveBy(dx, dy, dz) { - this.x += dx; - this.y += dy; - if (this.z && dz) { - this.z += dz; - } - } - }; - - let p2: Point | null = { - x: 10, - y: 20, - moveBy(dx, dy, dz) { - this.x += dx; - this.y += dy; - if (this.z && dz) { - this.z += dz; - } - } - }; - - let p3: Point | undefined = { - x: 10, - y: 20, - moveBy(dx, dy, dz) { - this.x += dx; - this.y += dy; - if (this.z && dz) { - this.z += dz; - } - } - }; - - let p4: Point | null | undefined = { - x: 10, - y: 20, - moveBy(dx, dy, dz) { - this.x += dx; - this.y += dy; - if (this.z && dz) { - this.z += dz; - } - } - }; - - declare function f1(p: Point): void; - - f1({ - x: 10, - y: 20, - moveBy(dx, dy, dz) { - this.x += dx; - this.y += dy; - if (this.z && dz) { - this.z += dz; - } - } - }); - - declare function f2(p: Point | null | undefined): void; - - f2({ - x: 10, - y: 20, - moveBy(dx, dy, dz) { - this.x += dx; - this.y += dy; - if (this.z && dz) { - this.z += dz; - } - } - }); - - // In methods of an object literal with a contextual type that includes some - // ThisType, 'this' is of type T. - - type ObjectDescriptor = { - data?: D; - methods?: M & ThisType; // Type of 'this' in methods is D & M - } - - declare function makeObject(desc: ObjectDescriptor): D & M; - - let x1 = makeObject({ - data: { x: 0, y: 0 }, - methods: { - moveBy(dx: number, dy: number) { - this.x += dx; // Strongly typed this - this.y += dy; // Strongly typed this - } - } - }); - - // In methods contained in an object literal with a contextual type that includes - // some ThisType, 'this' is of type T. - - type ObjectDescriptor2 = ThisType & { - data?: D; - methods?: M; - } - - declare function makeObject2(desc: ObjectDescriptor): D & M; - - let x2 = makeObject2({ - data: { x: 0, y: 0 }, - methods: { - moveBy(dx: number, dy: number) { - this.x += dx; // Strongly typed this - this.y += dy; // Strongly typed this - } - } - }); - - // Check pattern similar to Object.defineProperty and Object.defineProperties - - type PropDesc = { - value?: T; - get?(): T; - set?(value: T): void; - } - - type PropDescMap = { - [K in keyof T]: PropDesc; - } - - declare function defineProp(obj: T, name: K, desc: PropDesc & ThisType): T & Record; - - declare function defineProps(obj: T, descs: PropDescMap & ThisType): T & U; - - let p10 = defineProp(p1, "foo", { value: 42 }); - p10.foo = p10.foo + 1; - - let p11 = defineProp(p1, "bar", { - get() { - return this.x; - }, - set(value: number) { - this.x = value; - } - }); - p11.bar = p11.bar + 1; - - let p12 = defineProps(p1, { - foo: { - value: 42 - }, - bar: { - get(): number { - return this.x; - }, - set(value: number) { - this.x = value; - } - } - }); - p12.foo = p12.foo + 1; - p12.bar = p12.bar + 1; - - // Proof of concept for typing of Vue.js - - type Accessors = { [K in keyof T]: (() => T[K]) | Computed }; - - type Dictionary = { [x: string]: T } - - type Computed = { - get?(): T; - set?(value: T): void; - } - - type VueOptions = ThisType & { - data?: D | (() => D); - methods?: M; - computed?: Accessors

; - } - - declare const Vue: new (options: VueOptions) => D & M & P; - - let vue = new Vue({ - data: () => ({ x: 1, y: 2 }), - methods: { - f(x: string) { - return this.x; - } - }, - computed: { - test(): number { - ~~~~ -!!! error TS2322: Type '{ test(): number; hello: { get(): string; set(value: string): void; }; }' is not assignable to type 'Accessors<{ hello: string; }>'. -!!! error TS2322: Object literal may only specify known properties, and 'test' does not exist in type 'Accessors<{ hello: string; }>'. -!!! related TS6500 tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts:211:5: The expected type comes from property 'computed' which is declared here on type 'VueOptions<{ x: number; y: number; }, { f(x: string): number; }, { hello: string; }>' - return this.x; - }, - hello: { - get() { - return "hi"; - }, - set(value: string) { - } - } - } - }); - - vue; - vue.x; - vue.f("abc"); - ~ -!!! error TS2339: Property 'f' does not exist on type '{ x: number; y: number; }'. - vue.test; - ~~~~ -!!! error TS2339: Property 'test' does not exist on type '{ x: number; y: number; }'. - vue.hello; - ~~~~~ -!!! error TS2339: Property 'hello' does not exist on type '{ x: number; y: number; }'. - \ No newline at end of file diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.js b/tests/baselines/reference/thisTypeInObjectLiterals2.js index 1114422c9c0ee..10699916b9d54 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.js +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.js @@ -199,8 +199,6 @@ p12.bar = p12.bar + 1; type Accessors = { [K in keyof T]: (() => T[K]) | Computed }; -type Dictionary = { [x: string]: T } - type Computed = { get?(): T; set?(value: T): void; @@ -468,9 +466,6 @@ declare let p12: Point & { type Accessors = { [K in keyof T]: (() => T[K]) | Computed; }; -type Dictionary = { - [x: string]: T; -}; type Computed = { get?(): T; set?(value: T): void; @@ -484,4 +479,9 @@ declare const Vue: new (options: VueOptions) => D & M & P; declare let vue: { x: number; y: number; +} & { + f(x: string): number; +} & { + test: number; + hello: string; }; diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.symbols b/tests/baselines/reference/thisTypeInObjectLiterals2.symbols index 313a9a619fa30..02e15ad8ba1ec 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.symbols +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.symbols @@ -645,133 +645,131 @@ type Accessors = { [K in keyof T]: (() => T[K]) | Computed }; >T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 198, 15)) >T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 198, 15)) >K : Symbol(K, Decl(thisTypeInObjectLiterals2.ts, 198, 23)) ->Computed : Symbol(Computed, Decl(thisTypeInObjectLiterals2.ts, 200, 39)) +>Computed : Symbol(Computed, Decl(thisTypeInObjectLiterals2.ts, 198, 70)) >T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 198, 15)) >K : Symbol(K, Decl(thisTypeInObjectLiterals2.ts, 198, 23)) -type Dictionary = { [x: string]: T } ->Dictionary : Symbol(Dictionary, Decl(thisTypeInObjectLiterals2.ts, 198, 70)) ->T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 200, 16)) ->x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 200, 24)) ->T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 200, 16)) - type Computed = { ->Computed : Symbol(Computed, Decl(thisTypeInObjectLiterals2.ts, 200, 39)) ->T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 202, 14)) +>Computed : Symbol(Computed, Decl(thisTypeInObjectLiterals2.ts, 198, 70)) +>T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 200, 14)) get?(): T; ->get : Symbol(get, Decl(thisTypeInObjectLiterals2.ts, 202, 20)) ->T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 202, 14)) +>get : Symbol(get, Decl(thisTypeInObjectLiterals2.ts, 200, 20)) +>T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 200, 14)) set?(value: T): void; ->set : Symbol(set, Decl(thisTypeInObjectLiterals2.ts, 203, 14)) ->value : Symbol(value, Decl(thisTypeInObjectLiterals2.ts, 204, 9)) ->T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 202, 14)) +>set : Symbol(set, Decl(thisTypeInObjectLiterals2.ts, 201, 14)) +>value : Symbol(value, Decl(thisTypeInObjectLiterals2.ts, 202, 9)) +>T : Symbol(T, Decl(thisTypeInObjectLiterals2.ts, 200, 14)) } type VueOptions = ThisType & { ->VueOptions : Symbol(VueOptions, Decl(thisTypeInObjectLiterals2.ts, 205, 1)) ->D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 207, 16)) ->M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 207, 18)) ->P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 207, 21)) +>VueOptions : Symbol(VueOptions, Decl(thisTypeInObjectLiterals2.ts, 203, 1)) +>D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 205, 16)) +>M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 205, 18)) +>P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 205, 21)) >ThisType : Symbol(ThisType, Decl(lib.es5.d.ts, --, --)) ->D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 207, 16)) ->M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 207, 18)) ->P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 207, 21)) +>D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 205, 16)) +>M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 205, 18)) +>P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 205, 21)) data?: D | (() => D); ->data : Symbol(data, Decl(thisTypeInObjectLiterals2.ts, 207, 50)) ->D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 207, 16)) ->D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 207, 16)) +>data : Symbol(data, Decl(thisTypeInObjectLiterals2.ts, 205, 50)) +>D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 205, 16)) +>D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 205, 16)) methods?: M; ->methods : Symbol(methods, Decl(thisTypeInObjectLiterals2.ts, 208, 25)) ->M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 207, 18)) +>methods : Symbol(methods, Decl(thisTypeInObjectLiterals2.ts, 206, 25)) +>M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 205, 18)) computed?: Accessors

; ->computed : Symbol(computed, Decl(thisTypeInObjectLiterals2.ts, 209, 16)) +>computed : Symbol(computed, Decl(thisTypeInObjectLiterals2.ts, 207, 16)) >Accessors : Symbol(Accessors, Decl(thisTypeInObjectLiterals2.ts, 194, 22)) ->P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 207, 21)) +>P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 205, 21)) } declare const Vue: new (options: VueOptions) => D & M & P; ->Vue : Symbol(Vue, Decl(thisTypeInObjectLiterals2.ts, 213, 13)) ->D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 213, 24)) ->M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 213, 26)) ->P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 213, 29)) ->options : Symbol(options, Decl(thisTypeInObjectLiterals2.ts, 213, 33)) ->VueOptions : Symbol(VueOptions, Decl(thisTypeInObjectLiterals2.ts, 205, 1)) ->D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 213, 24)) ->M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 213, 26)) ->P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 213, 29)) ->D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 213, 24)) ->M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 213, 26)) ->P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 213, 29)) +>Vue : Symbol(Vue, Decl(thisTypeInObjectLiterals2.ts, 211, 13)) +>D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 211, 24)) +>M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 211, 26)) +>P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 211, 29)) +>options : Symbol(options, Decl(thisTypeInObjectLiterals2.ts, 211, 33)) +>VueOptions : Symbol(VueOptions, Decl(thisTypeInObjectLiterals2.ts, 203, 1)) +>D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 211, 24)) +>M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 211, 26)) +>P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 211, 29)) +>D : Symbol(D, Decl(thisTypeInObjectLiterals2.ts, 211, 24)) +>M : Symbol(M, Decl(thisTypeInObjectLiterals2.ts, 211, 26)) +>P : Symbol(P, Decl(thisTypeInObjectLiterals2.ts, 211, 29)) let vue = new Vue({ ->vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) ->Vue : Symbol(Vue, Decl(thisTypeInObjectLiterals2.ts, 213, 13)) +>vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 213, 3)) +>Vue : Symbol(Vue, Decl(thisTypeInObjectLiterals2.ts, 211, 13)) data: () => ({ x: 1, y: 2 }), ->data : Symbol(data, Decl(thisTypeInObjectLiterals2.ts, 215, 19)) ->x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) ->y : Symbol(y, Decl(thisTypeInObjectLiterals2.ts, 216, 24)) +>data : Symbol(data, Decl(thisTypeInObjectLiterals2.ts, 213, 19)) +>x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 214, 18)) +>y : Symbol(y, Decl(thisTypeInObjectLiterals2.ts, 214, 24)) methods: { ->methods : Symbol(methods, Decl(thisTypeInObjectLiterals2.ts, 216, 33)) +>methods : Symbol(methods, Decl(thisTypeInObjectLiterals2.ts, 214, 33)) f(x: string) { ->f : Symbol(f, Decl(thisTypeInObjectLiterals2.ts, 217, 14)) ->x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 218, 10)) +>f : Symbol(f, Decl(thisTypeInObjectLiterals2.ts, 215, 14)) +>x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 10)) return this.x; ->this.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) ->this : Symbol(__object, Decl(thisTypeInObjectLiterals2.ts, 216, 17)) ->x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) +>this.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 214, 18)) +>x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 214, 18)) } }, computed: { ->computed : Symbol(computed, Decl(thisTypeInObjectLiterals2.ts, 221, 6)) +>computed : Symbol(computed, Decl(thisTypeInObjectLiterals2.ts, 219, 6)) test(): number { ->test : Symbol(test, Decl(thisTypeInObjectLiterals2.ts, 222, 15)) +>test : Symbol(test, Decl(thisTypeInObjectLiterals2.ts, 220, 15)) return this.x; ->this.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) ->this : Symbol(__object, Decl(thisTypeInObjectLiterals2.ts, 216, 17)) ->x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) +>this.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 214, 18)) +>x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 214, 18)) }, hello: { ->hello : Symbol(hello, Decl(thisTypeInObjectLiterals2.ts, 225, 10)) +>hello : Symbol(hello, Decl(thisTypeInObjectLiterals2.ts, 223, 10)) get() { ->get : Symbol(get, Decl(thisTypeInObjectLiterals2.ts, 226, 16)) +>get : Symbol(get, Decl(thisTypeInObjectLiterals2.ts, 224, 16)) return "hi"; }, set(value: string) { ->set : Symbol(set, Decl(thisTypeInObjectLiterals2.ts, 229, 14)) ->value : Symbol(value, Decl(thisTypeInObjectLiterals2.ts, 230, 16)) +>set : Symbol(set, Decl(thisTypeInObjectLiterals2.ts, 227, 14)) +>value : Symbol(value, Decl(thisTypeInObjectLiterals2.ts, 228, 16)) } } } }); vue; ->vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) +>vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 213, 3)) vue.x; ->vue.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) ->vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) ->x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 216, 18)) +>vue.x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 214, 18)) +>vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 213, 3)) +>x : Symbol(x, Decl(thisTypeInObjectLiterals2.ts, 214, 18)) vue.f("abc"); ->vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) +>vue.f : Symbol(f, Decl(thisTypeInObjectLiterals2.ts, 215, 14)) +>vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 213, 3)) +>f : Symbol(f, Decl(thisTypeInObjectLiterals2.ts, 215, 14)) vue.test; ->vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) +>vue.test : Symbol(test, Decl(thisTypeInObjectLiterals2.ts, 220, 15)) +>vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 213, 3)) +>test : Symbol(test, Decl(thisTypeInObjectLiterals2.ts, 220, 15)) vue.hello; ->vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 215, 3)) +>vue.hello : Symbol(hello, Decl(thisTypeInObjectLiterals2.ts, 223, 10)) +>vue : Symbol(vue, Decl(thisTypeInObjectLiterals2.ts, 213, 3)) +>hello : Symbol(hello, Decl(thisTypeInObjectLiterals2.ts, 223, 10)) diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.types b/tests/baselines/reference/thisTypeInObjectLiterals2.types index 1d00535f1fc89..cc13ce2cb6e2a 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.types +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.types @@ -671,10 +671,6 @@ p12.bar = p12.bar + 1; type Accessors = { [K in keyof T]: (() => T[K]) | Computed }; >Accessors : Accessors -type Dictionary = { [x: string]: T } ->Dictionary : Dictionary ->x : string - type Computed = { >Computed : Computed @@ -704,8 +700,8 @@ declare const Vue: new (options: VueOptions) => D & M & P; >options : VueOptions let vue = new Vue({ ->vue : { x: number; y: number; } ->new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } >Vue : new (options: VueOptions) => D & M & P >{ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }} : { data: () => { x: number; y: number; }; methods: { f(x: string): number; }; computed: { test(): number; hello: { get(): string; set(value: string): void; }; }; } @@ -729,7 +725,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } >x : number } }, @@ -742,7 +738,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } >x : number }, @@ -766,27 +762,27 @@ let vue = new Vue({ }); vue; ->vue : { x: number; y: number; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } vue.x; >vue.x : number ->vue : { x: number; y: number; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } >x : number vue.f("abc"); ->vue.f("abc") : any ->vue.f : any ->vue : { x: number; y: number; } ->f : any +>vue.f("abc") : number +>vue.f : (x: string) => number +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>f : (x: string) => number >"abc" : "abc" vue.test; ->vue.test : any ->vue : { x: number; y: number; } ->test : any +>vue.test : number +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>test : number vue.hello; ->vue.hello : any ->vue : { x: number; y: number; } ->hello : any +>vue.hello : string +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>hello : string diff --git a/tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts b/tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts index 27861f81da6a6..3a47f85fe4cca 100644 --- a/tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts +++ b/tests/cases/conformance/types/thisType/thisTypeInObjectLiterals2.ts @@ -202,8 +202,6 @@ p12.bar = p12.bar + 1; type Accessors = { [K in keyof T]: (() => T[K]) | Computed }; -type Dictionary = { [x: string]: T } - type Computed = { get?(): T; set?(value: T): void; From 8ffcb944f594bd1fd852f14312f046eae8aeba63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Thu, 20 Apr 2023 20:23:33 +0200 Subject: [PATCH 17/29] do not collect index-based inferences from non-inferrable types --- src/compiler/checker.ts | 10 ++++-- ...actDefaultPropsInferenceSuccess.errors.txt | 34 ++++++------------- .../reactDefaultPropsInferenceSuccess.types | 32 ++++++++--------- 3 files changed, 34 insertions(+), 42 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c5d84fbfcd2cd..23ac0f1fd4d7a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24512,9 +24512,14 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { inferFromTypes((source as IndexedAccessType).indexType, (target as IndexedAccessType).indexType); } else if (!(priority & InferencePriority.NakedTypeVariable) && target.flags & TypeFlags.IndexedAccess) { - const targetConstraint = (target as IndexedAccessType).objectType; - const inference = getInferenceInfoForType(getActualTypeVariable(targetConstraint)); + if (isFromInferenceBlockedSource(source)) { + return; + } + const inference = getInferenceInfoForType(getActualTypeVariable((target as IndexedAccessType).objectType)); if (inference) { + if (getObjectFlags(source) & ObjectFlags.NonInferrableType || source === nonInferrableAnyType) { + return; + } if (!inference.isFixed) { // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` // Where `T` is `source` and `Keys` is `target.indexType` @@ -24525,7 +24530,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { inference.indexes = append(inference.indexes, instantiateType(inferenceType, mapper)); } } - return; } } else if (source.flags & TypeFlags.StringMapping && target.flags & TypeFlags.StringMapping) { diff --git a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt index 26bf596fa531b..335f0febc862f 100644 --- a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt +++ b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.errors.txt @@ -1,12 +1,10 @@ -tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(24,42): error TS7006: Parameter 'value' implicitly has an 'any' type. tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(27,36): error TS2769: No overload matches this call. Overload 1 of 2, '(props: Readonly): FieldFeedback', gave the following error. - Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. - Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. + Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. + Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. Type 'void' is not assignable to type 'boolean'. Overload 2 of 2, '(props: Props, context?: any): FieldFeedback', gave the following error. - Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(27,42): error TS7006: Parameter 'value' implicitly has an 'any' type. + Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(43,41): error TS2769: No overload matches this call. Overload 1 of 2, '(props: Readonly): FieldFeedbackBeta', gave the following error. Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. @@ -14,17 +12,15 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(43,41): error TS2769: Type 'void' is not assignable to type 'boolean'. Overload 2 of 2, '(props: Props, context?: any): FieldFeedbackBeta', gave the following error. Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(61,43): error TS7006: Parameter 'value' implicitly has an 'any' type. tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,37): error TS2769: No overload matches this call. Overload 1 of 2, '(props: Readonly): FieldFeedback2', gave the following error. - Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. + Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. Type 'void' is not assignable to type 'boolean'. Overload 2 of 2, '(props: MyPropsProps, context?: any): FieldFeedback2', gave the following error. - Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. -tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: Parameter 'value' implicitly has an 'any' type. + Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. -==== tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx (7 errors) ==== +==== tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx (3 errors) ==== /// import React from 'react'; @@ -49,23 +45,19 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: // OK const Test1 = () => !!value} />; - ~~~~~ -!!! error TS7006: Parameter 'value' implicitly has an 'any' type. // Error: Void not assignable to boolean const Test2 = () => console.log(value)} />; ~~~~ !!! error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedback', gave the following error. -!!! error TS2769: Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. -!!! error TS2769: Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. !!! error TS2769: Type 'void' is not assignable to type 'boolean'. !!! error TS2769: Overload 2 of 2, '(props: Props, context?: any): FieldFeedback', gave the following error. -!!! error TS2769: Type '(value: any) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '"a" | "b" | ((value: string) => boolean) | undefined'. !!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' !!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:6:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' - ~~~~~ -!!! error TS7006: Parameter 'value' implicitly has an 'any' type. class FieldFeedbackBeta

extends React.Component

{ static defaultProps: BaseProps = { @@ -110,22 +102,18 @@ tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx(64,43): error TS7006: // OK const Test3 = () => !!value} />; - ~~~~~ -!!! error TS7006: Parameter 'value' implicitly has an 'any' type. // Error: Void not assignable to boolean const Test4 = () => console.log(value)} />; ~~~~ !!! error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 2, '(props: Readonly): FieldFeedback2', gave the following error. -!!! error TS2769: Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. !!! error TS2769: Type 'void' is not assignable to type 'boolean'. !!! error TS2769: Overload 2 of 2, '(props: MyPropsProps, context?: any): FieldFeedback2', gave the following error. -!!! error TS2769: Type '(value: any) => void' is not assignable to type '(value: string) => boolean'. +!!! error TS2769: Type '(value: string) => void' is not assignable to type '(value: string) => boolean'. !!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:46:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' !!! related TS6500 tests/cases/compiler/reactDefaultPropsInferenceSuccess.tsx:46:3: The expected type comes from property 'when' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Pick & Readonly, "children" | "error"> & Partial & Readonly, "when">> & Partial boolean; }, never>>' - ~~~~~ -!!! error TS7006: Parameter 'value' implicitly has an 'any' type. // OK const Test5 = () => ; diff --git a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types index 289c831bc55a1..9995e298150c5 100644 --- a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types +++ b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.types @@ -49,12 +49,12 @@ const Test1 = () => !!value} />; >() => !!value} /> : () => JSX.Element > !!value} /> : JSX.Element >FieldFeedback : typeof FieldFeedback ->when : (value: any) => boolean ->value => !!value : (value: any) => boolean ->value : any +>when : (value: string) => boolean +>value => !!value : (value: string) => boolean +>value : string >!!value : boolean >!value : boolean ->value : any +>value : string // Error: Void not assignable to boolean const Test2 = () => console.log(value)} />; @@ -62,14 +62,14 @@ const Test2 = () => console.log(value)} />; >() => console.log(value)} /> : () => JSX.Element > console.log(value)} /> : JSX.Element >FieldFeedback : typeof FieldFeedback ->when : (value: any) => void ->value => console.log(value) : (value: any) => void ->value : any +>when : (value: string) => void +>value => console.log(value) : (value: string) => void +>value : string >console.log(value) : void >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->value : any +>value : string class FieldFeedbackBeta

extends React.Component

{ >FieldFeedbackBeta : FieldFeedbackBeta

@@ -176,12 +176,12 @@ const Test3 = () => !!value} />; >() => !!value} /> : () => JSX.Element > !!value} /> : JSX.Element >FieldFeedback2 : typeof FieldFeedback2 ->when : (value: any) => boolean ->value => !!value : (value: any) => boolean ->value : any +>when : (value: string) => boolean +>value => !!value : (value: string) => boolean +>value : string >!!value : boolean >!value : boolean ->value : any +>value : string // Error: Void not assignable to boolean const Test4 = () => console.log(value)} />; @@ -189,14 +189,14 @@ const Test4 = () => console.log(value)} />; >() => console.log(value)} /> : () => JSX.Element > console.log(value)} /> : JSX.Element >FieldFeedback2 : typeof FieldFeedback2 ->when : (value: any) => void ->value => console.log(value) : (value: any) => void ->value : any +>when : (value: string) => void +>value => console.log(value) : (value: string) => void +>value : string >console.log(value) : void >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->value : any +>value : string // OK const Test5 = () => ; From 9825bcdfe830bde10102d477c882bb5e14c629c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Mon, 16 Sep 2024 14:06:19 +0200 Subject: [PATCH 18/29] update baselines --- ...completionsCommitCharactersGlobal.baseline | 414 ++++++++++++++++++ .../dependentDestructuredVariables.types | 2 +- ...ullAssertionPropegatesContextualType.types | 3 - ...rtProvider_namespaceSameNameAsIntrinsic.js | 6 + .../pasteEdits_revertUpdatedFile.js | 6 + 5 files changed, 427 insertions(+), 4 deletions(-) diff --git a/tests/baselines/reference/completionsCommitCharactersGlobal.baseline b/tests/baselines/reference/completionsCommitCharactersGlobal.baseline index 03147604cbf99..787c5b8ee480a 100644 --- a/tests/baselines/reference/completionsCommitCharactersGlobal.baseline +++ b/tests/baselines/reference/completionsCommitCharactersGlobal.baseline @@ -2692,6 +2692,7 @@ // | type ParameterDecorator = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => void // | type Parameters any> = T extends (...args: infer P) => any ? P : never // | type Partial = { [P in keyof T]?: T[P]; } +// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] // | type Pick = { [P in K]: T[P]; } // | interface Promise // | type PromiseConstructorLike = new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike @@ -2872,6 +2873,7 @@ // | type ParameterDecorator = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => void // | type Parameters any> = T extends (...args: infer P) => any ? P : never // | type Partial = { [P in keyof T]?: T[P]; } +// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] // | type Pick = { [P in K]: T[P]; } // | interface Promise // | type PromiseConstructorLike = new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike @@ -73582,6 +73584,212 @@ } ] }, + { + "name": "PartialInference", + "kind": "type", + "kindModifiers": "declare", + "sortText": "15", + "displayParts": [ + { + "text": "type", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "PartialInference", + "kind": "aliasName" + }, + { + "text": "<", + "kind": "punctuation" + }, + { + "text": "T", + "kind": "typeParameterName" + }, + { + "text": ",", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "Keys", + "kind": "typeParameterName" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "extends", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + }, + { + "text": ">", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "=", + "kind": "operator" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "{", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "[", + "kind": "punctuation" + }, + { + "text": "K", + "kind": "typeParameterName" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "in", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "Keys", + "kind": "typeParameterName" + }, + { + "text": "]", + "kind": "punctuation" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "{", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "[", + "kind": "punctuation" + }, + { + "text": "K1", + "kind": "typeParameterName" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "in", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "K", + "kind": "typeParameterName" + }, + { + "text": "]", + "kind": "punctuation" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "T", + "kind": "typeParameterName" + }, + { + "text": ";", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "}", + "kind": "punctuation" + }, + { + "text": ";", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "}", + "kind": "punctuation" + }, + { + "text": "[", + "kind": "punctuation" + }, + { + "text": "Keys", + "kind": "typeParameterName" + }, + { + "text": "]", + "kind": "punctuation" + } + ], + "documentation": [ + { + "text": "Type instantiated to perform partial inferences from indexed accesses", + "kind": "text" + } + ] + }, { "name": "Pick", "kind": "type", @@ -82569,6 +82777,212 @@ } ] }, + { + "name": "PartialInference", + "kind": "type", + "kindModifiers": "declare", + "sortText": "15", + "displayParts": [ + { + "text": "type", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "PartialInference", + "kind": "aliasName" + }, + { + "text": "<", + "kind": "punctuation" + }, + { + "text": "T", + "kind": "typeParameterName" + }, + { + "text": ",", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "Keys", + "kind": "typeParameterName" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "extends", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "string", + "kind": "keyword" + }, + { + "text": ">", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "=", + "kind": "operator" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "{", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "[", + "kind": "punctuation" + }, + { + "text": "K", + "kind": "typeParameterName" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "in", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "Keys", + "kind": "typeParameterName" + }, + { + "text": "]", + "kind": "punctuation" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "{", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "[", + "kind": "punctuation" + }, + { + "text": "K1", + "kind": "typeParameterName" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "in", + "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "K", + "kind": "typeParameterName" + }, + { + "text": "]", + "kind": "punctuation" + }, + { + "text": ":", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "T", + "kind": "typeParameterName" + }, + { + "text": ";", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "}", + "kind": "punctuation" + }, + { + "text": ";", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "}", + "kind": "punctuation" + }, + { + "text": "[", + "kind": "punctuation" + }, + { + "text": "Keys", + "kind": "typeParameterName" + }, + { + "text": "]", + "kind": "punctuation" + } + ], + "documentation": [ + { + "text": "Type instantiated to perform partial inferences from indexed accesses", + "kind": "text" + } + ] + }, { "name": "Pick", "kind": "type", diff --git a/tests/baselines/reference/dependentDestructuredVariables.types b/tests/baselines/reference/dependentDestructuredVariables.types index 1b829f101d426..ef798f07a45a7 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.types +++ b/tests/baselines/reference/dependentDestructuredVariables.types @@ -2,7 +2,7 @@ === Performance Stats === Type Count: 2,500 -Instantiation count: 5,000 +Instantiation count: 2,500 -> 5,000 === dependentDestructuredVariables.ts === type Action = diff --git a/tests/baselines/reference/nonnullAssertionPropegatesContextualType.types b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.types index 8424e057fb0ad..59010f1f05e57 100644 --- a/tests/baselines/reference/nonnullAssertionPropegatesContextualType.types +++ b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.types @@ -1,8 +1,5 @@ //// [tests/cases/compiler/nonnullAssertionPropegatesContextualType.ts] //// -=== Performance Stats === -Type Count: 1,000 - === nonnullAssertionPropegatesContextualType.ts === let rect2: SVGRectElement = document.querySelector('.svg-rectangle')!; // Error: Element >rect2 : SVGRectElement diff --git a/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js b/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js index 5fa9b66ccb854..eb630a49266cf 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js +++ b/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js @@ -976,6 +976,12 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "declare", "sortText": "15" }, + { + "name": "PartialInference", + "kind": "type", + "kindModifiers": "declare", + "sortText": "15" + }, { "name": "Pick", "kind": "type", diff --git a/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js b/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js index b48a1f777b87a..395de616d3aba 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js +++ b/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js @@ -928,6 +928,12 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "declare", "sortText": "15" }, + { + "name": "PartialInference", + "kind": "type", + "kindModifiers": "declare", + "sortText": "15" + }, { "name": "Pick", "kind": "type", From c90fb20a457445d9d1da42b1f1a5e48e0cb89b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Mon, 1 Dec 2025 00:20:44 +0100 Subject: [PATCH 19/29] instantiate aggregate inference --- src/compiler/checker.ts | 8 +- .../baselines/reference/inferingFromAny.types | 4 +- ...ceIndexingUsingOtherTypeParameter1.symbols | 197 ++++++++++++++++++ ...enceIndexingUsingOtherTypeParameter1.types | 123 +++++++++++ ...nferenceSelfIndexingTypeParameter1.symbols | 103 +++++++++ ...eInferenceSelfIndexingTypeParameter1.types | 140 +++++++++++++ ...ferenceIndexingUsingOtherTypeParameter1.ts | 59 ++++++ ...typeInferenceSelfIndexingTypeParameter1.ts | 33 +++ 8 files changed, 662 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols create mode 100644 tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types create mode 100644 tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts create mode 100644 tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4e0bd973dee4b..00d4cc8f01246 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -20567,7 +20567,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } /** - * Maps forward-references to later types parameters to the empty object type. + * Maps forward-references to later types parameters to the unknown type. * This is used during inference when instantiating type parameter defaults. */ function createBackreferenceMapper(context: InferenceContext, index: number): TypeMapper { @@ -27603,7 +27603,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } } - inferredType = aggregateInference; + const recordSymbol = getGlobalRecordSymbol(); + const selfReference = recordSymbol ? getTypeAliasInstantiation(recordSymbol, [stringNumberSymbolType, unknownType]) : unknownType; + inferredType = instantiateType(aggregateInference, mergeTypeMappers(makeUnaryTypeMapper(inference.typeParameter, selfReference), context.nonFixingMapper)); } else if (context.flags & InferenceFlags.NoDefault) { // We use silentNeverType as the wildcard that signals no inferences. @@ -27618,7 +27620,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const defaultType = getDefaultFromTypeParameter(inference.typeParameter); if (defaultType) { // Instantiate the default type. Any forward reference to a type - // parameter should be instantiated to the empty object type. + // parameter should be instantiated to the unknown type. inferredType = instantiateType(defaultType, mergeTypeMappers(createBackreferenceMapper(context, index), context.nonFixingMapper)); } } diff --git a/tests/baselines/reference/inferingFromAny.types b/tests/baselines/reference/inferingFromAny.types index 86cb4f6d1cc33..a959f6dc9557a 100644 --- a/tests/baselines/reference/inferingFromAny.types +++ b/tests/baselines/reference/inferingFromAny.types @@ -279,8 +279,8 @@ var a = f18(a); var a = f19(a, a); >a : any ->f19(a, a) : PartialInference -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>f19(a, a) : { [x: string]: any; } +> : ^^^^^^^^^^^^^^^^^^^^^ >f19 : (k: K, x: T[K]) => T > : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >a : any diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols new file mode 100644 index 0000000000000..6f2d103726a5f --- /dev/null +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols @@ -0,0 +1,197 @@ +//// [tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts] //// + +=== typeInferenceIndexingUsingOtherTypeParameter1.ts === +type Primitive = null | undefined | string | number | boolean | symbol | bigint; +>Primitive : Symbol(Primitive, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) + +type FieldValues = Record; +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) +>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) + +type PathImpl< +>PathImpl : Symbol(PathImpl, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 39)) + + K extends string | number, +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) + + V, +>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) + + TraversedTypes, +>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 6, 4)) + +> = V extends Primitive +>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) +>Primitive : Symbol(Primitive, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) + + ? `${K}` +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) + + : `${K}` | `${K}.${PathInternal}`; +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) +>PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59)) +>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) +>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 6, 4)) +>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) + +type PathInternal = { +>PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) +>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 20)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) + + [K in keyof T]-?: PathImpl; +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) +>PathImpl : Symbol(PathImpl, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 39)) +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3)) +>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 20)) + +}[keyof T]; +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) + +type Path = T extends any ? PathInternal : never; +>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10)) +>PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10)) + +type FieldPath = Path; +>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 15)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) +>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 15)) + +type PathValue> = T extends any +>PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) +>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) +>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) + + ? P extends `${infer K}.${infer R}` +>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) +>R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33)) + + ? K extends keyof T +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) + + ? R extends Path +>R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33)) +>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) + + ? PathValue +>PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) +>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) +>R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33)) + + : never + : never + : P extends keyof T +>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) + + ? T[P] +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) +>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) + + : never + : never; + +type FieldPathValue< +>FieldPathValue : Symbol(FieldPathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 30, 10)) + + TFieldValues extends FieldValues, +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) + + TFieldPath extends FieldPath, +>TFieldPath : Symbol(TFieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 33, 35)) +>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20)) + +> = PathValue; +>PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20)) +>TFieldPath : Symbol(TFieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 33, 35)) + +type UseControllerProps< +>UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 35, 40)) + + TFieldValues extends FieldValues = FieldValues, +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) + + TName extends FieldPath = FieldPath, +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49)) +>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) +>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) + +> = { + name: TName; +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 40, 5)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49)) + + defaultValue?: FieldPathValue; +>defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 41, 14)) +>FieldPathValue : Symbol(FieldPathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 30, 10)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49)) + +}; + +declare function useController< +>useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 43, 2)) + + TFieldValues extends FieldValues = FieldValues, +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) + + TName extends FieldPath = FieldPath, +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49)) +>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) +>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) + +>( + props: UseControllerProps, +>props : Symbol(props, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 48, 2)) +>UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 35, 40)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49)) + +): { name: TName; values: TFieldValues }; +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 50, 4)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49)) +>values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 50, 17)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) + +export const { name, values } = useController({ +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 14)) +>values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 20)) +>useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 43, 2)) + + name: "test", +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 47)) + + defaultValue: "", +>defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 53, 15)) + +}); + diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types new file mode 100644 index 0000000000000..331b1469ae173 --- /dev/null +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types @@ -0,0 +1,123 @@ +//// [tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts] //// + +=== Performance Stats === +Instantiation count: 2,500 + +=== typeInferenceIndexingUsingOtherTypeParameter1.ts === +type Primitive = null | undefined | string | number | boolean | symbol | bigint; +>Primitive : Primitive +> : ^^^^^^^^^ + +type FieldValues = Record; +>FieldValues : FieldValues +> : ^^^^^^^^^^^ + +type PathImpl< +>PathImpl : PathImpl +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + K extends string | number, + V, + TraversedTypes, +> = V extends Primitive + ? `${K}` + : `${K}` | `${K}.${PathInternal}`; + +type PathInternal = { +>PathInternal : PathInternal +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + [K in keyof T]-?: PathImpl; +}[keyof T]; + +type Path = T extends any ? PathInternal : never; +>Path : Path +> : ^^^^^^^ + +type FieldPath = Path; +>FieldPath : FieldPath +> : ^^^^^^^^^^^^^^^^^^^^^^^ + +type PathValue> = T extends any +>PathValue : PathValue +> : ^^^^^^^^^^^^^^^ + + ? P extends `${infer K}.${infer R}` + ? K extends keyof T + ? R extends Path + ? PathValue + : never + : never + : P extends keyof T + ? T[P] + : never + : never; + +type FieldPathValue< +>FieldPathValue : FieldPathValue +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + TFieldValues extends FieldValues, + TFieldPath extends FieldPath, +> = PathValue; + +type UseControllerProps< +>UseControllerProps : UseControllerProps +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +> = { + name: TName; +>name : TName +> : ^^^^^ + + defaultValue?: FieldPathValue; +>defaultValue : PathValue | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +}; + +declare function useController< +>useController : = Path>(props: UseControllerProps) => { name: TName; values: TFieldValues; } +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ + + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +>( + props: UseControllerProps, +>props : UseControllerProps +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +): { name: TName; values: TFieldValues }; +>name : TName +> : ^^^^^ +>values : TFieldValues +> : ^^^^^^^^^^^^ + +export const { name, values } = useController({ +>name : "test" +> : ^^^^^^ +>values : { test: string; } +> : ^^^^^^^^^^^^^^^^^ +>useController({ name: "test", defaultValue: "",}) : { name: "test"; values: { test: string; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>useController : = Path>(props: UseControllerProps) => { name: TName; values: TFieldValues; } +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>{ name: "test", defaultValue: "",} : { name: "test"; defaultValue: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + name: "test", +>name : "test" +> : ^^^^^^ +>"test" : "test" +> : ^^^^^^ + + defaultValue: "", +>defaultValue : string +> : ^^^^^^ +>"" : "" +> : ^^ + +}); + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols new file mode 100644 index 0000000000000..55517ccb7f5ef --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols @@ -0,0 +1,103 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts] //// + +=== typeInferenceSelfIndexingTypeParameter1.ts === +type Comparator = (a: T, b: T) => -1 | 0 | 1; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 16)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 22)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 16)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 27)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 16)) + +declare const createComparator: ( +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) + + property: string, +>property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 37)) + + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +>comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 19)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 15)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 29)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) + +) => Comparator; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) + +declare const concatComparators: ( +>concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) + + c1: Comparator, +>c1 : Symbol(c1, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 38)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) + + c2: Comparator, +>c2 : Symbol(c2, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 8, 20)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) + + ...cRest: Comparator[] +>cRest : Symbol(cRest, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 9, 20)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) + +) => Comparator; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 13)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 31)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 41)) + +declare class ModuleGraphConnection { +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 67)) + + clone(): ModuleGraphConnection; +>clone : Symbol(ModuleGraphConnection.clone, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 15, 37)) +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 67)) +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +>bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 19, 5)) +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 13)) +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 13)) + +const byRangeStart = createComparator("rangeStart", compareNumbers); +>byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 20, 5)) +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 13)) +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 13)) + +declare const references: { +>references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 22, 13)) + + connection: ModuleGraphConnection; +>connection : Symbol(connection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 22, 27)) +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 67)) + + sourceOrder: number; +>sourceOrder : Symbol(sourceOrder, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 23, 36)) + + rangeStart: number | undefined; +>rangeStart : Symbol(rangeStart, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 24, 22)) + + defer?: boolean; +>defer : Symbol(defer, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 25, 33)) + +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); +>references.sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) +>references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 22, 13)) +>sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) +>concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 13)) +>bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 19, 5)) +>byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 20, 5)) + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types new file mode 100644 index 0000000000000..124ecc3e5889e --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types @@ -0,0 +1,140 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts] //// + +=== typeInferenceSelfIndexingTypeParameter1.ts === +type Comparator = (a: T, b: T) => -1 | 0 | 1; +>Comparator : Comparator +> : ^^^^^^^^^^^^^ +>a : T +> : ^ +>b : T +> : ^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +declare const createComparator: ( +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ + + property: string, +>property : string +> : ^^^^^^ + + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +>comparator : (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : T[keyof T] +> : ^^^^^^^^^^ +>b : T[keyof T] +> : ^^^^^^^^^^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +) => Comparator; + +declare const concatComparators: ( +>concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ + + c1: Comparator, +>c1 : Comparator +> : ^^^^^^^^^^^^^ + + c2: Comparator, +>c2 : Comparator +> : ^^^^^^^^^^^^^ + + ...cRest: Comparator[] +>cRest : Comparator[] +> : ^^^^^^^^^^^^^^^ + +) => Comparator; + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : number +> : ^^^^^^ +>b : number +> : ^^^^^^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +declare class ModuleGraphConnection { +>ModuleGraphConnection : ModuleGraphConnection +> : ^^^^^^^^^^^^^^^^^^^^^ + + clone(): ModuleGraphConnection; +>clone : () => ModuleGraphConnection +> : ^^^^^^ +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("sourceOrder", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>"sourceOrder" : "sourceOrder" +> : ^^^^^^^^^^^^^ +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ + +const byRangeStart = createComparator("rangeStart", compareNumbers); +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("rangeStart", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>"rangeStart" : "rangeStart" +> : ^^^^^^^^^^^^ +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ + +declare const references: { +>references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ + + connection: ModuleGraphConnection; +>connection : ModuleGraphConnection +> : ^^^^^^^^^^^^^^^^^^^^^ + + sourceOrder: number; +>sourceOrder : number +> : ^^^^^^ + + rangeStart: number | undefined; +>rangeStart : number | undefined +> : ^^^^^^^^^^^^^^^^^^ + + defer?: boolean; +>defer : boolean | undefined +> : ^^^^^^^^^^^^^^^^^^^ + +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); +>references.sort(concatComparators(bySourceOrder, byRangeStart)) : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>references.sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>concatComparators(bySourceOrder, byRangeStart) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + diff --git a/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts b/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts new file mode 100644 index 0000000000000..c4ad740ddea70 --- /dev/null +++ b/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts @@ -0,0 +1,59 @@ +// @strict: true +// @noEmit: true + +type Primitive = null | undefined | string | number | boolean | symbol | bigint; + +type FieldValues = Record; + +type PathImpl< + K extends string | number, + V, + TraversedTypes, +> = V extends Primitive + ? `${K}` + : `${K}` | `${K}.${PathInternal}`; + +type PathInternal = { + [K in keyof T]-?: PathImpl; +}[keyof T]; + +type Path = T extends any ? PathInternal : never; + +type FieldPath = Path; + +type PathValue> = T extends any + ? P extends `${infer K}.${infer R}` + ? K extends keyof T + ? R extends Path + ? PathValue + : never + : never + : P extends keyof T + ? T[P] + : never + : never; + +type FieldPathValue< + TFieldValues extends FieldValues, + TFieldPath extends FieldPath, +> = PathValue; + +type UseControllerProps< + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +> = { + name: TName; + defaultValue?: FieldPathValue; +}; + +declare function useController< + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +>( + props: UseControllerProps, +): { name: TName; values: TFieldValues }; + +export const { name, values } = useController({ + name: "test", + defaultValue: "", +}); diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts new file mode 100644 index 0000000000000..9e4c30d954b47 --- /dev/null +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts @@ -0,0 +1,33 @@ +// @strict: true +// @noEmit: true + +type Comparator = (a: T, b: T) => -1 | 0 | 1; + +declare const createComparator: ( + property: string, + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +) => Comparator; + +declare const concatComparators: ( + c1: Comparator, + c2: Comparator, + ...cRest: Comparator[] +) => Comparator; + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; + +declare class ModuleGraphConnection { + clone(): ModuleGraphConnection; +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +const byRangeStart = createComparator("rangeStart", compareNumbers); + +declare const references: { + connection: ModuleGraphConnection; + sourceOrder: number; + rangeStart: number | undefined; + defer?: boolean; +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); From 2b580c8f88294b4b73459c40cf9ef7489a7af3ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Mon, 1 Dec 2025 18:59:52 +0100 Subject: [PATCH 20/29] experiment with `eraseSelfMapper` --- src/compiler/checker.ts | 30 ++++++++++---- src/lib/es5.d.ts | 2 +- .../mappedTypeRecursiveInference.errors.txt | 14 +------ .../mappedTypeRecursiveInference.types | 4 +- ...renceSelfIndexingTypeParameter2.errors.txt | 22 +++++++++++ ...nferenceSelfIndexingTypeParameter2.symbols | 33 ++++++++++++++++ ...eInferenceSelfIndexingTypeParameter2.types | 39 +++++++++++++++++++ ...typeInferenceSelfIndexingTypeParameter2.ts | 13 +++++++ 8 files changed, 135 insertions(+), 22 deletions(-) create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types create mode 100644 tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 00d4cc8f01246..efcd6e67f859c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2108,7 +2108,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var unreachableNeverType = createIntrinsicType(TypeFlags.Never, "never", /*objectFlags*/ undefined, "unreachable"); var nonPrimitiveType = createIntrinsicType(TypeFlags.NonPrimitive, "object"); var stringOrNumberType = getUnionType([stringType, numberType]); - var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]); + var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]) as UnionType; var numberOrBigIntType = getUnionType([numberType, bigintType]); var templateConstraintType = getUnionType([stringType, numberType, booleanType, bigintType, nullType, undefinedType]) as UnionType; var numericStringType = getTemplateLiteralType(["", ""], [numberType]); // The `${number}` type @@ -2144,6 +2144,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var unknownEmptyObjectType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray); var unknownUnionType = strictNullChecks ? getUnionType([undefinedType, nullType, unknownEmptyObjectType]) : unknownType; + var allKeysUnknownType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, map(stringNumberSymbolType.types, t => createIndexInfo(t, unknownType, /*isReadonly*/ false))); // { [k: PropertyKey]: unknown } + var allKeysAllKeysUnknownType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, map(stringNumberSymbolType.types, t => createIndexInfo(t, allKeysUnknownType, /*isReadonly*/ false))); // { [k: PropertyKey]: { [k: PropertyKey]: unknown } } + var emptyGenericType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray) as ObjectType as GenericType; emptyGenericType.instantiations = new Map(); @@ -26372,6 +26375,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { * variable T[P] (i.e. we treat the type T[P] as the type variable we're inferring for). */ function inferTypeForHomomorphicMappedType(source: Type, target: MappedType, constraint: IndexType): Type | undefined { + if (constraint.type.flags & TypeFlags.IndexedAccess) { + const newTypeParam = (constraint.type as IndexedAccessType).objectType; + target = replaceIndexedAccess(target, constraint.type as ReplaceableIndexedAccessType, newTypeParam) as MappedType; + constraint = getIndexType(newTypeParam) as IndexType; + } const cacheKey = source.id + "," + target.id + "," + constraint.id; if (reverseHomomorphicMappedCache.has(cacheKey)) { return reverseHomomorphicMappedCache.get(cacheKey); @@ -26434,11 +26442,20 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function inferReverseMappedTypeWorker(sourceType: Type, target: MappedType, constraint: IndexType): Type { - const typeParameter = getIndexedAccessType(constraint.type, getTypeParameterFromMappedType(target)) as TypeParameter; + const typeParameter = getTypeParameterFromMappedType(target); + const inferenceTarget = getIndexedAccessType(constraint.type, typeParameter); const templateType = getTemplateTypeFromMappedType(target); - const inference = createInferenceInfo(typeParameter); + const inference = createInferenceInfo(inferenceTarget); inferTypes([inference], sourceType, templateType); - return getTypeFromInference(inference) || (inference.indexes ? getIntersectionType(inference.indexes) : unknownType); + const inferredType = getTypeFromInference(inference); + if (inferredType) { + return inferredType; + } + if (inference.indexes) { + const eraseSelfMapper = makeArrayTypeMapper([constraint.type, typeParameter], [allKeysAllKeysUnknownType, stringNumberSymbolType]); + return instantiateType(getIntersectionType(inference.indexes), eraseSelfMapper); + } + return unknownType; } function inferReverseMappedType(source: Type, target: MappedType, constraint: IndexType): Type | undefined { @@ -27603,9 +27620,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } } - const recordSymbol = getGlobalRecordSymbol(); - const selfReference = recordSymbol ? getTypeAliasInstantiation(recordSymbol, [stringNumberSymbolType, unknownType]) : unknownType; - inferredType = instantiateType(aggregateInference, mergeTypeMappers(makeUnaryTypeMapper(inference.typeParameter, selfReference), context.nonFixingMapper)); + const eraseSelfMapper = makeUnaryTypeMapper(inference.typeParameter, allKeysUnknownType); + inferredType = instantiateType(aggregateInference, mergeTypeMappers(eraseSelfMapper, context.nonFixingMapper)); } else if (context.flags & InferenceFlags.NoDefault) { // We use silentNeverType as the wildcard that signals no inferences. diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index f41da3e6b71a2..e519920e7d147 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -1669,7 +1669,7 @@ interface ThisType {} /** * Type instantiated to perform partial inferences from indexed accesses */ -type PartialInference = ({ +type PartialInference = ({ [K in Keys]: { [K1 in K]: T; }; diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.errors.txt b/tests/baselines/reference/mappedTypeRecursiveInference.errors.txt index c893f5d8a2072..8ede39ed8f964 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.errors.txt +++ b/tests/baselines/reference/mappedTypeRecursiveInference.errors.txt @@ -2,14 +2,9 @@ mappedTypeRecursiveInference.ts(19,18): error TS2345: Argument of type 'XMLHttpR The types of 'responseXML.body.offsetParent.shadowRoot.adoptedStyleSheets' are incompatible between these types. Type 'CSSStyleSheet[]' is not assignable to type 'Deep<{ readonly cssRules: { readonly length: any; item: any; [Symbol.iterator]: any; }; readonly ownerRule: { cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; readonly rules: { readonly length: any; item: any; [Symbol.iterator]: any; }; addRule: unknown; deleteRule: unknown; insertRule: unknown; removeRule: unknown; replace: unknown; replaceSync: unknown; disabled: { valueOf: any; }; readonly href: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; media: { readonly length: any; mediaText: any; toString: any; appendMedium: any; deleteMedium: any; item: any; [Symbol.iterator]: any; }; readonly ownerNode: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; } | { readonly ownerDocument: any; readonly target: any; data: any; readonly length: any; appendData: any; deleteData: any; insertData: any; replaceData: any; substringData: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly sheet: any; }; readonly parentStyleSheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; readonly title: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly type: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; }>[]'. Type 'CSSStyleSheet' is not assignable to type 'Deep<{ readonly cssRules: { readonly length: any; item: any; [Symbol.iterator]: any; }; readonly ownerRule: { cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; readonly rules: { readonly length: any; item: any; [Symbol.iterator]: any; }; addRule: unknown; deleteRule: unknown; insertRule: unknown; removeRule: unknown; replace: unknown; replaceSync: unknown; disabled: { valueOf: any; }; readonly href: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; media: { readonly length: any; mediaText: any; toString: any; appendMedium: any; deleteMedium: any; item: any; [Symbol.iterator]: any; }; readonly ownerNode: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; } | { readonly ownerDocument: any; readonly target: any; data: any; readonly length: any; appendData: any; deleteData: any; insertData: any; replaceData: any; substringData: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly sheet: any; }; readonly parentStyleSheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; readonly title: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly type: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; }>'. - The types of 'ownerRule.parentRule.parentStyleSheet.ownerNode' are incompatible between these types. + Types of property 'ownerNode' are incompatible. Type 'Element | ProcessingInstruction' is not assignable to type 'Deep<{ readonly attributes: { readonly length: any; getNamedItem: any; getNamedItemNS: any; item: any; removeNamedItem: any; removeNamedItemNS: any; setNamedItem: any; setNamedItemNS: any; [Symbol.iterator]: any; }; classList: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; className: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly clientHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly currentCSSZoom: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; id: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; innerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly localName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly namespaceURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; onfullscreenchange: unknown; onfullscreenerror: unknown; outerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; part: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; readonly prefix: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly scrollHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly scrollWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly shadowRoot: { readonly clonable: any; readonly delegatesFocus: any; readonly host: any; innerHTML: any; readonly mode: any; onslotchange: any; readonly serializable: any; readonly slotAssignment: any; getHTML: any; setHTMLUnsafe: any; addEventListener: any; removeEventListener: any; readonly ownerDocument: any; getElementById: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; }; slot: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly tagName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; attachShadow: unknown; checkVisibility: unknown; closest: unknown; computedStyleMap: unknown; getAttribute: unknown; getAttributeNS: unknown; getAttributeNames: unknown; getAttributeNode: unknown; getAttributeNodeNS: unknown; getBoundingClientRect: unknown; getClientRects: unknown; getElementsByClassName: unknown; getElementsByTagName: unknown; getElementsByTagNameNS: unknown; getHTML: unknown; hasAttribute: unknown; hasAttributeNS: unknown; hasAttributes: unknown; hasPointerCapture: unknown; insertAdjacentElement: unknown; insertAdjacentHTML: unknown; insertAdjacentText: unknown; matches: unknown; releasePointerCapture: unknown; removeAttribute: unknown; removeAttributeNS: unknown; removeAttributeNode: unknown; requestFullscreen: unknown; requestPointerLock: unknown; scroll: unknown; scrollBy: unknown; scrollIntoView: unknown; scrollTo: unknown; setAttribute: unknown; setAttributeNS: unknown; setAttributeNode: unknown; setAttributeNodeNS: unknown; setHTMLUnsafe: unknown; setPointerCapture: unknown; toggleAttribute: unknown; webkitMatchesSelector: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; addEventListener: unknown; removeEventListener: unknown; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; dispatchEvent: unknown; ariaActiveDescendantElement: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; ariaAtomic: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaAutoComplete: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBusy: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaChecked: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaControlsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaCurrent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDescribedByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDetailsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDisabled: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaErrorMessageElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaExpanded: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaFlowToElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaHasPopup: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaHidden: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaInvalid: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaKeyShortcuts: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabelledByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaLevel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLive: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaModal: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiLine: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiSelectable: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOrientation: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOwnsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaPlaceholder: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPosInSet: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPressed: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaReadOnly: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRelevant: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRequired: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSelected: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSetSize: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSort: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMax: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMin: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueNow: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; role: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; animate: unknown; getAnimations: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly childElementCount: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly children: { namedItem: any; readonly length: any; item: any; [Symbol.iterator]: any; }; readonly firstElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly lastElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; append: unknown; moveBefore: unknown; prepend: unknown; querySelector: unknown; querySelectorAll: unknown; replaceChildren: unknown; readonly assignedSlot: { name: any; assign: any; assignedElements: any; assignedNodes: any; addEventListener: any; removeEventListener: any; accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; } | { readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; readonly target: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; data: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; appendData: unknown; deleteData: unknown; insertData: unknown; replaceData: unknown; substringData: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; addEventListener: unknown; dispatchEvent: unknown; removeEventListener: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly sheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; }>'. Type 'Element' is not assignable to type 'Deep<{ readonly attributes: { readonly length: any; getNamedItem: any; getNamedItemNS: any; item: any; removeNamedItem: any; removeNamedItemNS: any; setNamedItem: any; setNamedItemNS: any; [Symbol.iterator]: any; }; classList: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; className: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly clientHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly currentCSSZoom: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; id: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; innerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly localName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly namespaceURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; onfullscreenchange: unknown; onfullscreenerror: unknown; outerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; part: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; readonly prefix: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly scrollHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly scrollWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly shadowRoot: { readonly clonable: any; readonly delegatesFocus: any; readonly host: any; innerHTML: any; readonly mode: any; onslotchange: any; readonly serializable: any; readonly slotAssignment: any; getHTML: any; setHTMLUnsafe: any; addEventListener: any; removeEventListener: any; readonly ownerDocument: any; getElementById: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; }; slot: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly tagName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; attachShadow: unknown; checkVisibility: unknown; closest: unknown; computedStyleMap: unknown; getAttribute: unknown; getAttributeNS: unknown; getAttributeNames: unknown; getAttributeNode: unknown; getAttributeNodeNS: unknown; getBoundingClientRect: unknown; getClientRects: unknown; getElementsByClassName: unknown; getElementsByTagName: unknown; getElementsByTagNameNS: unknown; getHTML: unknown; hasAttribute: unknown; hasAttributeNS: unknown; hasAttributes: unknown; hasPointerCapture: unknown; insertAdjacentElement: unknown; insertAdjacentHTML: unknown; insertAdjacentText: unknown; matches: unknown; releasePointerCapture: unknown; removeAttribute: unknown; removeAttributeNS: unknown; removeAttributeNode: unknown; requestFullscreen: unknown; requestPointerLock: unknown; scroll: unknown; scrollBy: unknown; scrollIntoView: unknown; scrollTo: unknown; setAttribute: unknown; setAttributeNS: unknown; setAttributeNode: unknown; setAttributeNodeNS: unknown; setHTMLUnsafe: unknown; setPointerCapture: unknown; toggleAttribute: unknown; webkitMatchesSelector: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; addEventListener: unknown; removeEventListener: unknown; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; dispatchEvent: unknown; ariaActiveDescendantElement: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; ariaAtomic: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaAutoComplete: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBusy: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaChecked: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaControlsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaCurrent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDescribedByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDetailsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDisabled: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaErrorMessageElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaExpanded: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaFlowToElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaHasPopup: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaHidden: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaInvalid: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaKeyShortcuts: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabelledByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaLevel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLive: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaModal: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiLine: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiSelectable: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOrientation: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOwnsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaPlaceholder: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPosInSet: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPressed: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaReadOnly: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRelevant: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRequired: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSelected: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSetSize: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSort: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMax: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMin: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueNow: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; role: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; animate: unknown; getAnimations: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly childElementCount: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly children: { namedItem: any; readonly length: any; item: any; [Symbol.iterator]: any; }; readonly firstElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly lastElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; append: unknown; moveBefore: unknown; prepend: unknown; querySelector: unknown; querySelectorAll: unknown; replaceChildren: unknown; readonly assignedSlot: { name: any; assign: any; assignedElements: any; assignedNodes: any; addEventListener: any; removeEventListener: any; accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; } | { readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; readonly target: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; data: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; appendData: unknown; deleteData: unknown; insertData: unknown; replaceData: unknown; substringData: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; addEventListener: unknown; dispatchEvent: unknown; removeEventListener: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly sheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; }>'. - Type 'Element' is not assignable to type 'Deep<{ readonly attributes: { readonly length: any; getNamedItem: any; getNamedItemNS: any; item: any; removeNamedItem: any; removeNamedItemNS: any; setNamedItem: any; setNamedItemNS: any; [Symbol.iterator]: any; }; classList: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; className: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly clientHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly currentCSSZoom: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; id: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; innerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly localName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly namespaceURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; onfullscreenchange: unknown; onfullscreenerror: unknown; outerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; part: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; readonly prefix: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly scrollHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly scrollWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly shadowRoot: { readonly clonable: any; readonly delegatesFocus: any; readonly host: any; innerHTML: any; readonly mode: any; onslotchange: any; readonly serializable: any; readonly slotAssignment: any; getHTML: any; setHTMLUnsafe: any; addEventListener: any; removeEventListener: any; readonly ownerDocument: any; getElementById: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; }; slot: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly tagName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; attachShadow: unknown; checkVisibility: unknown; closest: unknown; computedStyleMap: unknown; getAttribute: unknown; getAttributeNS: unknown; getAttributeNames: unknown; getAttributeNode: unknown; getAttributeNodeNS: unknown; getBoundingClientRect: unknown; getClientRects: unknown; getElementsByClassName: unknown; getElementsByTagName: unknown; getElementsByTagNameNS: unknown; getHTML: unknown; hasAttribute: unknown; hasAttributeNS: unknown; hasAttributes: unknown; hasPointerCapture: unknown; insertAdjacentElement: unknown; insertAdjacentHTML: unknown; insertAdjacentText: unknown; matches: unknown; releasePointerCapture: unknown; removeAttribute: unknown; removeAttributeNS: unknown; removeAttributeNode: unknown; requestFullscreen: unknown; requestPointerLock: unknown; scroll: unknown; scrollBy: unknown; scrollIntoView: unknown; scrollTo: unknown; setAttribute: unknown; setAttributeNS: unknown; setAttributeNode: unknown; setAttributeNodeNS: unknown; setHTMLUnsafe: unknown; setPointerCapture: unknown; toggleAttribute: unknown; webkitMatchesSelector: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; addEventListener: unknown; removeEventListener: unknown; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; dispatchEvent: unknown; ariaActiveDescendantElement: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; ariaAtomic: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaAutoComplete: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBusy: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaChecked: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaControlsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaCurrent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDescribedByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDetailsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDisabled: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaErrorMessageElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaExpanded: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaFlowToElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaHasPopup: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaHidden: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaInvalid: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaKeyShortcuts: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabelledByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaLevel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLive: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaModal: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiLine: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiSelectable: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOrientation: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOwnsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaPlaceholder: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPosInSet: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPressed: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaReadOnly: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRelevant: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRequired: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSelected: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSetSize: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSort: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMax: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMin: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueNow: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; role: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; animate: unknown; getAnimations: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly childElementCount: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly children: { namedItem: any; readonly length: any; item: any; [Symbol.iterator]: any; }; readonly firstElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly lastElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; append: unknown; moveBefore: unknown; prepend: unknown; querySelector: unknown; querySelectorAll: unknown; replaceChildren: unknown; readonly assignedSlot: { name: any; assign: any; assignedElements: any; assignedNodes: any; addEventListener: any; removeEventListener: any; accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; }>'. - The types of 'ownerDocument.defaultView.frames.self.globalThis.IDBCursor.prototype.key' are incompatible between these types. - Type 'IDBValidKey' is not assignable to type 'Deep<{ toString: unknown; toFixed: unknown; toExponential: unknown; toPrecision: unknown; valueOf: unknown; toLocaleString: unknown; } | { toString: unknown; charAt: unknown; charCodeAt: unknown; concat: unknown; indexOf: unknown; lastIndexOf: unknown; localeCompare: unknown; match: unknown; replace: unknown; search: unknown; slice: unknown; split: unknown; substring: unknown; toLowerCase: unknown; toLocaleLowerCase: unknown; toUpperCase: unknown; toLocaleUpperCase: unknown; trim: unknown; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; substr: unknown; valueOf: unknown; codePointAt: unknown; includes: unknown; endsWith: unknown; normalize: unknown; repeat: unknown; startsWith: unknown; anchor: unknown; big: unknown; blink: unknown; bold: unknown; fixed: unknown; fontcolor: unknown; fontsize: unknown; italics: unknown; link: unknown; small: unknown; strike: unknown; sub: unknown; sup: unknown; [Symbol.iterator]: unknown; } | { readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; slice: unknown; readonly [Symbol.toStringTag]: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; } | { toString: unknown; toDateString: unknown; toTimeString: unknown; toLocaleString: unknown; toLocaleDateString: unknown; toLocaleTimeString: unknown; valueOf: unknown; getTime: unknown; getFullYear: unknown; getUTCFullYear: unknown; getMonth: unknown; getUTCMonth: unknown; getDate: unknown; getUTCDate: unknown; getDay: unknown; getUTCDay: unknown; getHours: unknown; getUTCHours: unknown; getMinutes: unknown; getUTCMinutes: unknown; getSeconds: unknown; getUTCSeconds: unknown; getMilliseconds: unknown; getUTCMilliseconds: unknown; getTimezoneOffset: unknown; setTime: unknown; setMilliseconds: unknown; setUTCMilliseconds: unknown; setSeconds: unknown; setUTCSeconds: unknown; setMinutes: unknown; setUTCMinutes: unknown; setHours: unknown; setUTCHours: unknown; setDate: unknown; setUTCDate: unknown; setMonth: unknown; setUTCMonth: unknown; setFullYear: unknown; setUTCFullYear: unknown; toUTCString: unknown; toISOString: unknown; toJSON: unknown; [Symbol.toPrimitive]: unknown; } | { readonly buffer: { readonly byteLength: any; slice: any; readonly [Symbol.toStringTag]: any; }; readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly byteOffset: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; }>'. - Type 'IDBValidKey[]' is not assignable to type 'Deep<{ toString: unknown; toFixed: unknown; toExponential: unknown; toPrecision: unknown; valueOf: unknown; toLocaleString: unknown; } | { toString: unknown; charAt: unknown; charCodeAt: unknown; concat: unknown; indexOf: unknown; lastIndexOf: unknown; localeCompare: unknown; match: unknown; replace: unknown; search: unknown; slice: unknown; split: unknown; substring: unknown; toLowerCase: unknown; toLocaleLowerCase: unknown; toUpperCase: unknown; toLocaleUpperCase: unknown; trim: unknown; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; substr: unknown; valueOf: unknown; codePointAt: unknown; includes: unknown; endsWith: unknown; normalize: unknown; repeat: unknown; startsWith: unknown; anchor: unknown; big: unknown; blink: unknown; bold: unknown; fixed: unknown; fontcolor: unknown; fontsize: unknown; italics: unknown; link: unknown; small: unknown; strike: unknown; sub: unknown; sup: unknown; [Symbol.iterator]: unknown; } | { readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; slice: unknown; readonly [Symbol.toStringTag]: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; } | { toString: unknown; toDateString: unknown; toTimeString: unknown; toLocaleString: unknown; toLocaleDateString: unknown; toLocaleTimeString: unknown; valueOf: unknown; getTime: unknown; getFullYear: unknown; getUTCFullYear: unknown; getMonth: unknown; getUTCMonth: unknown; getDate: unknown; getUTCDate: unknown; getDay: unknown; getUTCDay: unknown; getHours: unknown; getUTCHours: unknown; getMinutes: unknown; getUTCMinutes: unknown; getSeconds: unknown; getUTCSeconds: unknown; getMilliseconds: unknown; getUTCMilliseconds: unknown; getTimezoneOffset: unknown; setTime: unknown; setMilliseconds: unknown; setUTCMilliseconds: unknown; setSeconds: unknown; setUTCSeconds: unknown; setMinutes: unknown; setUTCMinutes: unknown; setHours: unknown; setUTCHours: unknown; setDate: unknown; setUTCDate: unknown; setMonth: unknown; setUTCMonth: unknown; setFullYear: unknown; setUTCFullYear: unknown; toUTCString: unknown; toISOString: unknown; toJSON: unknown; [Symbol.toPrimitive]: unknown; } | { readonly buffer: { readonly byteLength: any; slice: any; readonly [Symbol.toStringTag]: any; }; readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly byteOffset: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; }>'. - Type 'IDBValidKey[]' is missing the following properties from type 'Deep<{ toString: unknown; charAt: unknown; charCodeAt: unknown; concat: unknown; indexOf: unknown; lastIndexOf: unknown; localeCompare: unknown; match: unknown; replace: unknown; search: unknown; slice: unknown; split: unknown; substring: unknown; toLowerCase: unknown; toLocaleLowerCase: unknown; toUpperCase: unknown; toLocaleUpperCase: unknown; trim: unknown; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; substr: unknown; valueOf: unknown; codePointAt: unknown; includes: unknown; endsWith: unknown; normalize: unknown; repeat: unknown; startsWith: unknown; anchor: unknown; big: unknown; blink: unknown; bold: unknown; fixed: unknown; fontcolor: unknown; fontsize: unknown; italics: unknown; link: unknown; small: unknown; strike: unknown; sub: unknown; sup: unknown; [Symbol.iterator]: unknown; }>': charAt, charCodeAt, localeCompare, match, and 29 more. ==== mappedTypeRecursiveInference.ts (1 errors) ==== @@ -37,14 +32,9 @@ mappedTypeRecursiveInference.ts(19,18): error TS2345: Argument of type 'XMLHttpR !!! error TS2345: The types of 'responseXML.body.offsetParent.shadowRoot.adoptedStyleSheets' are incompatible between these types. !!! error TS2345: Type 'CSSStyleSheet[]' is not assignable to type 'Deep<{ readonly cssRules: { readonly length: any; item: any; [Symbol.iterator]: any; }; readonly ownerRule: { cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; readonly rules: { readonly length: any; item: any; [Symbol.iterator]: any; }; addRule: unknown; deleteRule: unknown; insertRule: unknown; removeRule: unknown; replace: unknown; replaceSync: unknown; disabled: { valueOf: any; }; readonly href: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; media: { readonly length: any; mediaText: any; toString: any; appendMedium: any; deleteMedium: any; item: any; [Symbol.iterator]: any; }; readonly ownerNode: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; } | { readonly ownerDocument: any; readonly target: any; data: any; readonly length: any; appendData: any; deleteData: any; insertData: any; replaceData: any; substringData: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly sheet: any; }; readonly parentStyleSheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; readonly title: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly type: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; }>[]'. !!! error TS2345: Type 'CSSStyleSheet' is not assignable to type 'Deep<{ readonly cssRules: { readonly length: any; item: any; [Symbol.iterator]: any; }; readonly ownerRule: { cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; readonly rules: { readonly length: any; item: any; [Symbol.iterator]: any; }; addRule: unknown; deleteRule: unknown; insertRule: unknown; removeRule: unknown; replace: unknown; replaceSync: unknown; disabled: { valueOf: any; }; readonly href: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; media: { readonly length: any; mediaText: any; toString: any; appendMedium: any; deleteMedium: any; item: any; [Symbol.iterator]: any; }; readonly ownerNode: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; } | { readonly ownerDocument: any; readonly target: any; data: any; readonly length: any; appendData: any; deleteData: any; insertData: any; replaceData: any; substringData: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly sheet: any; }; readonly parentStyleSheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; readonly title: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly type: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; }>'. -!!! error TS2345: The types of 'ownerRule.parentRule.parentStyleSheet.ownerNode' are incompatible between these types. +!!! error TS2345: Types of property 'ownerNode' are incompatible. !!! error TS2345: Type 'Element | ProcessingInstruction' is not assignable to type 'Deep<{ readonly attributes: { readonly length: any; getNamedItem: any; getNamedItemNS: any; item: any; removeNamedItem: any; removeNamedItemNS: any; setNamedItem: any; setNamedItemNS: any; [Symbol.iterator]: any; }; classList: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; className: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly clientHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly currentCSSZoom: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; id: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; innerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly localName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly namespaceURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; onfullscreenchange: unknown; onfullscreenerror: unknown; outerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; part: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; readonly prefix: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly scrollHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly scrollWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly shadowRoot: { readonly clonable: any; readonly delegatesFocus: any; readonly host: any; innerHTML: any; readonly mode: any; onslotchange: any; readonly serializable: any; readonly slotAssignment: any; getHTML: any; setHTMLUnsafe: any; addEventListener: any; removeEventListener: any; readonly ownerDocument: any; getElementById: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; }; slot: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly tagName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; attachShadow: unknown; checkVisibility: unknown; closest: unknown; computedStyleMap: unknown; getAttribute: unknown; getAttributeNS: unknown; getAttributeNames: unknown; getAttributeNode: unknown; getAttributeNodeNS: unknown; getBoundingClientRect: unknown; getClientRects: unknown; getElementsByClassName: unknown; getElementsByTagName: unknown; getElementsByTagNameNS: unknown; getHTML: unknown; hasAttribute: unknown; hasAttributeNS: unknown; hasAttributes: unknown; hasPointerCapture: unknown; insertAdjacentElement: unknown; insertAdjacentHTML: unknown; insertAdjacentText: unknown; matches: unknown; releasePointerCapture: unknown; removeAttribute: unknown; removeAttributeNS: unknown; removeAttributeNode: unknown; requestFullscreen: unknown; requestPointerLock: unknown; scroll: unknown; scrollBy: unknown; scrollIntoView: unknown; scrollTo: unknown; setAttribute: unknown; setAttributeNS: unknown; setAttributeNode: unknown; setAttributeNodeNS: unknown; setHTMLUnsafe: unknown; setPointerCapture: unknown; toggleAttribute: unknown; webkitMatchesSelector: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; addEventListener: unknown; removeEventListener: unknown; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; dispatchEvent: unknown; ariaActiveDescendantElement: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; ariaAtomic: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaAutoComplete: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBusy: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaChecked: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaControlsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaCurrent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDescribedByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDetailsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDisabled: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaErrorMessageElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaExpanded: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaFlowToElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaHasPopup: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaHidden: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaInvalid: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaKeyShortcuts: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabelledByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaLevel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLive: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaModal: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiLine: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiSelectable: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOrientation: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOwnsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaPlaceholder: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPosInSet: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPressed: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaReadOnly: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRelevant: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRequired: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSelected: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSetSize: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSort: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMax: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMin: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueNow: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; role: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; animate: unknown; getAnimations: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly childElementCount: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly children: { namedItem: any; readonly length: any; item: any; [Symbol.iterator]: any; }; readonly firstElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly lastElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; append: unknown; moveBefore: unknown; prepend: unknown; querySelector: unknown; querySelectorAll: unknown; replaceChildren: unknown; readonly assignedSlot: { name: any; assign: any; assignedElements: any; assignedNodes: any; addEventListener: any; removeEventListener: any; accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; } | { readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; readonly target: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; data: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; appendData: unknown; deleteData: unknown; insertData: unknown; replaceData: unknown; substringData: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; addEventListener: unknown; dispatchEvent: unknown; removeEventListener: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly sheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; }>'. !!! error TS2345: Type 'Element' is not assignable to type 'Deep<{ readonly attributes: { readonly length: any; getNamedItem: any; getNamedItemNS: any; item: any; removeNamedItem: any; removeNamedItemNS: any; setNamedItem: any; setNamedItemNS: any; [Symbol.iterator]: any; }; classList: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; className: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly clientHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly currentCSSZoom: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; id: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; innerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly localName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly namespaceURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; onfullscreenchange: unknown; onfullscreenerror: unknown; outerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; part: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; readonly prefix: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly scrollHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly scrollWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly shadowRoot: { readonly clonable: any; readonly delegatesFocus: any; readonly host: any; innerHTML: any; readonly mode: any; onslotchange: any; readonly serializable: any; readonly slotAssignment: any; getHTML: any; setHTMLUnsafe: any; addEventListener: any; removeEventListener: any; readonly ownerDocument: any; getElementById: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; }; slot: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly tagName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; attachShadow: unknown; checkVisibility: unknown; closest: unknown; computedStyleMap: unknown; getAttribute: unknown; getAttributeNS: unknown; getAttributeNames: unknown; getAttributeNode: unknown; getAttributeNodeNS: unknown; getBoundingClientRect: unknown; getClientRects: unknown; getElementsByClassName: unknown; getElementsByTagName: unknown; getElementsByTagNameNS: unknown; getHTML: unknown; hasAttribute: unknown; hasAttributeNS: unknown; hasAttributes: unknown; hasPointerCapture: unknown; insertAdjacentElement: unknown; insertAdjacentHTML: unknown; insertAdjacentText: unknown; matches: unknown; releasePointerCapture: unknown; removeAttribute: unknown; removeAttributeNS: unknown; removeAttributeNode: unknown; requestFullscreen: unknown; requestPointerLock: unknown; scroll: unknown; scrollBy: unknown; scrollIntoView: unknown; scrollTo: unknown; setAttribute: unknown; setAttributeNS: unknown; setAttributeNode: unknown; setAttributeNodeNS: unknown; setHTMLUnsafe: unknown; setPointerCapture: unknown; toggleAttribute: unknown; webkitMatchesSelector: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; addEventListener: unknown; removeEventListener: unknown; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; dispatchEvent: unknown; ariaActiveDescendantElement: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; ariaAtomic: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaAutoComplete: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBusy: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaChecked: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaControlsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaCurrent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDescribedByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDetailsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDisabled: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaErrorMessageElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaExpanded: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaFlowToElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaHasPopup: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaHidden: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaInvalid: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaKeyShortcuts: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabelledByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaLevel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLive: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaModal: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiLine: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiSelectable: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOrientation: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOwnsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaPlaceholder: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPosInSet: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPressed: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaReadOnly: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRelevant: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRequired: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSelected: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSetSize: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSort: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMax: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMin: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueNow: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; role: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; animate: unknown; getAnimations: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly childElementCount: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly children: { namedItem: any; readonly length: any; item: any; [Symbol.iterator]: any; }; readonly firstElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly lastElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; append: unknown; moveBefore: unknown; prepend: unknown; querySelector: unknown; querySelectorAll: unknown; replaceChildren: unknown; readonly assignedSlot: { name: any; assign: any; assignedElements: any; assignedNodes: any; addEventListener: any; removeEventListener: any; accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; } | { readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; readonly target: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; data: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; appendData: unknown; deleteData: unknown; insertData: unknown; replaceData: unknown; substringData: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; addEventListener: unknown; dispatchEvent: unknown; removeEventListener: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly sheet: { readonly cssRules: any; readonly ownerRule: any; readonly rules: any; addRule: any; deleteRule: any; insertRule: any; removeRule: any; replace: any; replaceSync: any; disabled: any; readonly href: any; media: any; readonly ownerNode: any; readonly parentStyleSheet: any; readonly title: any; readonly type: any; }; }>'. -!!! error TS2345: Type 'Element' is not assignable to type 'Deep<{ readonly attributes: { readonly length: any; getNamedItem: any; getNamedItemNS: any; item: any; removeNamedItem: any; removeNamedItemNS: any; setNamedItem: any; setNamedItemNS: any; [Symbol.iterator]: any; }; classList: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; className: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly clientHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly clientWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly currentCSSZoom: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; id: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; innerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly localName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly namespaceURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; onfullscreenchange: unknown; onfullscreenerror: unknown; outerHTML: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly ownerDocument: { readonly URL: any; alinkColor: any; readonly all: any; readonly anchors: any; readonly applets: any; bgColor: any; body: any; readonly characterSet: any; readonly charset: any; readonly compatMode: any; readonly contentType: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; readonly documentElement: any; readonly documentURI: any; domain: any; readonly embeds: any; fgColor: any; readonly forms: any; readonly fragmentDirective: any; readonly fullscreen: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; readonly images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; readonly links: any; location: any; onfullscreenchange: any; onfullscreenerror: any; onpointerlockchange: any; onpointerlockerror: any; onreadystatechange: any; onvisibilitychange: any; readonly ownerDocument: any; readonly pictureInPictureEnabled: any; readonly plugins: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; readonly scripts: any; readonly scrollingElement: any; readonly timeline: any; title: any; readonly visibilityState: any; vlinkColor: any; adoptNode: any; captureEvents: any; caretPositionFromPoint: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createEvent: any; createNodeIterator: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTreeWalker: any; execCommand: any; exitFullscreen: any; exitPictureInPicture: any; exitPointerLock: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; hasStorageAccess: any; importNode: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandValue: any; releaseEvents: any; requestStorageAccess: any; startViewTransition: any; write: any; writeln: any; readonly textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; readonly fonts: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; createExpression: any; createNSResolver: any; evaluate: any; }; part: { readonly length: any; value: any; toString: any; add: any; contains: any; item: any; remove: any; replace: any; supports: any; toggle: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; }; readonly prefix: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly scrollHeight: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollLeft: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; scrollTop: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly scrollWidth: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly shadowRoot: { readonly clonable: any; readonly delegatesFocus: any; readonly host: any; innerHTML: any; readonly mode: any; onslotchange: any; readonly serializable: any; readonly slotAssignment: any; getHTML: any; setHTMLUnsafe: any; addEventListener: any; removeEventListener: any; readonly ownerDocument: any; getElementById: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly activeElement: any; adoptedStyleSheets: any; readonly fullscreenElement: any; readonly pictureInPictureElement: any; readonly pointerLockElement: any; readonly styleSheets: any; elementFromPoint: any; elementsFromPoint: any; getAnimations: any; }; slot: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly tagName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; attachShadow: unknown; checkVisibility: unknown; closest: unknown; computedStyleMap: unknown; getAttribute: unknown; getAttributeNS: unknown; getAttributeNames: unknown; getAttributeNode: unknown; getAttributeNodeNS: unknown; getBoundingClientRect: unknown; getClientRects: unknown; getElementsByClassName: unknown; getElementsByTagName: unknown; getElementsByTagNameNS: unknown; getHTML: unknown; hasAttribute: unknown; hasAttributeNS: unknown; hasAttributes: unknown; hasPointerCapture: unknown; insertAdjacentElement: unknown; insertAdjacentHTML: unknown; insertAdjacentText: unknown; matches: unknown; releasePointerCapture: unknown; removeAttribute: unknown; removeAttributeNS: unknown; removeAttributeNode: unknown; requestFullscreen: unknown; requestPointerLock: unknown; scroll: unknown; scrollBy: unknown; scrollIntoView: unknown; scrollTo: unknown; setAttribute: unknown; setAttributeNS: unknown; setAttributeNode: unknown; setAttributeNodeNS: unknown; setHTMLUnsafe: unknown; setPointerCapture: unknown; toggleAttribute: unknown; webkitMatchesSelector: unknown; textContent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; addEventListener: unknown; removeEventListener: unknown; readonly baseURI: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly childNodes: { item: any; forEach: any; entries: any; keys: any; values: any; [Symbol.iterator]: any; readonly length: any; }; readonly firstChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly isConnected: { valueOf: any; }; readonly lastChild: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nextSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly nodeName: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly nodeType: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; nodeValue: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; readonly parentElement: { accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; addEventListener: any; removeEventListener: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; readonly parentNode: { readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; readonly previousSibling: { after: any; before: any; remove: any; replaceWith: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; appendChild: unknown; cloneNode: unknown; compareDocumentPosition: unknown; contains: unknown; getRootNode: unknown; hasChildNodes: unknown; insertBefore: unknown; isDefaultNamespace: unknown; isEqualNode: unknown; isSameNode: unknown; lookupNamespaceURI: unknown; lookupPrefix: unknown; normalize: unknown; removeChild: unknown; replaceChild: unknown; readonly ELEMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ATTRIBUTE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CDATA_SECTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_REFERENCE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly ENTITY_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PROCESSING_INSTRUCTION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COMMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_TYPE_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_FRAGMENT_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NOTATION_NODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_DISCONNECTED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_PRECEDING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_FOLLOWING: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_CONTAINED_BY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; dispatchEvent: unknown; ariaActiveDescendantElement: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; ariaAtomic: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaAutoComplete: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBrailleRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaBusy: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaChecked: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaColSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaControlsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaCurrent: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDescribedByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaDetailsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaDisabled: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaErrorMessageElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaExpanded: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaFlowToElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaHasPopup: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaHidden: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaInvalid: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaKeyShortcuts: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLabelledByElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaLevel: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaLive: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaModal: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiLine: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaMultiSelectable: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOrientation: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaOwnsElements: readonly { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }[]; ariaPlaceholder: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPosInSet: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaPressed: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaReadOnly: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRelevant: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRequired: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRoleDescription: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowCount: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndex: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowIndexText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaRowSpan: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSelected: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSetSize: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaSort: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMax: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueMin: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueNow: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; ariaValueText: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; role: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; animate: unknown; getAnimations: unknown; after: unknown; before: unknown; remove: unknown; replaceWith: unknown; readonly nextElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly previousElementSibling: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly childElementCount: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly children: { namedItem: any; readonly length: any; item: any; [Symbol.iterator]: any; }; readonly firstElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; readonly lastElementChild: { readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; addEventListener: any; removeEventListener: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; }; append: unknown; moveBefore: unknown; prepend: unknown; querySelector: unknown; querySelectorAll: unknown; replaceChildren: unknown; readonly assignedSlot: { name: any; assign: any; assignedElements: any; assignedNodes: any; addEventListener: any; removeEventListener: any; accessKey: any; readonly accessKeyLabel: any; autocapitalize: any; autocorrect: any; dir: any; draggable: any; hidden: any; inert: any; innerText: any; lang: any; readonly offsetHeight: any; readonly offsetLeft: any; readonly offsetParent: any; readonly offsetTop: any; readonly offsetWidth: any; outerText: any; popover: any; spellcheck: any; title: any; translate: any; writingSuggestions: any; attachInternals: any; click: any; hidePopover: any; showPopover: any; togglePopover: any; readonly attributes: any; classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; readonly currentCSSZoom: any; id: any; innerHTML: any; readonly localName: any; readonly namespaceURI: any; onfullscreenchange: any; onfullscreenerror: any; outerHTML: any; readonly ownerDocument: any; part: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly shadowRoot: any; slot: any; readonly tagName: any; attachShadow: any; checkVisibility: any; closest: any; computedStyleMap: any; getAttribute: any; getAttributeNS: any; getAttributeNames: any; getAttributeNode: any; getAttributeNodeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByClassName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getHTML: any; hasAttribute: any; hasAttributeNS: any; hasAttributes: any; hasPointerCapture: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; matches: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNS: any; removeAttributeNode: any; requestFullscreen: any; requestPointerLock: any; scroll: any; scrollBy: any; scrollIntoView: any; scrollTo: any; setAttribute: any; setAttributeNS: any; setAttributeNode: any; setAttributeNodeNS: any; setHTMLUnsafe: any; setPointerCapture: any; toggleAttribute: any; webkitMatchesSelector: any; textContent: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; dispatchEvent: any; ariaActiveDescendantElement: any; ariaAtomic: any; ariaAutoComplete: any; ariaBrailleLabel: any; ariaBrailleRoleDescription: any; ariaBusy: any; ariaChecked: any; ariaColCount: any; ariaColIndex: any; ariaColIndexText: any; ariaColSpan: any; ariaControlsElements: any; ariaCurrent: any; ariaDescribedByElements: any; ariaDescription: any; ariaDetailsElements: any; ariaDisabled: any; ariaErrorMessageElements: any; ariaExpanded: any; ariaFlowToElements: any; ariaHasPopup: any; ariaHidden: any; ariaInvalid: any; ariaKeyShortcuts: any; ariaLabel: any; ariaLabelledByElements: any; ariaLevel: any; ariaLive: any; ariaModal: any; ariaMultiLine: any; ariaMultiSelectable: any; ariaOrientation: any; ariaOwnsElements: any; ariaPlaceholder: any; ariaPosInSet: any; ariaPressed: any; ariaReadOnly: any; ariaRelevant: any; ariaRequired: any; ariaRoleDescription: any; ariaRowCount: any; ariaRowIndex: any; ariaRowIndexText: any; ariaRowSpan: any; ariaSelected: any; ariaSetSize: any; ariaSort: any; ariaValueMax: any; ariaValueMin: any; ariaValueNow: any; ariaValueText: any; role: any; animate: any; getAnimations: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly childElementCount: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; append: any; moveBefore: any; prepend: any; querySelector: any; querySelectorAll: any; replaceChildren: any; readonly assignedSlot: any; readonly attributeStyleMap: any; style: any; contentEditable: any; enterKeyHint: any; inputMode: any; readonly isContentEditable: any; onabort: any; onanimationcancel: any; onanimationend: any; onanimationiteration: any; onanimationstart: any; onauxclick: any; onbeforeinput: any; onbeforematch: any; onbeforetoggle: any; onblur: any; oncancel: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; onclose: any; oncontextlost: any; oncontextmenu: any; oncontextrestored: any; oncopy: any; oncuechange: any; oncut: any; ondblclick: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onformdata: any; ongotpointercapture: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onlostpointercapture: any; onmousedown: any; onmouseenter: any; onmouseleave: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onpaste: any; onpause: any; onplay: any; onplaying: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerrawupdate: any; onpointerup: any; onprogress: any; onratechange: any; onreset: any; onresize: any; onscroll: any; onscrollend: any; onsecuritypolicyviolation: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onslotchange: any; onstalled: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontoggle: any; ontouchcancel?: any; ontouchend?: any; ontouchmove?: any; ontouchstart?: any; ontransitioncancel: any; ontransitionend: any; ontransitionrun: any; ontransitionstart: any; onvolumechange: any; onwaiting: any; onwebkitanimationend: any; onwebkitanimationiteration: any; onwebkitanimationstart: any; onwebkittransitionend: any; onwheel: any; autofocus: any; readonly dataset: any; nonce: any; tabIndex: any; blur: any; focus: any; }; }>'. -!!! error TS2345: The types of 'ownerDocument.defaultView.frames.self.globalThis.IDBCursor.prototype.key' are incompatible between these types. -!!! error TS2345: Type 'IDBValidKey' is not assignable to type 'Deep<{ toString: unknown; toFixed: unknown; toExponential: unknown; toPrecision: unknown; valueOf: unknown; toLocaleString: unknown; } | { toString: unknown; charAt: unknown; charCodeAt: unknown; concat: unknown; indexOf: unknown; lastIndexOf: unknown; localeCompare: unknown; match: unknown; replace: unknown; search: unknown; slice: unknown; split: unknown; substring: unknown; toLowerCase: unknown; toLocaleLowerCase: unknown; toUpperCase: unknown; toLocaleUpperCase: unknown; trim: unknown; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; substr: unknown; valueOf: unknown; codePointAt: unknown; includes: unknown; endsWith: unknown; normalize: unknown; repeat: unknown; startsWith: unknown; anchor: unknown; big: unknown; blink: unknown; bold: unknown; fixed: unknown; fontcolor: unknown; fontsize: unknown; italics: unknown; link: unknown; small: unknown; strike: unknown; sub: unknown; sup: unknown; [Symbol.iterator]: unknown; } | { readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; slice: unknown; readonly [Symbol.toStringTag]: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; } | { toString: unknown; toDateString: unknown; toTimeString: unknown; toLocaleString: unknown; toLocaleDateString: unknown; toLocaleTimeString: unknown; valueOf: unknown; getTime: unknown; getFullYear: unknown; getUTCFullYear: unknown; getMonth: unknown; getUTCMonth: unknown; getDate: unknown; getUTCDate: unknown; getDay: unknown; getUTCDay: unknown; getHours: unknown; getUTCHours: unknown; getMinutes: unknown; getUTCMinutes: unknown; getSeconds: unknown; getUTCSeconds: unknown; getMilliseconds: unknown; getUTCMilliseconds: unknown; getTimezoneOffset: unknown; setTime: unknown; setMilliseconds: unknown; setUTCMilliseconds: unknown; setSeconds: unknown; setUTCSeconds: unknown; setMinutes: unknown; setUTCMinutes: unknown; setHours: unknown; setUTCHours: unknown; setDate: unknown; setUTCDate: unknown; setMonth: unknown; setUTCMonth: unknown; setFullYear: unknown; setUTCFullYear: unknown; toUTCString: unknown; toISOString: unknown; toJSON: unknown; [Symbol.toPrimitive]: unknown; } | { readonly buffer: { readonly byteLength: any; slice: any; readonly [Symbol.toStringTag]: any; }; readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly byteOffset: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; }>'. -!!! error TS2345: Type 'IDBValidKey[]' is not assignable to type 'Deep<{ toString: unknown; toFixed: unknown; toExponential: unknown; toPrecision: unknown; valueOf: unknown; toLocaleString: unknown; } | { toString: unknown; charAt: unknown; charCodeAt: unknown; concat: unknown; indexOf: unknown; lastIndexOf: unknown; localeCompare: unknown; match: unknown; replace: unknown; search: unknown; slice: unknown; split: unknown; substring: unknown; toLowerCase: unknown; toLocaleLowerCase: unknown; toUpperCase: unknown; toLocaleUpperCase: unknown; trim: unknown; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; substr: unknown; valueOf: unknown; codePointAt: unknown; includes: unknown; endsWith: unknown; normalize: unknown; repeat: unknown; startsWith: unknown; anchor: unknown; big: unknown; blink: unknown; bold: unknown; fixed: unknown; fontcolor: unknown; fontsize: unknown; italics: unknown; link: unknown; small: unknown; strike: unknown; sub: unknown; sup: unknown; [Symbol.iterator]: unknown; } | { readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; slice: unknown; readonly [Symbol.toStringTag]: { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; [Symbol.iterator]: any; }; } | { toString: unknown; toDateString: unknown; toTimeString: unknown; toLocaleString: unknown; toLocaleDateString: unknown; toLocaleTimeString: unknown; valueOf: unknown; getTime: unknown; getFullYear: unknown; getUTCFullYear: unknown; getMonth: unknown; getUTCMonth: unknown; getDate: unknown; getUTCDate: unknown; getDay: unknown; getUTCDay: unknown; getHours: unknown; getUTCHours: unknown; getMinutes: unknown; getUTCMinutes: unknown; getSeconds: unknown; getUTCSeconds: unknown; getMilliseconds: unknown; getUTCMilliseconds: unknown; getTimezoneOffset: unknown; setTime: unknown; setMilliseconds: unknown; setUTCMilliseconds: unknown; setSeconds: unknown; setUTCSeconds: unknown; setMinutes: unknown; setUTCMinutes: unknown; setHours: unknown; setUTCHours: unknown; setDate: unknown; setUTCDate: unknown; setMonth: unknown; setUTCMonth: unknown; setFullYear: unknown; setUTCFullYear: unknown; toUTCString: unknown; toISOString: unknown; toJSON: unknown; [Symbol.toPrimitive]: unknown; } | { readonly buffer: { readonly byteLength: any; slice: any; readonly [Symbol.toStringTag]: any; }; readonly byteLength: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly byteOffset: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; }>'. -!!! error TS2345: Type 'IDBValidKey[]' is missing the following properties from type 'Deep<{ toString: unknown; charAt: unknown; charCodeAt: unknown; concat: unknown; indexOf: unknown; lastIndexOf: unknown; localeCompare: unknown; match: unknown; replace: unknown; search: unknown; slice: unknown; split: unknown; substring: unknown; toLowerCase: unknown; toLocaleLowerCase: unknown; toUpperCase: unknown; toLocaleUpperCase: unknown; trim: unknown; readonly length: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; substr: unknown; valueOf: unknown; codePointAt: unknown; includes: unknown; endsWith: unknown; normalize: unknown; repeat: unknown; startsWith: unknown; anchor: unknown; big: unknown; blink: unknown; bold: unknown; fixed: unknown; fontcolor: unknown; fontsize: unknown; italics: unknown; link: unknown; small: unknown; strike: unknown; sub: unknown; sup: unknown; [Symbol.iterator]: unknown; }>': charAt, charCodeAt, localeCompare, match, and 29 more. out2.responseXML out2.responseXML.activeElement.className.length \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index b84f220cd62a0..c7ebef6f01145 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -2,9 +2,9 @@ === Performance Stats === Assignability cache: 5,000 -Type Count: 25,000 +Type Count: 10,000 Instantiation count: 250,000 -Symbol count: 250,000 +Symbol count: 100,000 === mappedTypeRecursiveInference.ts === interface A { a: A } diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt new file mode 100644 index 0000000000000..803caf28a077e --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt @@ -0,0 +1,22 @@ +typeInferenceSelfIndexingTypeParameter2.ts(8,3): error TS2322: Type 'string' is not assignable to type 'never'. +typeInferenceSelfIndexingTypeParameter2.ts(9,3): error TS2322: Type 'number' is not assignable to type 'never'. + + +==== typeInferenceSelfIndexingTypeParameter2.ts (2 errors) ==== + declare function f( + arg: { + [K in keyof T]: T[K][keyof T[K]]; + } + ): T; + + const res1 = f({ + a: "hello", + ~ +!!! error TS2322: Type 'string' is not assignable to type 'never'. +!!! related TS6500 typeInferenceSelfIndexingTypeParameter2.ts:8:3: The expected type comes from property 'a' which is declared here on type '{ a: never; b: never; }' + b: 100, + ~ +!!! error TS2322: Type 'number' is not assignable to type 'never'. +!!! related TS6500 typeInferenceSelfIndexingTypeParameter2.ts:9:3: The expected type comes from property 'b' which is declared here on type '{ a: never; b: never; }' + }); + \ No newline at end of file diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols new file mode 100644 index 0000000000000..d24255dd2c1a8 --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols @@ -0,0 +1,33 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts] //// + +=== typeInferenceSelfIndexingTypeParameter2.ts === +declare function f( +>f : Symbol(f, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) + + arg: { +>arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 22)) + + [K in keyof T]: T[K][keyof T[K]]; +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 5)) + } +): T; +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) + +const res1 = f({ +>res1 : Symbol(res1, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 6, 5)) +>f : Symbol(f, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) + + a: "hello", +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 6, 16)) + + b: 100, +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 13)) + +}); + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types new file mode 100644 index 0000000000000..2b3d219cf1987 --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types @@ -0,0 +1,39 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts] //// + +=== typeInferenceSelfIndexingTypeParameter2.ts === +declare function f( +>f : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T +> : ^ ^^ ^^ ^^^^^ + + arg: { +>arg : { [K in keyof T]: T[K][keyof T[K]]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + [K in keyof T]: T[K][keyof T[K]]; + } +): T; + +const res1 = f({ +>res1 : { a: PartialInference; b: PartialInference; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f({ a: "hello", b: 100,}) : { a: PartialInference; b: PartialInference; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T +> : ^ ^^ ^^ ^^^^^ +>{ a: "hello", b: 100,} : { a: string; b: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + + a: "hello", +>a : string +> : ^^^^^^ +>"hello" : "hello" +> : ^^^^^^^ + + b: 100, +>b : number +> : ^^^^^^ +>100 : 100 +> : ^^^ + +}); + diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts new file mode 100644 index 0000000000000..c5872e0408c18 --- /dev/null +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts @@ -0,0 +1,13 @@ +// @strict: true +// @noEmit: true + +declare function f( + arg: { + [K in keyof T]: T[K][keyof T[K]]; + } +): T; + +const res1 = f({ + a: "hello", + b: 100, +}); From a390703c1f4aecdd18fce7a7832cbb3c824f9057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Mon, 1 Dec 2025 19:00:59 +0100 Subject: [PATCH 21/29] experiment further --- src/compiler/checker.ts | 28 ++- ...completionsCommitCharactersGlobal.baseline | 12 +- .../baselines/reference/inferingFromAny.types | 4 +- ...enceIndexingUsingOtherTypeParameter1.types | 8 +- ...renceSelfIndexingTypeParameter1.errors.txt | 39 +++++ ...nferenceSelfIndexingTypeParameter1.symbols | 19 +- ...eInferenceSelfIndexingTypeParameter1.types | 66 +++---- ...renceSelfIndexingTypeParameter2.errors.txt | 59 +++++-- ...nferenceSelfIndexingTypeParameter2.symbols | 128 ++++++++++---- ...eInferenceSelfIndexingTypeParameter2.types | 163 ++++++++++++++---- ...nferenceSelfIndexingTypeParameter3.symbols | 109 ++++++++++++ ...eInferenceSelfIndexingTypeParameter3.types | 142 +++++++++++++++ ...typeInferenceSelfIndexingTypeParameter1.ts | 6 +- ...typeInferenceSelfIndexingTypeParameter2.ts | 40 +++-- ...typeInferenceSelfIndexingTypeParameter3.ts | 41 +++++ 15 files changed, 712 insertions(+), 152 deletions(-) create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types create mode 100644 tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index efcd6e67f859c..412461dfb5f43 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2304,6 +2304,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var deferredGlobalBigIntType: ObjectType | undefined; var deferredGlobalNaNSymbol: Symbol | undefined; var deferredGlobalRecordSymbol: Symbol | undefined; + var deferredGlobalPartialInferenceSymbol: Symbol | undefined; var deferredGlobalClassDecoratorContextType: GenericType | undefined; var deferredGlobalClassMethodDecoratorContextType: GenericType | undefined; var deferredGlobalClassGetterDecoratorContextType: GenericType | undefined; @@ -17632,6 +17633,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return deferredGlobalRecordSymbol === unknownSymbol ? undefined : deferredGlobalRecordSymbol; } + function getGlobalPartialInferenceSymbol(): Symbol | undefined { + deferredGlobalPartialInferenceSymbol ||= getGlobalTypeAliasSymbol("PartialInference" as __String, /*arity*/ 2, /*reportErrors*/ false) || unknownSymbol; + return deferredGlobalPartialInferenceSymbol === unknownSymbol ? undefined : deferredGlobalPartialInferenceSymbol; + } + /** * Instantiates a global type that is generic with some element type, and returns that instantiation. */ @@ -26908,11 +26914,17 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (!inference.isFixed) { // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` // Where `T` is `source` and `Keys` is `target.indexType` - const inferenceTypeSymbol = getGlobalSymbol("PartialInference" as __String, SymbolFlags.Type, Diagnostics.Cannot_find_global_type_0); - const inferenceType = inferenceTypeSymbol && getDeclaredTypeOfSymbol(inferenceTypeSymbol); - if (inferenceType && inferenceType !== unknownType) { - const mapper = createTypeMapper(getSymbolLinks(inferenceTypeSymbol).typeParameters!, [source, (target as IndexedAccessType).indexType]); - inference.indexes = append(inference.indexes, instantiateType(inferenceType, mapper)); + const partialInferenceTypeSymbol = getGlobalPartialInferenceSymbol(); + if (partialInferenceTypeSymbol) { + if ((target as IndexedAccessType).indexType.flags & TypeFlags.Instantiable) { + const recordSymbol = getGlobalRecordSymbol(); + if (recordSymbol) { + inference.indexes = append(inference.indexes, getTypeAliasInstantiation(recordSymbol, [(target as IndexedAccessType).indexType, source])); + } + } + else { + inference.indexes = append(inference.indexes, getTypeAliasInstantiation(partialInferenceTypeSymbol, [source, (target as IndexedAccessType).indexType])); + } } } } @@ -27590,7 +27602,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { fallbackType = preferCovariantType ? inferredContravariantType : inferredCovariantType; } else if (inference.indexes) { - let aggregateInference = getIntersectionType(inference.indexes); + const eraseSelfMapper = makeUnaryTypeMapper(inference.typeParameter, allKeysUnknownType); + let aggregateInference = instantiateType(getIntersectionType(inference.indexes), mergeTypeMappers(eraseSelfMapper, context.nonFixingMapper)); const constraint = getConstraintOfTypeParameter(inference.typeParameter); if (constraint) { const instantiatedConstraint = instantiateType(constraint, context.nonFixingMapper); @@ -27620,8 +27633,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } } - const eraseSelfMapper = makeUnaryTypeMapper(inference.typeParameter, allKeysUnknownType); - inferredType = instantiateType(aggregateInference, mergeTypeMappers(eraseSelfMapper, context.nonFixingMapper)); + inferredType = aggregateInference; } else if (context.flags & InferenceFlags.NoDefault) { // We use silentNeverType as the wildcard that signals no inferences. diff --git a/tests/baselines/reference/completionsCommitCharactersGlobal.baseline b/tests/baselines/reference/completionsCommitCharactersGlobal.baseline index a1fe196f256da..a2654d549c348 100644 --- a/tests/baselines/reference/completionsCommitCharactersGlobal.baseline +++ b/tests/baselines/reference/completionsCommitCharactersGlobal.baseline @@ -2692,7 +2692,7 @@ // | type ParameterDecorator = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => void // | type Parameters any> = T extends (...args: infer P) => any ? P : never // | type Partial = { [P in keyof T]?: T[P]; } -// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] +// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] // | type Pick = { [P in K]: T[P]; } // | interface Promise // | type PromiseConstructorLike = new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike @@ -2873,7 +2873,7 @@ // | type ParameterDecorator = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => void // | type Parameters any> = T extends (...args: infer P) => any ? P : never // | type Partial = { [P in keyof T]?: T[P]; } -// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] +// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] // | type Pick = { [P in K]: T[P]; } // | interface Promise // | type PromiseConstructorLike = new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike @@ -80663,8 +80663,8 @@ "kind": "space" }, { - "text": "string", - "kind": "keyword" + "text": "PropertyKey", + "kind": "aliasName" }, { "text": ">", @@ -90340,8 +90340,8 @@ "kind": "space" }, { - "text": "string", - "kind": "keyword" + "text": "PropertyKey", + "kind": "aliasName" }, { "text": ">", diff --git a/tests/baselines/reference/inferingFromAny.types b/tests/baselines/reference/inferingFromAny.types index a959f6dc9557a..d8639f2f9aaed 100644 --- a/tests/baselines/reference/inferingFromAny.types +++ b/tests/baselines/reference/inferingFromAny.types @@ -279,8 +279,8 @@ var a = f18(a); var a = f19(a, a); >a : any ->f19(a, a) : { [x: string]: any; } -> : ^^^^^^^^^^^^^^^^^^^^^ +>f19(a, a) : Record +> : ^^^^^^^^^^^^^^^^ >f19 : (k: K, x: T[K]) => T > : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >a : any diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types index 331b1469ae173..b21f649f54f10 100644 --- a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types @@ -98,10 +98,10 @@ declare function useController< export const { name, values } = useController({ >name : "test" > : ^^^^^^ ->values : { test: string; } -> : ^^^^^^^^^^^^^^^^^ ->useController({ name: "test", defaultValue: "",}) : { name: "test"; values: { test: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : Record<"test", string> +> : ^^^^^^^^^^^^^^^^^^^^^^ +>useController({ name: "test", defaultValue: "",}) : { name: "test"; values: Record<"test", string>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >useController : = Path>(props: UseControllerProps) => { name: TName; values: TFieldValues; } > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ name: "test", defaultValue: "",} : { name: "test"; defaultValue: string; } diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt new file mode 100644 index 0000000000000..ba1eca3a82d9c --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt @@ -0,0 +1,39 @@ +typeInferenceSelfIndexingTypeParameter1.ts(30,50): error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type 'Comparator>'. + Property 'rangeStart' is missing in type 'Record<"sourceOrder", number>' but required in type 'Record<"rangeStart", number>'. + + +==== typeInferenceSelfIndexingTypeParameter1.ts (1 errors) ==== + type Comparator = (a: T, b: T) => -1 | 0 | 1; + + declare const createComparator: ( + property: K, + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, + ) => Comparator; + + declare const concatComparators: ( + c1: Comparator, + c2: Comparator, + ...cRest: Comparator[] + ) => Comparator; + + declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; + + declare class ModuleGraphConnection { + clone(): ModuleGraphConnection; + } + + const bySourceOrder = createComparator("sourceOrder", compareNumbers); + const byRangeStart = createComparator("rangeStart", compareNumbers); + + declare const references: { + connection: ModuleGraphConnection; + sourceOrder: number; + rangeStart: number | undefined; + defer?: boolean; + }[]; + + references.sort(concatComparators(bySourceOrder, byRangeStart)); + ~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type 'Comparator>'. +!!! error TS2345: Property 'rangeStart' is missing in type 'Record<"sourceOrder", number>' but required in type 'Record<"rangeStart", number>'. + \ No newline at end of file diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols index 55517ccb7f5ef..cae82a94f6a20 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols @@ -9,21 +9,24 @@ type Comparator = (a: T, b: T) => -1 | 0 | 1; >b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 27)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 16)) -declare const createComparator: ( +declare const createComparator: ( >createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) - property: string, ->property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 37)) + property: K, +>property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 55)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) - comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, ->comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 19)) + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, +>comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 14)) >a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 15)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 23)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) ->b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 29)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) ) => Comparator; >Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types index 124ecc3e5889e..7e68e88895b57 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types @@ -13,21 +13,21 @@ type Comparator = (a: T, b: T) => -1 | 0 | 1; >1 : 1 > : ^ -declare const createComparator: ( ->createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ - - property: string, ->property : string -> : ^^^^^^ - - comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, ->comparator : (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1 -> : ^ ^^ ^^ ^^ ^^^^^ ->a : T[keyof T] -> : ^^^^^^^^^^ ->b : T[keyof T] -> : ^^^^^^^^^^ +declare const createComparator: ( +>createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ + + property: K, +>property : K +> : ^ + + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, +>comparator : (a: T[K], b: T[K]) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : T[K] +> : ^^^^ +>b : T[K] +> : ^^^^ >-1 : -1 > : ^^ >1 : 1 @@ -75,24 +75,24 @@ declare class ModuleGraphConnection { } const bySourceOrder = createComparator("sourceOrder", compareNumbers); ->bySourceOrder : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator("sourceOrder", compareNumbers) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("sourceOrder", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >"sourceOrder" : "sourceOrder" > : ^^^^^^^^^^^^^ >compareNumbers : (a: number, b: number) => 0 | 1 | -1 > : ^ ^^ ^^ ^^ ^^^^^ const byRangeStart = createComparator("rangeStart", compareNumbers); ->byRangeStart : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator("rangeStart", compareNumbers) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("rangeStart", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >"rangeStart" : "rangeStart" > : ^^^^^^^^^^^^ >compareNumbers : (a: number, b: number) => 0 | 1 | -1 @@ -129,12 +129,12 @@ references.sort(concatComparators(bySourceOrder, byRangeStart)); > : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ >sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] > : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ->concatComparators(bySourceOrder, byRangeStart) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>concatComparators(bySourceOrder, byRangeStart) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator > : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ ->bySourceOrder : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->byRangeStart : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt index 803caf28a077e..2fc1d729437d1 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt @@ -1,22 +1,45 @@ -typeInferenceSelfIndexingTypeParameter2.ts(8,3): error TS2322: Type 'string' is not assignable to type 'never'. -typeInferenceSelfIndexingTypeParameter2.ts(9,3): error TS2322: Type 'number' is not assignable to type 'never'. +typeInferenceSelfIndexingTypeParameter2.ts(30,17): error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type '(a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }) => number'. + Types of parameters 'a' and 'a' are incompatible. + Type '{ connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }' is not assignable to type 'Record'. + Property 'connection' is incompatible with index signature. + Type 'ModuleGraphConnection' is not assignable to type 'number'. -==== typeInferenceSelfIndexingTypeParameter2.ts (2 errors) ==== - declare function f( - arg: { - [K in keyof T]: T[K][keyof T[K]]; - } - ): T; +==== typeInferenceSelfIndexingTypeParameter2.ts (1 errors) ==== + type Comparator = (a: T, b: T) => -1 | 0 | 1; - const res1 = f({ - a: "hello", - ~ -!!! error TS2322: Type 'string' is not assignable to type 'never'. -!!! related TS6500 typeInferenceSelfIndexingTypeParameter2.ts:8:3: The expected type comes from property 'a' which is declared here on type '{ a: never; b: never; }' - b: 100, - ~ -!!! error TS2322: Type 'number' is not assignable to type 'never'. -!!! related TS6500 typeInferenceSelfIndexingTypeParameter2.ts:9:3: The expected type comes from property 'b' which is declared here on type '{ a: never; b: never; }' - }); + declare const createComparator: ( + property: string, + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, + ) => Comparator; + + declare const concatComparators: ( + c1: Comparator, + c2: Comparator, + ...cRest: Comparator[] + ) => Comparator; + + declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; + + declare class ModuleGraphConnection { + clone(): ModuleGraphConnection; + } + + const bySourceOrder = createComparator("sourceOrder", compareNumbers); + const byRangeStart = createComparator("rangeStart", compareNumbers); + + declare const references: { + connection: ModuleGraphConnection; + sourceOrder: number; + rangeStart: number | undefined; + defer?: boolean; + }[]; + + references.sort(concatComparators(bySourceOrder, byRangeStart)); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type '(a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }) => number'. +!!! error TS2345: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2345: Type '{ connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }' is not assignable to type 'Record'. +!!! error TS2345: Property 'connection' is incompatible with index signature. +!!! error TS2345: Type 'ModuleGraphConnection' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols index d24255dd2c1a8..b28acf052c5d6 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols @@ -1,33 +1,103 @@ //// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts] //// === typeInferenceSelfIndexingTypeParameter2.ts === -declare function f( ->f : Symbol(f, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) - - arg: { ->arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 22)) - - [K in keyof T]: T[K][keyof T[K]]; ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 5)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 5)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 5)) - } -): T; ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 19)) - -const res1 = f({ ->res1 : Symbol(res1, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 6, 5)) ->f : Symbol(f, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) - - a: "hello", ->a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 6, 16)) - - b: 100, ->b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 13)) - -}); +type Comparator = (a: T, b: T) => -1 | 0 | 1; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 16)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 22)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 16)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 27)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 16)) + +declare const createComparator: ( +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) + + property: string, +>property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 37)) + + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +>comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 3, 19)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 4, 15)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 4, 29)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) + +) => Comparator; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) + +declare const concatComparators: ( +>concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 34)) + + c1: Comparator, +>c1 : Symbol(c1, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 38)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 34)) + + c2: Comparator, +>c2 : Symbol(c2, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 8, 20)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 34)) + + ...cRest: Comparator[] +>cRest : Symbol(cRest, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 9, 20)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 34)) + +) => Comparator; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 34)) + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 13)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 31)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 41)) + +declare class ModuleGraphConnection { +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 67)) + + clone(): ModuleGraphConnection; +>clone : Symbol(ModuleGraphConnection.clone, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 15, 37)) +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 67)) +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +>bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 19, 5)) +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 13)) +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 13)) + +const byRangeStart = createComparator("rangeStart", compareNumbers); +>byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 20, 5)) +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 13)) +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 13)) + +declare const references: { +>references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 22, 13)) + + connection: ModuleGraphConnection; +>connection : Symbol(connection, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 22, 27)) +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 13, 67)) + + sourceOrder: number; +>sourceOrder : Symbol(sourceOrder, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 23, 36)) + + rangeStart: number | undefined; +>rangeStart : Symbol(rangeStart, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 24, 22)) + + defer?: boolean; +>defer : Symbol(defer, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 25, 33)) + +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); +>references.sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) +>references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 22, 13)) +>sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) +>concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 7, 13)) +>bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 19, 5)) +>byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 20, 5)) diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types index 2b3d219cf1987..adcdc73ce7cb9 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types @@ -1,39 +1,140 @@ //// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts] //// === typeInferenceSelfIndexingTypeParameter2.ts === -declare function f( ->f : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T -> : ^ ^^ ^^ ^^^^^ - - arg: { ->arg : { [K in keyof T]: T[K][keyof T[K]]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - [K in keyof T]: T[K][keyof T[K]]; - } -): T; - -const res1 = f({ ->res1 : { a: PartialInference; b: PartialInference; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f({ a: "hello", b: 100,}) : { a: PartialInference; b: PartialInference; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T -> : ^ ^^ ^^ ^^^^^ ->{ a: "hello", b: 100,} : { a: string; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ - - a: "hello", ->a : string -> : ^^^^^^ ->"hello" : "hello" -> : ^^^^^^^ +type Comparator = (a: T, b: T) => -1 | 0 | 1; +>Comparator : Comparator +> : ^^^^^^^^^^^^^ +>a : T +> : ^ +>b : T +> : ^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +declare const createComparator: ( +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ + + property: string, +>property : string +> : ^^^^^^ + + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +>comparator : (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : T[keyof T] +> : ^^^^^^^^^^ +>b : T[keyof T] +> : ^^^^^^^^^^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +) => Comparator; + +declare const concatComparators: ( +>concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ - b: 100, + c1: Comparator, +>c1 : Comparator +> : ^^^^^^^^^^^^^ + + c2: Comparator, +>c2 : Comparator +> : ^^^^^^^^^^^^^ + + ...cRest: Comparator[] +>cRest : Comparator[] +> : ^^^^^^^^^^^^^^^ + +) => Comparator; + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : number +> : ^^^^^^ >b : number > : ^^^^^^ ->100 : 100 -> : ^^^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +declare class ModuleGraphConnection { +>ModuleGraphConnection : ModuleGraphConnection +> : ^^^^^^^^^^^^^^^^^^^^^ + + clone(): ModuleGraphConnection; +>clone : () => ModuleGraphConnection +> : ^^^^^^ +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("sourceOrder", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>"sourceOrder" : "sourceOrder" +> : ^^^^^^^^^^^^^ +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ + +const byRangeStart = createComparator("rangeStart", compareNumbers); +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("rangeStart", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>"rangeStart" : "rangeStart" +> : ^^^^^^^^^^^^ +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ + +declare const references: { +>references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ + + connection: ModuleGraphConnection; +>connection : ModuleGraphConnection +> : ^^^^^^^^^^^^^^^^^^^^^ + + sourceOrder: number; +>sourceOrder : number +> : ^^^^^^ + + rangeStart: number | undefined; +>rangeStart : number | undefined +> : ^^^^^^^^^^^^^^^^^^ + + defer?: boolean; +>defer : boolean | undefined +> : ^^^^^^^^^^^^^^^^^^^ + +}[]; -}); +references.sort(concatComparators(bySourceOrder, byRangeStart)); +>references.sort(concatComparators(bySourceOrder, byRangeStart)) : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>references.sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>concatComparators(bySourceOrder, byRangeStart) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols new file mode 100644 index 0000000000000..8c7fd07bc9a87 --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols @@ -0,0 +1,109 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts] //// + +=== typeInferenceSelfIndexingTypeParameter3.ts === +declare function f1( +>f1 : Symbol(f1, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) + + arg: { +>arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 23)) + + [K in keyof T]: T[K][keyof T[K]]; +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 5)) + } +): T; +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) + +const res1 = f1({ +>res1 : Symbol(res1, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 6, 5)) +>f1 : Symbol(f1, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) + + a: "hello", +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 6, 17)) + + b: 100, +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 13)) + +}); + +type Inner = { +>Inner : Symbol(Inner, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 9, 3)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) + + [I in keyof O]: O[I][keyof O[I]]; +>I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 12, 3)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) +>I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 12, 3)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) +>I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 12, 3)) + +}; + +declare function f2(fields: { +>f2 : Symbol(f2, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 2)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) +>fields : Symbol(fields, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 23)) + + [K in keyof T]: { +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 16, 3)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) + + label: string; +>label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 16, 19)) + + values: Inner; +>values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 17, 18)) +>Inner : Symbol(Inner, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 9, 3)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 16, 3)) + + }; +}): T; +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) + +const res2 = f2({ +>res2 : Symbol(res2, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 22, 5)) +>f2 : Symbol(f2, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 2)) + + prop: { +>prop : Symbol(prop, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 22, 17)) + + label: "first", +>label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 23, 9)) + + values: { +>values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 24, 19)) + + foo: 123, +>foo : Symbol(foo, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 25, 13)) + + bar: true, +>bar : Symbol(bar, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 26, 15)) + + }, + }, + other: { +>other : Symbol(other, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 29, 4)) + + label: "second", +>label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 30, 10)) + + values: { +>values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 31, 20)) + + baz: "", +>baz : Symbol(baz, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 32, 13)) + + qwe: [true], +>qwe : Symbol(qwe, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 33, 14)) + + }, + }, +}); + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types new file mode 100644 index 0000000000000..3bc267e135314 --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types @@ -0,0 +1,142 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts] //// + +=== typeInferenceSelfIndexingTypeParameter3.ts === +declare function f1( +>f1 : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T +> : ^ ^^ ^^ ^^^^^ + + arg: { +>arg : { [K in keyof T]: T[K][keyof T[K]]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + [K in keyof T]: T[K][keyof T[K]]; + } +): T; + +const res1 = f1({ +>res1 : { a: Record; b: Record; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f1({ a: "hello", b: 100,}) : { a: Record; b: Record; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f1 : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T +> : ^ ^^ ^^ ^^^^^ +>{ a: "hello", b: 100,} : { a: string; b: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + + a: "hello", +>a : string +> : ^^^^^^ +>"hello" : "hello" +> : ^^^^^^^ + + b: 100, +>b : number +> : ^^^^^^ +>100 : 100 +> : ^^^ + +}); + +type Inner = { +>Inner : Inner +> : ^^^^^^^^ + + [I in keyof O]: O[I][keyof O[I]]; +}; + +declare function f2(fields: { +>f2 : (fields: { [K in keyof T]: { label: string; values: Inner; }; }) => T +> : ^ ^^ ^^ ^^^^^ +>fields : { [K in keyof T]: { label: string; values: Inner; }; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^ + + [K in keyof T]: { + label: string; +>label : string +> : ^^^^^^ + + values: Inner; +>values : Inner +> : ^^^^^^^^^^^ + + }; +}): T; + +const res2 = f2({ +>res2 : { prop: { foo: Record; bar: Record; }; other: { baz: Record; qwe: Record; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f2({ prop: { label: "first", values: { foo: 123, bar: true, }, }, other: { label: "second", values: { baz: "", qwe: [true], }, },}) : { prop: { foo: Record; bar: Record; }; other: { baz: Record; qwe: Record; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f2 : (fields: { [K in keyof T]: { label: string; values: Inner; }; }) => T +> : ^ ^^ ^^ ^^^^^ +>{ prop: { label: "first", values: { foo: 123, bar: true, }, }, other: { label: "second", values: { baz: "", qwe: [true], }, },} : { prop: { label: string; values: { foo: number; bar: true; }; }; other: { label: string; values: { baz: string; qwe: true[]; }; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + prop: { +>prop : { label: string; values: { foo: number; bar: true; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ label: "first", values: { foo: 123, bar: true, }, } : { label: string; values: { foo: number; bar: true; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + label: "first", +>label : string +> : ^^^^^^ +>"first" : "first" +> : ^^^^^^^ + + values: { +>values : { foo: number; bar: true; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ foo: 123, bar: true, } : { foo: number; bar: true; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + foo: 123, +>foo : number +> : ^^^^^^ +>123 : 123 +> : ^^^ + + bar: true, +>bar : true +> : ^^^^ +>true : true +> : ^^^^ + + }, + }, + other: { +>other : { label: string; values: { baz: string; qwe: true[]; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ label: "second", values: { baz: "", qwe: [true], }, } : { label: string; values: { baz: string; qwe: true[]; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + label: "second", +>label : string +> : ^^^^^^ +>"second" : "second" +> : ^^^^^^^^ + + values: { +>values : { baz: string; qwe: true[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ baz: "", qwe: [true], } : { baz: string; qwe: true[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + baz: "", +>baz : string +> : ^^^^^^ +>"" : "" +> : ^^ + + qwe: [true], +>qwe : true[] +> : ^^^^^^ +>[true] : true[] +> : ^^^^^^ +>true : true +> : ^^^^ + + }, + }, +}); + diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts index 9e4c30d954b47..0c52d44b53196 100644 --- a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts @@ -3,9 +3,9 @@ type Comparator = (a: T, b: T) => -1 | 0 | 1; -declare const createComparator: ( - property: string, - comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +declare const createComparator: ( + property: K, + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, ) => Comparator; declare const concatComparators: ( diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts index c5872e0408c18..9e4c30d954b47 100644 --- a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts @@ -1,13 +1,33 @@ // @strict: true // @noEmit: true -declare function f( - arg: { - [K in keyof T]: T[K][keyof T[K]]; - } -): T; - -const res1 = f({ - a: "hello", - b: 100, -}); +type Comparator = (a: T, b: T) => -1 | 0 | 1; + +declare const createComparator: ( + property: string, + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +) => Comparator; + +declare const concatComparators: ( + c1: Comparator, + c2: Comparator, + ...cRest: Comparator[] +) => Comparator; + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; + +declare class ModuleGraphConnection { + clone(): ModuleGraphConnection; +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +const byRangeStart = createComparator("rangeStart", compareNumbers); + +declare const references: { + connection: ModuleGraphConnection; + sourceOrder: number; + rangeStart: number | undefined; + defer?: boolean; +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts new file mode 100644 index 0000000000000..69f1e848fa247 --- /dev/null +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts @@ -0,0 +1,41 @@ +// @strict: true +// @noEmit: true + +declare function f1( + arg: { + [K in keyof T]: T[K][keyof T[K]]; + } +): T; + +const res1 = f1({ + a: "hello", + b: 100, +}); + +type Inner = { + [I in keyof O]: O[I][keyof O[I]]; +}; + +declare function f2(fields: { + [K in keyof T]: { + label: string; + values: Inner; + }; +}): T; + +const res2 = f2({ + prop: { + label: "first", + values: { + foo: 123, + bar: true, + }, + }, + other: { + label: "second", + values: { + baz: "", + qwe: [true], + }, + }, +}); From 15eda09ab820f69c156a3bee919670f856e13463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Mon, 1 Dec 2025 19:06:25 +0100 Subject: [PATCH 22/29] drop unused code --- src/compiler/checker.ts | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 412461dfb5f43..5f98d9053ce67 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14667,23 +14667,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { inferredProp.declarations = prop.declarations; inferredProp.links.nameType = getSymbolLinks(prop).nameType; inferredProp.links.propertyType = getTypeOfSymbol(prop); - if ( - type.constraintType.type.flags & TypeFlags.IndexedAccess - && (type.constraintType.type as IndexedAccessType).objectType.flags & TypeFlags.TypeParameter - && (type.constraintType.type as IndexedAccessType).indexType.flags & TypeFlags.TypeParameter - ) { - // A reverse mapping of `{[K in keyof T[K_1]]: T[K_1]}` is the same as that of `{[K in keyof T]: T}`, since all we care about is - // inferring to the "type parameter" (or indexed access) shared by the constraint and template. So, to reduce the number of - // type identities produced, we simplify such indexed access occurences - const newTypeParam = (type.constraintType.type as IndexedAccessType).objectType; - const newMappedType = replaceIndexedAccess(type.mappedType, type.constraintType.type as ReplaceableIndexedAccessType, newTypeParam); - inferredProp.links.mappedType = newMappedType as MappedType; - inferredProp.links.constraintType = getIndexType(newTypeParam) as IndexType; - } - else { - inferredProp.links.mappedType = type.mappedType; - inferredProp.links.constraintType = type.constraintType; - } + inferredProp.links.mappedType = type.mappedType; + inferredProp.links.constraintType = type.constraintType; members.set(prop.escapedName, inferredProp); } setStructuredTypeMembers(type, members, emptyArray, emptyArray, indexInfos); @@ -26381,6 +26366,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { * variable T[P] (i.e. we treat the type T[P] as the type variable we're inferring for). */ function inferTypeForHomomorphicMappedType(source: Type, target: MappedType, constraint: IndexType): Type | undefined { + // A reverse mapping of `{[K in keyof T[K_1]]: T[K_1]}` is the same as that of `{[K in keyof T]: T}`, since all we care about is + // inferring to the "type parameter" (or indexed access) shared by the constraint and template. So, to reduce the number of + // type identities produced, we simplify such indexed access occurences if (constraint.type.flags & TypeFlags.IndexedAccess) { const newTypeParam = (constraint.type as IndexedAccessType).objectType; target = replaceIndexedAccess(target, constraint.type as ReplaceableIndexedAccessType, newTypeParam) as MappedType; From e3f6b434ca00a1aac901b085e91cd9d14931faee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 2 Dec 2025 09:42:15 +0100 Subject: [PATCH 23/29] discard never aggregate inferences --- src/compiler/checker.ts | 17 +- .../indexAccessCombinedInference2.symbols | 138 ++++++++++++++ .../indexAccessCombinedInference2.types | 168 ++++++++++++++++++ .../compiler/indexAccessCombinedInference2.ts | 48 +++++ 4 files changed, 366 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/indexAccessCombinedInference2.symbols create mode 100644 tests/baselines/reference/indexAccessCombinedInference2.types create mode 100644 tests/cases/compiler/indexAccessCombinedInference2.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5f98d9053ce67..ef8a19a2bc52e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -26447,7 +26447,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } if (inference.indexes) { const eraseSelfMapper = makeArrayTypeMapper([constraint.type, typeParameter], [allKeysAllKeysUnknownType, stringNumberSymbolType]); - return instantiateType(getIntersectionType(inference.indexes), eraseSelfMapper); + const aggregateInference = instantiateType(getIntersectionType(inference.indexes), eraseSelfMapper); + if (!(getReducedType(aggregateInference).flags & TypeFlags.Never)) { + return aggregateInference; + } } return unknownType; } @@ -26900,8 +26903,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return; } if (!inference.isFixed) { - // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` - // Where `T` is `source` and `Keys` is `target.indexType` const partialInferenceTypeSymbol = getGlobalPartialInferenceSymbol(); if (partialInferenceTypeSymbol) { if ((target as IndexedAccessType).indexType.flags & TypeFlags.Instantiable) { @@ -26911,6 +26912,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } else { + // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` + // Where `T` is `source` and `Keys` is `target.indexType` inference.indexes = append(inference.indexes, getTypeAliasInstantiation(partialInferenceTypeSymbol, [source, (target as IndexedAccessType).indexType])); } } @@ -27591,9 +27594,13 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } else if (inference.indexes) { const eraseSelfMapper = makeUnaryTypeMapper(inference.typeParameter, allKeysUnknownType); - let aggregateInference = instantiateType(getIntersectionType(inference.indexes), mergeTypeMappers(eraseSelfMapper, context.nonFixingMapper)); + let aggregateInference: Type | undefined = instantiateType(getIntersectionType(inference.indexes), mergeTypeMappers(eraseSelfMapper, context.nonFixingMapper)); + if (getReducedType(aggregateInference).flags & TypeFlags.Never) { + // `never` inference isn't that useful of an inference given its assignable to every other type + aggregateInference = undefined; + } const constraint = getConstraintOfTypeParameter(inference.typeParameter); - if (constraint) { + if (aggregateInference && constraint) { const instantiatedConstraint = instantiateType(constraint, context.nonFixingMapper); if (instantiatedConstraint.flags & TypeFlags.Union && !context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); diff --git a/tests/baselines/reference/indexAccessCombinedInference2.symbols b/tests/baselines/reference/indexAccessCombinedInference2.symbols new file mode 100644 index 0000000000000..7a94560c7f052 --- /dev/null +++ b/tests/baselines/reference/indexAccessCombinedInference2.symbols @@ -0,0 +1,138 @@ +//// [tests/cases/compiler/indexAccessCombinedInference2.ts] //// + +=== indexAccessCombinedInference2.ts === +type TLArrowShape = { +>TLArrowShape : Symbol(TLArrowShape, Decl(indexAccessCombinedInference2.ts, 0, 0)) + + type: "arrow"; +>type : Symbol(type, Decl(indexAccessCombinedInference2.ts, 0, 21)) + + id: string; +>id : Symbol(id, Decl(indexAccessCombinedInference2.ts, 1, 16)) + + x: number; +>x : Symbol(x, Decl(indexAccessCombinedInference2.ts, 2, 13)) + + y: number; +>y : Symbol(y, Decl(indexAccessCombinedInference2.ts, 3, 12)) + + props: { +>props : Symbol(props, Decl(indexAccessCombinedInference2.ts, 4, 12)) + + dir: 1 | -1; +>dir : Symbol(dir, Decl(indexAccessCombinedInference2.ts, 5, 10)) + + }; +}; + +type NodeShape = { +>NodeShape : Symbol(NodeShape, Decl(indexAccessCombinedInference2.ts, 8, 2)) + + type: "node"; +>type : Symbol(type, Decl(indexAccessCombinedInference2.ts, 10, 18)) + + id: string; +>id : Symbol(id, Decl(indexAccessCombinedInference2.ts, 11, 15)) + + x: number; +>x : Symbol(x, Decl(indexAccessCombinedInference2.ts, 12, 13)) + + y: number; +>y : Symbol(y, Decl(indexAccessCombinedInference2.ts, 13, 12)) + + props: { +>props : Symbol(props, Decl(indexAccessCombinedInference2.ts, 14, 12)) + + nodeType: string; +>nodeType : Symbol(nodeType, Decl(indexAccessCombinedInference2.ts, 15, 10)) + + }; +}; + +type TLShape = TLArrowShape | NodeShape; +>TLShape : Symbol(TLShape, Decl(indexAccessCombinedInference2.ts, 18, 2)) +>TLArrowShape : Symbol(TLArrowShape, Decl(indexAccessCombinedInference2.ts, 0, 0)) +>NodeShape : Symbol(NodeShape, Decl(indexAccessCombinedInference2.ts, 8, 2)) + +export type TLShapePartial = T extends T +>TLShapePartial : Symbol(TLShapePartial, Decl(indexAccessCombinedInference2.ts, 20, 40)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 22, 27)) +>TLShape : Symbol(TLShape, Decl(indexAccessCombinedInference2.ts, 18, 2)) +>TLShape : Symbol(TLShape, Decl(indexAccessCombinedInference2.ts, 18, 2)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 22, 27)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 22, 27)) + + ? { + id: string; +>id : Symbol(id, Decl(indexAccessCombinedInference2.ts, 23, 5)) + + type: T["type"]; +>type : Symbol(type, Decl(indexAccessCombinedInference2.ts, 24, 17)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 22, 27)) + + props?: Partial; +>props : Symbol(props, Decl(indexAccessCombinedInference2.ts, 25, 22)) +>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 22, 27)) + + } & Partial> +>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) +>Omit : Symbol(Omit, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 22, 27)) + + : never; + +declare class Editor { +>Editor : Symbol(Editor, Decl(indexAccessCombinedInference2.ts, 28, 10)) + + updateShape( +>updateShape : Symbol(Editor.updateShape, Decl(indexAccessCombinedInference2.ts, 30, 22)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 31, 14)) +>TLShape : Symbol(TLShape, Decl(indexAccessCombinedInference2.ts, 18, 2)) +>TLShape : Symbol(TLShape, Decl(indexAccessCombinedInference2.ts, 18, 2)) + + partial: TLShapePartial | null | undefined, +>partial : Symbol(partial, Decl(indexAccessCombinedInference2.ts, 31, 43)) +>TLShapePartial : Symbol(TLShapePartial, Decl(indexAccessCombinedInference2.ts, 20, 40)) +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 31, 14)) + + ): T; +>T : Symbol(T, Decl(indexAccessCombinedInference2.ts, 31, 14)) +} + +declare const x: number; +>x : Symbol(x, Decl(indexAccessCombinedInference2.ts, 36, 13)) + +declare const y: number; +>y : Symbol(y, Decl(indexAccessCombinedInference2.ts, 37, 13)) + +declare const editor: Editor; +>editor : Symbol(editor, Decl(indexAccessCombinedInference2.ts, 38, 13)) +>Editor : Symbol(Editor, Decl(indexAccessCombinedInference2.ts, 28, 10)) + +declare const node1: NodeShape; +>node1 : Symbol(node1, Decl(indexAccessCombinedInference2.ts, 40, 13)) +>NodeShape : Symbol(NodeShape, Decl(indexAccessCombinedInference2.ts, 8, 2)) + +const node2 = editor.updateShape({ ...node1, x, y }); +>node2 : Symbol(node2, Decl(indexAccessCombinedInference2.ts, 41, 5)) +>editor.updateShape : Symbol(Editor.updateShape, Decl(indexAccessCombinedInference2.ts, 30, 22)) +>editor : Symbol(editor, Decl(indexAccessCombinedInference2.ts, 38, 13)) +>updateShape : Symbol(Editor.updateShape, Decl(indexAccessCombinedInference2.ts, 30, 22)) +>node1 : Symbol(node1, Decl(indexAccessCombinedInference2.ts, 40, 13)) +>x : Symbol(x, Decl(indexAccessCombinedInference2.ts, 41, 44)) +>y : Symbol(y, Decl(indexAccessCombinedInference2.ts, 41, 47)) + +declare const shape1: TLShape; +>shape1 : Symbol(shape1, Decl(indexAccessCombinedInference2.ts, 43, 13)) +>TLShape : Symbol(TLShape, Decl(indexAccessCombinedInference2.ts, 18, 2)) + +const shape2 = editor.updateShape({ ...shape1, x, y }); +>shape2 : Symbol(shape2, Decl(indexAccessCombinedInference2.ts, 44, 5)) +>editor.updateShape : Symbol(Editor.updateShape, Decl(indexAccessCombinedInference2.ts, 30, 22)) +>editor : Symbol(editor, Decl(indexAccessCombinedInference2.ts, 38, 13)) +>updateShape : Symbol(Editor.updateShape, Decl(indexAccessCombinedInference2.ts, 30, 22)) +>shape1 : Symbol(shape1, Decl(indexAccessCombinedInference2.ts, 43, 13)) +>x : Symbol(x, Decl(indexAccessCombinedInference2.ts, 44, 46)) +>y : Symbol(y, Decl(indexAccessCombinedInference2.ts, 44, 49)) + diff --git a/tests/baselines/reference/indexAccessCombinedInference2.types b/tests/baselines/reference/indexAccessCombinedInference2.types new file mode 100644 index 0000000000000..4e119d6ff06ed --- /dev/null +++ b/tests/baselines/reference/indexAccessCombinedInference2.types @@ -0,0 +1,168 @@ +//// [tests/cases/compiler/indexAccessCombinedInference2.ts] //// + +=== indexAccessCombinedInference2.ts === +type TLArrowShape = { +>TLArrowShape : TLArrowShape +> : ^^^^^^^^^^^^ + + type: "arrow"; +>type : "arrow" +> : ^^^^^^^ + + id: string; +>id : string +> : ^^^^^^ + + x: number; +>x : number +> : ^^^^^^ + + y: number; +>y : number +> : ^^^^^^ + + props: { +>props : { dir: 1 | -1; } +> : ^^^^^^^ ^^^ + + dir: 1 | -1; +>dir : 1 | -1 +> : ^^^^^^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + + }; +}; + +type NodeShape = { +>NodeShape : NodeShape +> : ^^^^^^^^^ + + type: "node"; +>type : "node" +> : ^^^^^^ + + id: string; +>id : string +> : ^^^^^^ + + x: number; +>x : number +> : ^^^^^^ + + y: number; +>y : number +> : ^^^^^^ + + props: { +>props : { nodeType: string; } +> : ^^^^^^^^^^^^ ^^^ + + nodeType: string; +>nodeType : string +> : ^^^^^^ + + }; +}; + +type TLShape = TLArrowShape | NodeShape; +>TLShape : TLShape +> : ^^^^^^^ + +export type TLShapePartial = T extends T +>TLShapePartial : TLShapePartial +> : ^^^^^^^^^^^^^^^^^ + + ? { + id: string; +>id : string +> : ^^^^^^ + + type: T["type"]; +>type : T["type"] +> : ^^^^^^^^^ + + props?: Partial; +>props : Partial | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + } & Partial> + : never; + +declare class Editor { +>Editor : Editor +> : ^^^^^^ + + updateShape( +>updateShape : (partial: TLShapePartial | null | undefined) => T +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^ + + partial: TLShapePartial | null | undefined, +>partial : TLShapePartial | null | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + ): T; +} + +declare const x: number; +>x : number +> : ^^^^^^ + +declare const y: number; +>y : number +> : ^^^^^^ + +declare const editor: Editor; +>editor : Editor +> : ^^^^^^ + +declare const node1: NodeShape; +>node1 : NodeShape +> : ^^^^^^^^^ + +const node2 = editor.updateShape({ ...node1, x, y }); +>node2 : { type: "node"; x: number; y: number; id: string; props: { nodeType: string; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^ +>editor.updateShape({ ...node1, x, y }) : { type: "node"; x: number; y: number; id: string; props: { nodeType: string; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^ +>editor.updateShape : (partial: TLShapePartial | null | undefined) => T +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^ +>editor : Editor +> : ^^^^^^ +>updateShape : (partial: TLShapePartial | null | undefined) => T +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^ +>{ ...node1, x, y } : { x: number; y: number; type: "node"; id: string; props: { nodeType: string; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^ +>node1 : NodeShape +> : ^^^^^^^^^ +>x : number +> : ^^^^^^ +>y : number +> : ^^^^^^ + +declare const shape1: TLShape; +>shape1 : TLShape +> : ^^^^^^^ + +const shape2 = editor.updateShape({ ...shape1, x, y }); +>shape2 : TLShape +> : ^^^^^^^ +>editor.updateShape({ ...shape1, x, y }) : TLShape +> : ^^^^^^^ +>editor.updateShape : (partial: TLShapePartial | null | undefined) => T +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^ +>editor : Editor +> : ^^^^^^ +>updateShape : (partial: TLShapePartial | null | undefined) => T +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^ +>{ ...shape1, x, y } : { x: number; y: number; type: "arrow"; id: string; props: { dir: 1 | -1; }; } | { x: number; y: number; type: "node"; id: string; props: { nodeType: string; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^ +>shape1 : TLShape +> : ^^^^^^^ +>x : number +> : ^^^^^^ +>y : number +> : ^^^^^^ + diff --git a/tests/cases/compiler/indexAccessCombinedInference2.ts b/tests/cases/compiler/indexAccessCombinedInference2.ts new file mode 100644 index 0000000000000..84f2f31ba74a8 --- /dev/null +++ b/tests/cases/compiler/indexAccessCombinedInference2.ts @@ -0,0 +1,48 @@ +// @strict: true +// @noEmit: true + +type TLArrowShape = { + type: "arrow"; + id: string; + x: number; + y: number; + props: { + dir: 1 | -1; + }; +}; + +type NodeShape = { + type: "node"; + id: string; + x: number; + y: number; + props: { + nodeType: string; + }; +}; + +type TLShape = TLArrowShape | NodeShape; + +export type TLShapePartial = T extends T + ? { + id: string; + type: T["type"]; + props?: Partial; + } & Partial> + : never; + +declare class Editor { + updateShape( + partial: TLShapePartial | null | undefined, + ): T; +} + +declare const x: number; +declare const y: number; +declare const editor: Editor; + +declare const node1: NodeShape; +const node2 = editor.updateShape({ ...node1, x, y }); + +declare const shape1: TLShape; +const shape2 = editor.updateShape({ ...shape1, x, y }); From 19114062c0cf6daf97a4bd14d1fccd70fc876f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 2 Dec 2025 11:46:08 +0100 Subject: [PATCH 24/29] prefer default --- src/compiler/checker.ts | 49 ++-- ...nableToConstraintPreferDefault1.errors.txt | 78 ++++++ ...signableToConstraintPreferDefault1.symbols | 206 +++++++++++++++ ...AssignableToConstraintPreferDefault1.types | 241 ++++++++++++++++++ ...NotAssignableToConstraintPreferDefault1.ts | 68 +++++ 5 files changed, 622 insertions(+), 20 deletions(-) create mode 100644 tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.errors.txt create mode 100644 tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.symbols create mode 100644 tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.types create mode 100644 tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ef8a19a2bc52e..0265798685c87 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -27602,30 +27602,39 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const constraint = getConstraintOfTypeParameter(inference.typeParameter); if (aggregateInference && constraint) { const instantiatedConstraint = instantiateType(constraint, context.nonFixingMapper); - if (instantiatedConstraint.flags & TypeFlags.Union && !context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference))) { - const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); - if (discriminantProps) { - let match: Type | undefined; - findDiscriminant: - for (const p of discriminantProps) { - const candidatePropType = getTypeOfPropertyOfType(aggregateInference, p.escapedName); - for (const type of (instantiatedConstraint as UnionType).types) { - const propType = getTypeOfPropertyOfType(type, p.escapedName); - if (propType && candidatePropType && checkTypeAssignableTo(candidatePropType, propType, /*errorNode*/ undefined)) { - if (match && match !== type) { - match = undefined; - break findDiscriminant; - } - else { - match = type; + let assignableToConstraint = context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference)); + if (!assignableToConstraint) { + if (instantiatedConstraint.flags & TypeFlags.Union) { + const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); + if (discriminantProps) { + let match: Type | undefined; + findDiscriminant: + for (const p of discriminantProps) { + const candidatePropType = getTypeOfPropertyOfType(aggregateInference, p.escapedName); + for (const type of (instantiatedConstraint as UnionType).types) { + const propType = getTypeOfPropertyOfType(type, p.escapedName); + if (propType && candidatePropType && checkTypeAssignableTo(candidatePropType, propType, /*errorNode*/ undefined)) { + if (match && match !== type) { + match = undefined; + break findDiscriminant; + } + else { + match = type; + } } } } - } - if (match) { - aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0, /*readonly*/ false); + if (match) { + aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0, /*readonly*/ false); + assignableToConstraint = context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference)); + } } } + if (!assignableToConstraint) { + // if the aggregate inference isn't assignable to the constraint clear it out + // this way the compiler keeps preferring the default type + aggregateInference = undefined; + } } } inferredType = aggregateInference; @@ -27634,7 +27643,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { // We use silentNeverType as the wildcard that signals no inferences. inferredType = silentNeverType; } - else { + if (!inferredType) { // Infer either the default or the empty object type when no inferences were // made. It is important to remember that in this case, inference still // succeeds, meaning there is no error for not having inference candidates. An diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.errors.txt b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.errors.txt new file mode 100644 index 0000000000000..aba3153e07d3a --- /dev/null +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.errors.txt @@ -0,0 +1,78 @@ +typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts(63,3): error TS2345: Argument of type 'BlankNode' is not assignable to parameter of type 'Quad_Predicate'. + Type 'BlankNode' is not assignable to type 'NamedNode'. + Types of property 'termType' are incompatible. + Type '"BlankNode"' is not assignable to type '"NamedNode"'. + + +==== typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts (1 errors) ==== + type Term = NamedNode | BlankNode | Literal | Variable | BaseQuad; + + interface NamedNode { + termType: "NamedNode"; + value: Iri; + } + + interface BlankNode { + termType: "BlankNode"; + value: string; + } + + interface Literal { + termType: "Literal"; + value: string; + language: string; + direction?: "ltr" | "rtl" | "" | null; + } + + interface Variable { + termType: "Variable"; + value: string; + } + + type Quad_Subject = NamedNode | BlankNode | Quad | Variable; + type Quad_Predicate = NamedNode | Variable; + type Quad_Object = NamedNode | Literal | BlankNode | Quad | Variable; + + interface BaseQuad { + termType: "Quad"; + value: ""; + subject: Term; + predicate: Term; + object: Term; + } + + interface Quad extends BaseQuad { + subject: Quad_Subject; + predicate: Quad_Predicate; + object: Quad_Object; + } + + declare class DataFactory { + quad( + subject: Q["subject"], + predicate: Q["predicate"], + object: Q["object"], + ): Q; + namedNode(value: Iri): NamedNode; + blankNode(value?: string): BlankNode; + } + + declare const factory: DataFactory; + + const res1 = factory.quad( + factory.namedNode("http://example.org/subject"), + factory.namedNode("http://example.org/predicate"), + factory.namedNode("http://example.org/object"), + ); + + const res2 = factory.quad( + factory.namedNode("http://example.org/subject"), + factory.blankNode("34"), // error + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'BlankNode' is not assignable to parameter of type 'Quad_Predicate'. +!!! error TS2345: Type 'BlankNode' is not assignable to type 'NamedNode'. +!!! error TS2345: Types of property 'termType' are incompatible. +!!! error TS2345: Type '"BlankNode"' is not assignable to type '"NamedNode"'. + factory.namedNode("http://example.org/object"), + ); + \ No newline at end of file diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.symbols b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.symbols new file mode 100644 index 0000000000000..2d481ea225ef8 --- /dev/null +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.symbols @@ -0,0 +1,206 @@ +//// [tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts] //// + +=== typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts === +type Term = NamedNode | BlankNode | Literal | Variable | BaseQuad; +>Term : Symbol(Term, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 0)) +>NamedNode : Symbol(NamedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 66)) +>BlankNode : Symbol(BlankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 5, 1)) +>Literal : Symbol(Literal, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 10, 1)) +>Variable : Symbol(Variable, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 17, 1)) +>BaseQuad : Symbol(BaseQuad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 26, 69)) + +interface NamedNode { +>NamedNode : Symbol(NamedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 66)) +>Iri : Symbol(Iri, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 2, 20)) + + termType: "NamedNode"; +>termType : Symbol(NamedNode.termType, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 2, 50)) + + value: Iri; +>value : Symbol(NamedNode.value, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 3, 24)) +>Iri : Symbol(Iri, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 2, 20)) +} + +interface BlankNode { +>BlankNode : Symbol(BlankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 5, 1)) + + termType: "BlankNode"; +>termType : Symbol(BlankNode.termType, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 7, 21)) + + value: string; +>value : Symbol(BlankNode.value, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 8, 24)) +} + +interface Literal { +>Literal : Symbol(Literal, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 10, 1)) + + termType: "Literal"; +>termType : Symbol(Literal.termType, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 12, 19)) + + value: string; +>value : Symbol(Literal.value, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 13, 22)) + + language: string; +>language : Symbol(Literal.language, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 14, 16)) + + direction?: "ltr" | "rtl" | "" | null; +>direction : Symbol(Literal.direction, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 15, 19)) +} + +interface Variable { +>Variable : Symbol(Variable, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 17, 1)) + + termType: "Variable"; +>termType : Symbol(Variable.termType, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 19, 20)) + + value: string; +>value : Symbol(Variable.value, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 20, 23)) +} + +type Quad_Subject = NamedNode | BlankNode | Quad | Variable; +>Quad_Subject : Symbol(Quad_Subject, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 22, 1)) +>NamedNode : Symbol(NamedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 66)) +>BlankNode : Symbol(BlankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 5, 1)) +>Quad : Symbol(Quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 34, 1)) +>Variable : Symbol(Variable, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 17, 1)) + +type Quad_Predicate = NamedNode | Variable; +>Quad_Predicate : Symbol(Quad_Predicate, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 24, 60)) +>NamedNode : Symbol(NamedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 66)) +>Variable : Symbol(Variable, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 17, 1)) + +type Quad_Object = NamedNode | Literal | BlankNode | Quad | Variable; +>Quad_Object : Symbol(Quad_Object, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 25, 43)) +>NamedNode : Symbol(NamedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 66)) +>Literal : Symbol(Literal, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 10, 1)) +>BlankNode : Symbol(BlankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 5, 1)) +>Quad : Symbol(Quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 34, 1)) +>Variable : Symbol(Variable, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 17, 1)) + +interface BaseQuad { +>BaseQuad : Symbol(BaseQuad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 26, 69)) + + termType: "Quad"; +>termType : Symbol(BaseQuad.termType, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 28, 20)) + + value: ""; +>value : Symbol(BaseQuad.value, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 29, 19)) + + subject: Term; +>subject : Symbol(BaseQuad.subject, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 30, 12)) +>Term : Symbol(Term, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 0)) + + predicate: Term; +>predicate : Symbol(BaseQuad.predicate, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 31, 16)) +>Term : Symbol(Term, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 0)) + + object: Term; +>object : Symbol(BaseQuad.object, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 32, 18)) +>Term : Symbol(Term, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 0)) +} + +interface Quad extends BaseQuad { +>Quad : Symbol(Quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 34, 1)) +>BaseQuad : Symbol(BaseQuad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 26, 69)) + + subject: Quad_Subject; +>subject : Symbol(Quad.subject, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 36, 33)) +>Quad_Subject : Symbol(Quad_Subject, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 22, 1)) + + predicate: Quad_Predicate; +>predicate : Symbol(Quad.predicate, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 37, 24)) +>Quad_Predicate : Symbol(Quad_Predicate, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 24, 60)) + + object: Quad_Object; +>object : Symbol(Quad.object, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 38, 28)) +>Quad_Object : Symbol(Quad_Object, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 25, 43)) +} + +declare class DataFactory { +>DataFactory : Symbol(DataFactory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 40, 1)) + + quad( +>quad : Symbol(DataFactory.quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 42, 27)) +>Q : Symbol(Q, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 43, 7)) +>BaseQuad : Symbol(BaseQuad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 26, 69)) +>Quad : Symbol(Quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 34, 1)) + + subject: Q["subject"], +>subject : Symbol(subject, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 43, 34)) +>Q : Symbol(Q, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 43, 7)) + + predicate: Q["predicate"], +>predicate : Symbol(predicate, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 44, 26)) +>Q : Symbol(Q, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 43, 7)) + + object: Q["object"], +>object : Symbol(object, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 45, 30)) +>Q : Symbol(Q, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 43, 7)) + + ): Q; +>Q : Symbol(Q, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 43, 7)) + + namedNode(value: Iri): NamedNode; +>namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) +>Iri : Symbol(Iri, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 48, 12)) +>value : Symbol(value, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 48, 41)) +>Iri : Symbol(Iri, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 48, 12)) +>NamedNode : Symbol(NamedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 0, 66)) +>Iri : Symbol(Iri, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 48, 12)) + + blankNode(value?: string): BlankNode; +>blankNode : Symbol(DataFactory.blankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 48, 69)) +>value : Symbol(value, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 49, 12)) +>BlankNode : Symbol(BlankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 5, 1)) +} + +declare const factory: DataFactory; +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>DataFactory : Symbol(DataFactory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 40, 1)) + +const res1 = factory.quad( +>res1 : Symbol(res1, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 54, 5)) +>factory.quad : Symbol(DataFactory.quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 42, 27)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>quad : Symbol(DataFactory.quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 42, 27)) + + factory.namedNode("http://example.org/subject"), +>factory.namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) + + factory.namedNode("http://example.org/predicate"), +>factory.namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) + + factory.namedNode("http://example.org/object"), +>factory.namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) + +); + +const res2 = factory.quad( +>res2 : Symbol(res2, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 60, 5)) +>factory.quad : Symbol(DataFactory.quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 42, 27)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>quad : Symbol(DataFactory.quad, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 42, 27)) + + factory.namedNode("http://example.org/subject"), +>factory.namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) + + factory.blankNode("34"), // error +>factory.blankNode : Symbol(DataFactory.blankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 48, 69)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>blankNode : Symbol(DataFactory.blankNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 48, 69)) + + factory.namedNode("http://example.org/object"), +>factory.namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) +>factory : Symbol(factory, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 52, 13)) +>namedNode : Symbol(DataFactory.namedNode, Decl(typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts, 47, 7)) + +); + diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.types b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.types new file mode 100644 index 0000000000000..ac109fd050bda --- /dev/null +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.types @@ -0,0 +1,241 @@ +//// [tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts] //// + +=== typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts === +type Term = NamedNode | BlankNode | Literal | Variable | BaseQuad; +>Term : Term +> : ^^^^ + +interface NamedNode { + termType: "NamedNode"; +>termType : "NamedNode" +> : ^^^^^^^^^^^ + + value: Iri; +>value : Iri +> : ^^^ +} + +interface BlankNode { + termType: "BlankNode"; +>termType : "BlankNode" +> : ^^^^^^^^^^^ + + value: string; +>value : string +> : ^^^^^^ +} + +interface Literal { + termType: "Literal"; +>termType : "Literal" +> : ^^^^^^^^^ + + value: string; +>value : string +> : ^^^^^^ + + language: string; +>language : string +> : ^^^^^^ + + direction?: "ltr" | "rtl" | "" | null; +>direction : "" | "ltr" | "rtl" | null | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +} + +interface Variable { + termType: "Variable"; +>termType : "Variable" +> : ^^^^^^^^^^ + + value: string; +>value : string +> : ^^^^^^ +} + +type Quad_Subject = NamedNode | BlankNode | Quad | Variable; +>Quad_Subject : Quad_Subject +> : ^^^^^^^^^^^^ + +type Quad_Predicate = NamedNode | Variable; +>Quad_Predicate : Quad_Predicate +> : ^^^^^^^^^^^^^^ + +type Quad_Object = NamedNode | Literal | BlankNode | Quad | Variable; +>Quad_Object : Quad_Object +> : ^^^^^^^^^^^ + +interface BaseQuad { + termType: "Quad"; +>termType : "Quad" +> : ^^^^^^ + + value: ""; +>value : "" +> : ^^ + + subject: Term; +>subject : Term +> : ^^^^ + + predicate: Term; +>predicate : Term +> : ^^^^ + + object: Term; +>object : Term +> : ^^^^ +} + +interface Quad extends BaseQuad { + subject: Quad_Subject; +>subject : Quad_Subject +> : ^^^^^^^^^^^^ + + predicate: Quad_Predicate; +>predicate : Quad_Predicate +> : ^^^^^^^^^^^^^^ + + object: Quad_Object; +>object : Quad_Object +> : ^^^^^^^^^^^ +} + +declare class DataFactory { +>DataFactory : DataFactory +> : ^^^^^^^^^^^ + + quad( +>quad : (subject: Q["subject"], predicate: Q["predicate"], object: Q["object"]) => Q +> : ^ ^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ + + subject: Q["subject"], +>subject : Q["subject"] +> : ^^^^^^^^^^^^ + + predicate: Q["predicate"], +>predicate : Q["predicate"] +> : ^^^^^^^^^^^^^^ + + object: Q["object"], +>object : Q["object"] +> : ^^^^^^^^^^^ + + ): Q; + namedNode(value: Iri): NamedNode; +>namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>value : Iri +> : ^^^ + + blankNode(value?: string): BlankNode; +>blankNode : (value?: string) => BlankNode +> : ^ ^^^ ^^^^^ +>value : string | undefined +> : ^^^^^^^^^^^^^^^^^^ +} + +declare const factory: DataFactory; +>factory : DataFactory +> : ^^^^^^^^^^^ + +const res1 = factory.quad( +>res1 : Quad +> : ^^^^ +>factory.quad( factory.namedNode("http://example.org/subject"), factory.namedNode("http://example.org/predicate"), factory.namedNode("http://example.org/object"),) : Quad +> : ^^^^ +>factory.quad : (subject: Q["subject"], predicate: Q["predicate"], object: Q["object"]) => Q +> : ^ ^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>quad : (subject: Q["subject"], predicate: Q["predicate"], object: Q["object"]) => Q +> : ^ ^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ + + factory.namedNode("http://example.org/subject"), +>factory.namedNode("http://example.org/subject") : NamedNode<"http://example.org/subject"> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>factory.namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>"http://example.org/subject" : "http://example.org/subject" +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + factory.namedNode("http://example.org/predicate"), +>factory.namedNode("http://example.org/predicate") : NamedNode<"http://example.org/predicate"> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>factory.namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>"http://example.org/predicate" : "http://example.org/predicate" +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + factory.namedNode("http://example.org/object"), +>factory.namedNode("http://example.org/object") : NamedNode<"http://example.org/object"> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>factory.namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>"http://example.org/object" : "http://example.org/object" +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +); + +const res2 = factory.quad( +>res2 : Quad +> : ^^^^ +>factory.quad( factory.namedNode("http://example.org/subject"), factory.blankNode("34"), // error factory.namedNode("http://example.org/object"),) : Quad +> : ^^^^ +>factory.quad : (subject: Q["subject"], predicate: Q["predicate"], object: Q["object"]) => Q +> : ^ ^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>quad : (subject: Q["subject"], predicate: Q["predicate"], object: Q["object"]) => Q +> : ^ ^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ + + factory.namedNode("http://example.org/subject"), +>factory.namedNode("http://example.org/subject") : NamedNode<"http://example.org/subject"> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>factory.namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>"http://example.org/subject" : "http://example.org/subject" +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + factory.blankNode("34"), // error +>factory.blankNode("34") : BlankNode +> : ^^^^^^^^^ +>factory.blankNode : (value?: string) => BlankNode +> : ^ ^^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>blankNode : (value?: string) => BlankNode +> : ^ ^^^ ^^^^^ +>"34" : "34" +> : ^^^^ + + factory.namedNode("http://example.org/object"), +>factory.namedNode("http://example.org/object") : NamedNode<"http://example.org/object"> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>factory.namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>factory : DataFactory +> : ^^^^^^^^^^^ +>namedNode : (value: Iri) => NamedNode +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>"http://example.org/object" : "http://example.org/object" +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +); + diff --git a/tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts b/tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts new file mode 100644 index 0000000000000..56e8d6589529a --- /dev/null +++ b/tests/cases/compiler/typeInferenceAggregateFromIndicesNotAssignableToConstraintPreferDefault1.ts @@ -0,0 +1,68 @@ +// @strict: true +// @noEmit: true + +type Term = NamedNode | BlankNode | Literal | Variable | BaseQuad; + +interface NamedNode { + termType: "NamedNode"; + value: Iri; +} + +interface BlankNode { + termType: "BlankNode"; + value: string; +} + +interface Literal { + termType: "Literal"; + value: string; + language: string; + direction?: "ltr" | "rtl" | "" | null; +} + +interface Variable { + termType: "Variable"; + value: string; +} + +type Quad_Subject = NamedNode | BlankNode | Quad | Variable; +type Quad_Predicate = NamedNode | Variable; +type Quad_Object = NamedNode | Literal | BlankNode | Quad | Variable; + +interface BaseQuad { + termType: "Quad"; + value: ""; + subject: Term; + predicate: Term; + object: Term; +} + +interface Quad extends BaseQuad { + subject: Quad_Subject; + predicate: Quad_Predicate; + object: Quad_Object; +} + +declare class DataFactory { + quad( + subject: Q["subject"], + predicate: Q["predicate"], + object: Q["object"], + ): Q; + namedNode(value: Iri): NamedNode; + blankNode(value?: string): BlankNode; +} + +declare const factory: DataFactory; + +const res1 = factory.quad( + factory.namedNode("http://example.org/subject"), + factory.namedNode("http://example.org/predicate"), + factory.namedNode("http://example.org/object"), +); + +const res2 = factory.quad( + factory.namedNode("http://example.org/subject"), + factory.blankNode("34"), // error + factory.namedNode("http://example.org/object"), +); From a554bbfa39f254a1b87b09113ac3db4e01049d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 2 Dec 2025 11:58:14 +0100 Subject: [PATCH 25/29] change condition for indexes gathering --- src/compiler/checker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 0265798685c87..257f8dcf04c9b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -26902,7 +26902,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (getObjectFlags(source) & ObjectFlags.NonInferrableType || source === nonInferrableAnyType) { return; } - if (!inference.isFixed) { + if (!hasInferenceCandidates(inference)) { const partialInferenceTypeSymbol = getGlobalPartialInferenceSymbol(); if (partialInferenceTypeSymbol) { if ((target as IndexedAccessType).indexType.flags & TypeFlags.Instantiable) { From 22ddeccb8eb9a7c7c8a5d4095e3701186561b9e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 2 Dec 2025 12:18:00 +0100 Subject: [PATCH 26/29] simplify test --- ...ceIndexingUsingOtherTypeParameter1.symbols | 198 ++++-------------- ...enceIndexingUsingOtherTypeParameter1.types | 74 +------ ...ferenceIndexingUsingOtherTypeParameter1.ts | 41 +--- 3 files changed, 48 insertions(+), 265 deletions(-) diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols index 6f2d103726a5f..0cadaa64184c2 100644 --- a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols @@ -1,197 +1,71 @@ //// [tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts] //// === typeInferenceIndexingUsingOtherTypeParameter1.ts === -type Primitive = null | undefined | string | number | boolean | symbol | bigint; ->Primitive : Symbol(Primitive, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) - type FieldValues = Record; ->FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) -type PathImpl< ->PathImpl : Symbol(PathImpl, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 39)) - - K extends string | number, ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) - - V, ->V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) - - TraversedTypes, ->TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 6, 4)) - -> = V extends Primitive ->V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) ->Primitive : Symbol(Primitive, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) - - ? `${K}` ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) - - : `${K}` | `${K}.${PathInternal}`; ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14)) ->PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59)) ->V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) ->TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 6, 4)) ->V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28)) - -type PathInternal = { ->PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) ->TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 20)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) - - [K in keyof T]-?: PathImpl; ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) ->PathImpl : Symbol(PathImpl, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 39)) ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3)) ->TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 20)) - -}[keyof T]; ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18)) - -type Path = T extends any ? PathInternal : never; ->Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10)) ->PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10)) - -type FieldPath = Path; ->FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 15)) ->FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) ->Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 15)) - -type PathValue> = T extends any ->PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) ->P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) ->Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) - - ? P extends `${infer K}.${infer R}` ->P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) ->R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33)) - - ? K extends keyof T ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) - - ? R extends Path ->R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33)) ->Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) - - ? PathValue ->PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) ->K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22)) ->R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33)) - - : never - : never - : P extends keyof T ->P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) - - ? T[P] ->T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15)) ->P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17)) - - : never - : never; - -type FieldPathValue< ->FieldPathValue : Symbol(FieldPathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 30, 10)) - - TFieldValues extends FieldValues, ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20)) ->FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) - - TFieldPath extends FieldPath, ->TFieldPath : Symbol(TFieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 33, 35)) ->FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20)) - -> = PathValue; ->PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20)) ->TFieldPath : Symbol(TFieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 33, 35)) - type UseControllerProps< ->UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 35, 40)) +>UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 39)) TFieldValues extends FieldValues = FieldValues, ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) ->FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) ->FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 24)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) - TName extends FieldPath = FieldPath, ->TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49)) ->FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) ->FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) + TName extends keyof TFieldValues = keyof TFieldValues, +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 3, 49)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 24)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 24)) > = { name: TName; ->name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 40, 5)) ->TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49)) +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 5)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 3, 49)) - defaultValue?: FieldPathValue; ->defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 41, 14)) ->FieldPathValue : Symbol(FieldPathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 30, 10)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24)) ->TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49)) + defaultValue?: TFieldValues[TName]; +>defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 6, 14)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 24)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 3, 49)) }; declare function useController< ->useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 43, 2)) +>useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 8, 2)) TFieldValues extends FieldValues = FieldValues, ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) ->FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) ->FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 31)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) +>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0)) - TName extends FieldPath = FieldPath, ->TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49)) ->FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) ->FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) + TName extends keyof TFieldValues = keyof TFieldValues, +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 11, 49)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 31)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 31)) >( props: UseControllerProps, ->props : Symbol(props, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 48, 2)) ->UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 35, 40)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) ->TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49)) +>props : Symbol(props, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 2)) +>UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 39)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 31)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 11, 49)) ): { name: TName; values: TFieldValues }; ->name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 50, 4)) ->TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49)) ->values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 50, 17)) ->TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31)) +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 15, 4)) +>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 11, 49)) +>values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 15, 17)) +>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 31)) export const { name, values } = useController({ ->name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 14)) ->values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 20)) ->useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 43, 2)) +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 17, 14)) +>values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 17, 20)) +>useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 8, 2)) name: "test", ->name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 47)) +>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 17, 47)) defaultValue: "", ->defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 53, 15)) +>defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 15)) }); diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types index b21f649f54f10..bd6dc0e5fa678 100644 --- a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types @@ -1,89 +1,33 @@ //// [tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts] //// -=== Performance Stats === -Instantiation count: 2,500 - === typeInferenceIndexingUsingOtherTypeParameter1.ts === -type Primitive = null | undefined | string | number | boolean | symbol | bigint; ->Primitive : Primitive -> : ^^^^^^^^^ - type FieldValues = Record; >FieldValues : FieldValues > : ^^^^^^^^^^^ -type PathImpl< ->PathImpl : PathImpl -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - K extends string | number, - V, - TraversedTypes, -> = V extends Primitive - ? `${K}` - : `${K}` | `${K}.${PathInternal}`; - -type PathInternal = { ->PathInternal : PathInternal -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - [K in keyof T]-?: PathImpl; -}[keyof T]; - -type Path = T extends any ? PathInternal : never; ->Path : Path -> : ^^^^^^^ - -type FieldPath = Path; ->FieldPath : FieldPath -> : ^^^^^^^^^^^^^^^^^^^^^^^ - -type PathValue> = T extends any ->PathValue : PathValue -> : ^^^^^^^^^^^^^^^ - - ? P extends `${infer K}.${infer R}` - ? K extends keyof T - ? R extends Path - ? PathValue - : never - : never - : P extends keyof T - ? T[P] - : never - : never; - -type FieldPathValue< ->FieldPathValue : FieldPathValue -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - TFieldValues extends FieldValues, - TFieldPath extends FieldPath, -> = PathValue; - type UseControllerProps< >UseControllerProps : UseControllerProps > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath, + TName extends keyof TFieldValues = keyof TFieldValues, > = { name: TName; >name : TName > : ^^^^^ - defaultValue?: FieldPathValue; ->defaultValue : PathValue | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + defaultValue?: TFieldValues[TName]; +>defaultValue : TFieldValues[TName] | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }; declare function useController< ->useController : = Path>(props: UseControllerProps) => { name: TName; values: TFieldValues; } -> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>useController : (props: UseControllerProps) => { name: TName; values: TFieldValues; } +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath, + TName extends keyof TFieldValues = keyof TFieldValues, >( props: UseControllerProps, >props : UseControllerProps @@ -102,8 +46,8 @@ export const { name, values } = useController({ > : ^^^^^^^^^^^^^^^^^^^^^^ >useController({ name: "test", defaultValue: "",}) : { name: "test"; values: Record<"test", string>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->useController : = Path>(props: UseControllerProps) => { name: TName; values: TFieldValues; } -> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>useController : (props: UseControllerProps) => { name: TName; values: TFieldValues; } +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ name: "test", defaultValue: "",} : { name: "test"; defaultValue: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts b/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts index c4ad740ddea70..951dfe586c07c 100644 --- a/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts +++ b/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts @@ -1,54 +1,19 @@ // @strict: true // @noEmit: true -type Primitive = null | undefined | string | number | boolean | symbol | bigint; - type FieldValues = Record; -type PathImpl< - K extends string | number, - V, - TraversedTypes, -> = V extends Primitive - ? `${K}` - : `${K}` | `${K}.${PathInternal}`; - -type PathInternal = { - [K in keyof T]-?: PathImpl; -}[keyof T]; - -type Path = T extends any ? PathInternal : never; - -type FieldPath = Path; - -type PathValue> = T extends any - ? P extends `${infer K}.${infer R}` - ? K extends keyof T - ? R extends Path - ? PathValue - : never - : never - : P extends keyof T - ? T[P] - : never - : never; - -type FieldPathValue< - TFieldValues extends FieldValues, - TFieldPath extends FieldPath, -> = PathValue; - type UseControllerProps< TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath, + TName extends keyof TFieldValues = keyof TFieldValues, > = { name: TName; - defaultValue?: FieldPathValue; + defaultValue?: TFieldValues[TName]; }; declare function useController< TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath, + TName extends keyof TFieldValues = keyof TFieldValues, >( props: UseControllerProps, ): { name: TName; values: TFieldValues }; From ced3cc13b4586f99ad0723ec8d7a898d719b4075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 2 Dec 2025 19:36:33 +0100 Subject: [PATCH 27/29] refactor --- src/compiler/checker.ts | 113 ++++---- ...gateFromIndicesInConditionalTypes1.symbols | 32 +++ ...regateFromIndicesInConditionalTypes1.types | 32 +++ ...ceIndexingUsingOtherTypeParameter1.symbols | 17 ++ ...enceIndexingUsingOtherTypeParameter1.types | 24 ++ ...renceSelfIndexingTypeParameter1.errors.txt | 39 --- ...nferenceSelfIndexingTypeParameter1.symbols | 113 +------- ...eInferenceSelfIndexingTypeParameter1.types | 153 ++-------- ...renceSelfIndexingTypeParameter2.errors.txt | 22 +- ...nferenceSelfIndexingTypeParameter2.symbols | 19 +- ...eInferenceSelfIndexingTypeParameter2.types | 66 ++--- ...renceSelfIndexingTypeParameter3.errors.txt | 45 +++ ...nferenceSelfIndexingTypeParameter3.symbols | 204 +++++++------- ...eInferenceSelfIndexingTypeParameter3.types | 266 +++++++++--------- ...nferenceSelfIndexingTypeParameter4.symbols | 109 +++++++ ...eInferenceSelfIndexingTypeParameter4.types | 142 ++++++++++ ...AggregateFromIndicesInConditionalTypes1.ts | 12 + ...ferenceIndexingUsingOtherTypeParameter1.ts | 4 + ...typeInferenceSelfIndexingTypeParameter1.ts | 32 +-- ...typeInferenceSelfIndexingTypeParameter2.ts | 6 +- ...typeInferenceSelfIndexingTypeParameter3.ts | 68 ++--- ...typeInferenceSelfIndexingTypeParameter4.ts | 41 +++ 22 files changed, 855 insertions(+), 704 deletions(-) create mode 100644 tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.symbols create mode 100644 tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types delete mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.errors.txt create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols create mode 100644 tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types create mode 100644 tests/cases/compiler/typeInferenceAggregateFromIndicesInConditionalTypes1.ts create mode 100644 tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 257f8dcf04c9b..a56fffc253490 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2108,7 +2108,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var unreachableNeverType = createIntrinsicType(TypeFlags.Never, "never", /*objectFlags*/ undefined, "unreachable"); var nonPrimitiveType = createIntrinsicType(TypeFlags.NonPrimitive, "object"); var stringOrNumberType = getUnionType([stringType, numberType]); - var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]) as UnionType; + var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]); var numberOrBigIntType = getUnionType([numberType, bigintType]); var templateConstraintType = getUnionType([stringType, numberType, booleanType, bigintType, nullType, undefinedType]) as UnionType; var numericStringType = getTemplateLiteralType(["", ""], [numberType]); // The `${number}` type @@ -2144,9 +2144,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var unknownEmptyObjectType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray); var unknownUnionType = strictNullChecks ? getUnionType([undefinedType, nullType, unknownEmptyObjectType]) : unknownType; - var allKeysUnknownType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, map(stringNumberSymbolType.types, t => createIndexInfo(t, unknownType, /*isReadonly*/ false))); // { [k: PropertyKey]: unknown } - var allKeysAllKeysUnknownType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, map(stringNumberSymbolType.types, t => createIndexInfo(t, allKeysUnknownType, /*isReadonly*/ false))); // { [k: PropertyKey]: { [k: PropertyKey]: unknown } } - var emptyGenericType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray) as ObjectType as GenericType; emptyGenericType.instantiations = new Map(); @@ -26441,18 +26438,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const templateType = getTemplateTypeFromMappedType(target); const inference = createInferenceInfo(inferenceTarget); inferTypes([inference], sourceType, templateType); - const inferredType = getTypeFromInference(inference); - if (inferredType) { - return inferredType; - } - if (inference.indexes) { - const eraseSelfMapper = makeArrayTypeMapper([constraint.type, typeParameter], [allKeysAllKeysUnknownType, stringNumberSymbolType]); - const aggregateInference = instantiateType(getIntersectionType(inference.indexes), eraseSelfMapper); - if (!(getReducedType(aggregateInference).flags & TypeFlags.Never)) { - return aggregateInference; - } - } - return unknownType; + return getTypeFromInference(inference) || unknownType; } function inferReverseMappedType(source: Type, target: MappedType, constraint: IndexType): Type | undefined { @@ -26521,7 +26507,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function getTypeFromInference(inference: InferenceInfo) { return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : inference.contraCandidates ? getIntersectionType(inference.contraCandidates) : - undefined; + getAggregateInference(inference); } function hasSkipDirectInferenceFlag(node: Node) { @@ -27568,6 +27554,52 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return getWidenedType(unwidenedType); } + function getAggregateInference(inference: InferenceInfo, constraintType?: Type, compareTypes?: TypeComparer, mapper?: TypeMapper | undefined): Type | undefined { + if (!inference.indexes) { + return undefined; + } + const typeEraser = createTypeEraser([inference.typeParameter.flags & TypeFlags.IndexedAccess ? (inference.typeParameter as IndexedAccessType).objectType : inference.typeParameter]); + const aggregateInference = instantiateType(getIntersectionType(inference.indexes), mapper ? mergeTypeMappers(typeEraser, mapper) : typeEraser); + if (getReducedType(aggregateInference).flags & TypeFlags.Never) { + // `never` inference isn't that useful of an inference given its assignable to every other type + return undefined; + } + if (!constraintType || (compareTypes ??= compareTypesAssignable)(aggregateInference, getTypeWithThisArgument(constraintType, aggregateInference))) { + return aggregateInference; + } + if (constraintType.flags & TypeFlags.Union) { + const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), constraintType); + if (discriminantProps) { + let match: Type | undefined; + findDiscriminant: + for (const p of discriminantProps) { + const candidatePropType = getTypeOfPropertyOfType(aggregateInference, p.escapedName); + for (const type of (constraintType as UnionType).types) { + const propType = getTypeOfPropertyOfType(type, p.escapedName); + if (propType && candidatePropType && isTypeAssignableTo(candidatePropType, propType)) { + if (match && match !== type) { + match = undefined; + break findDiscriminant; + } + else { + match = type; + } + } + } + } + if (match) { + const combinedType = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0, /*readonly*/ false); + if (compareTypes(combinedType, getTypeWithThisArgument(constraintType, combinedType))) { + return combinedType; + } + } + } + } + // if the aggregate inference isn't assignable to the constraint return undefined + // this way the compiler keeps preferring the default type + return undefined; + } + function getInferredType(context: InferenceContext, index: number): Type { const inference = context.inferences[index]; if (!inference.inferredType) { @@ -27593,51 +27625,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { fallbackType = preferCovariantType ? inferredContravariantType : inferredCovariantType; } else if (inference.indexes) { - const eraseSelfMapper = makeUnaryTypeMapper(inference.typeParameter, allKeysUnknownType); - let aggregateInference: Type | undefined = instantiateType(getIntersectionType(inference.indexes), mergeTypeMappers(eraseSelfMapper, context.nonFixingMapper)); - if (getReducedType(aggregateInference).flags & TypeFlags.Never) { - // `never` inference isn't that useful of an inference given its assignable to every other type - aggregateInference = undefined; - } - const constraint = getConstraintOfTypeParameter(inference.typeParameter); - if (aggregateInference && constraint) { - const instantiatedConstraint = instantiateType(constraint, context.nonFixingMapper); - let assignableToConstraint = context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference)); - if (!assignableToConstraint) { - if (instantiatedConstraint.flags & TypeFlags.Union) { - const discriminantProps = findDiscriminantProperties(getPropertiesOfType(aggregateInference), instantiatedConstraint); - if (discriminantProps) { - let match: Type | undefined; - findDiscriminant: - for (const p of discriminantProps) { - const candidatePropType = getTypeOfPropertyOfType(aggregateInference, p.escapedName); - for (const type of (instantiatedConstraint as UnionType).types) { - const propType = getTypeOfPropertyOfType(type, p.escapedName); - if (propType && candidatePropType && checkTypeAssignableTo(candidatePropType, propType, /*errorNode*/ undefined)) { - if (match && match !== type) { - match = undefined; - break findDiscriminant; - } - else { - match = type; - } - } - } - } - if (match) { - aggregateInference = getSpreadType(match, aggregateInference, /*symbol*/ undefined, /*propegatedFlags*/ 0, /*readonly*/ false); - assignableToConstraint = context.compareTypes(aggregateInference, getTypeWithThisArgument(instantiatedConstraint, aggregateInference)); - } - } - } - if (!assignableToConstraint) { - // if the aggregate inference isn't assignable to the constraint clear it out - // this way the compiler keeps preferring the default type - aggregateInference = undefined; - } - } - } - inferredType = aggregateInference; + const instantiatedConstraint = instantiateType(getConstraintOfTypeParameter(inference.typeParameter), context.nonFixingMapper); + inferredType = getAggregateInference(inference, instantiatedConstraint, context.compareTypes, context.nonFixingMapper); } else if (context.flags & InferenceFlags.NoDefault) { // We use silentNeverType as the wildcard that signals no inferences. diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.symbols b/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.symbols new file mode 100644 index 0000000000000..3bea9975557b9 --- /dev/null +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.symbols @@ -0,0 +1,32 @@ +//// [tests/cases/compiler/typeInferenceAggregateFromIndicesInConditionalTypes1.ts] //// + +=== typeInferenceAggregateFromIndicesInConditionalTypes1.ts === +type Foo = { +>Foo : Symbol(Foo, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 0, 0)) + + a: string; +>a : Symbol(a, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 0, 12)) + + b: number; +>b : Symbol(b, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 1, 14)) + + c: boolean; +>c : Symbol(c, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 2, 14)) +} + +type AC = T extends { a: (infer R extends Record)["_a"]; c: (infer R)["_c"] } ? R : never; +>AC : Symbol(AC, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 4, 1)) +>T : Symbol(T, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 8)) +>T : Symbol(T, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 8)) +>a : Symbol(a, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 24)) +>R : Symbol(R, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 34), Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 82)) +>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) +>c : Symbol(c, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 72)) +>R : Symbol(R, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 34), Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 82)) +>R : Symbol(R, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 34), Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 82)) + +type Result1 = AC; +>Result1 : Symbol(Result1, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 6, 106)) +>AC : Symbol(AC, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 4, 1)) +>Foo : Symbol(Foo, Decl(typeInferenceAggregateFromIndicesInConditionalTypes1.ts, 0, 0)) + diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types b/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types new file mode 100644 index 0000000000000..ae25907c6ea56 --- /dev/null +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types @@ -0,0 +1,32 @@ +//// [tests/cases/compiler/typeInferenceAggregateFromIndicesInConditionalTypes1.ts] //// + +=== typeInferenceAggregateFromIndicesInConditionalTypes1.ts === +type Foo = { +>Foo : Foo +> : ^^^ + + a: string; +>a : string +> : ^^^^^^ + + b: number; +>b : number +> : ^^^^^^ + + c: boolean; +>c : boolean +> : ^^^^^^^ +} + +type AC = T extends { a: (infer R extends Record)["_a"]; c: (infer R)["_c"] } ? R : never; +>AC : AC +> : ^^^^^ +>a : R["_a"] +> : ^^^^^^^ +>c : R["_c"] +> : ^^^^^^^ + +type Result1 = AC; +>Result1 : { _a: string; } & { _c: boolean; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols index 0cadaa64184c2..340e382394df2 100644 --- a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.symbols @@ -69,3 +69,20 @@ export const { name, values } = useController({ }); +declare function fn1(arg: T[keyof T & keyof U], u: U): T; +>fn1 : Symbol(fn1, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 3)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 21)) +>U : Symbol(U, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 23)) +>arg : Symbol(arg, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 27)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 21)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 21)) +>U : Symbol(U, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 23)) +>u : Symbol(u, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 53)) +>U : Symbol(U, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 23)) +>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 22, 21)) + +const res1 = fn1("foo", { prop: 42 }); +>res1 : Symbol(res1, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 24, 5)) +>fn1 : Symbol(fn1, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 3)) +>prop : Symbol(prop, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 24, 25)) + diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types index bd6dc0e5fa678..297f0cafb3333 100644 --- a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types @@ -65,3 +65,27 @@ export const { name, values } = useController({ }); +declare function fn1(arg: T[keyof T & keyof U], u: U): T; +>fn1 : (arg: T[keyof T & keyof U], u: U) => T +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>arg : T[keyof T & keyof U] +> : ^^^^^^^^^^^^^^^^^^^^ +>u : U +> : ^ + +const res1 = fn1("foo", { prop: 42 }); +>res1 : { prop: "foo"; } +> : ^^^^^^^^^^^^^^^^ +>fn1("foo", { prop: 42 }) : { prop: "foo"; } +> : ^^^^^^^^^^^^^^^^ +>fn1 : (arg: T[keyof T & keyof U], u: U) => T +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>"foo" : "foo" +> : ^^^^^ +>{ prop: 42 } : { prop: number; } +> : ^^^^^^^^^^^^^^^^^ +>prop : number +> : ^^^^^^ +>42 : 42 +> : ^^ + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt deleted file mode 100644 index ba1eca3a82d9c..0000000000000 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.errors.txt +++ /dev/null @@ -1,39 +0,0 @@ -typeInferenceSelfIndexingTypeParameter1.ts(30,50): error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type 'Comparator>'. - Property 'rangeStart' is missing in type 'Record<"sourceOrder", number>' but required in type 'Record<"rangeStart", number>'. - - -==== typeInferenceSelfIndexingTypeParameter1.ts (1 errors) ==== - type Comparator = (a: T, b: T) => -1 | 0 | 1; - - declare const createComparator: ( - property: K, - comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, - ) => Comparator; - - declare const concatComparators: ( - c1: Comparator, - c2: Comparator, - ...cRest: Comparator[] - ) => Comparator; - - declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; - - declare class ModuleGraphConnection { - clone(): ModuleGraphConnection; - } - - const bySourceOrder = createComparator("sourceOrder", compareNumbers); - const byRangeStart = createComparator("rangeStart", compareNumbers); - - declare const references: { - connection: ModuleGraphConnection; - sourceOrder: number; - rangeStart: number | undefined; - defer?: boolean; - }[]; - - references.sort(concatComparators(bySourceOrder, byRangeStart)); - ~~~~~~~~~~~~ -!!! error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type 'Comparator>'. -!!! error TS2345: Property 'rangeStart' is missing in type 'Record<"sourceOrder", number>' but required in type 'Record<"rangeStart", number>'. - \ No newline at end of file diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols index cae82a94f6a20..331f4f65b54a3 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols @@ -1,106 +1,15 @@ //// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts] //// === typeInferenceSelfIndexingTypeParameter1.ts === -type Comparator = (a: T, b: T) => -1 | 0 | 1; ->Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 16)) ->a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 22)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 16)) ->b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 27)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 16)) - -declare const createComparator: ( ->createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 13)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) - - property: K, ->property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 55)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) - - comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, ->comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 14)) ->a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 15)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) ->b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 23)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 35)) - -) => Comparator; ->Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 33)) - -declare const concatComparators: ( ->concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 13)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) - - c1: Comparator, ->c1 : Symbol(c1, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 38)) ->Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) - - c2: Comparator, ->c2 : Symbol(c2, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 8, 20)) ->Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) - - ...cRest: Comparator[] ->cRest : Symbol(cRest, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 9, 20)) ->Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) - -) => Comparator; ->Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 34)) - -declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; ->compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 13)) ->a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 31)) ->b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 41)) - -declare class ModuleGraphConnection { ->ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 67)) - - clone(): ModuleGraphConnection; ->clone : Symbol(ModuleGraphConnection.clone, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 15, 37)) ->ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 67)) -} - -const bySourceOrder = createComparator("sourceOrder", compareNumbers); ->bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 19, 5)) ->createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 13)) ->compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 13)) - -const byRangeStart = createComparator("rangeStart", compareNumbers); ->byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 20, 5)) ->createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 2, 13)) ->compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 13)) - -declare const references: { ->references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 22, 13)) - - connection: ModuleGraphConnection; ->connection : Symbol(connection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 22, 27)) ->ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 13, 67)) - - sourceOrder: number; ->sourceOrder : Symbol(sourceOrder, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 23, 36)) - - rangeStart: number | undefined; ->rangeStart : Symbol(rangeStart, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 24, 22)) - - defer?: boolean; ->defer : Symbol(defer, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 25, 33)) - -}[]; - -references.sort(concatComparators(bySourceOrder, byRangeStart)); ->references.sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) ->references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 22, 13)) ->sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) ->concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 7, 13)) ->bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 19, 5)) ->byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 20, 5)) +declare function fn1(arg: T[keyof T]): T +>fn1 : Symbol(fn1, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 21)) +>arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 24)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 21)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 21)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 21)) + +const res1 = fn1(["foo"]); +>res1 : Symbol(res1, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 1, 5)) +>fn1 : Symbol(fn1, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types index 7e68e88895b57..c4881c7bb90c1 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types @@ -1,140 +1,21 @@ //// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts] //// === typeInferenceSelfIndexingTypeParameter1.ts === -type Comparator = (a: T, b: T) => -1 | 0 | 1; ->Comparator : Comparator -> : ^^^^^^^^^^^^^ ->a : T -> : ^ ->b : T -> : ^ ->-1 : -1 -> : ^^ ->1 : 1 -> : ^ - -declare const createComparator: ( ->createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ - - property: K, ->property : K -> : ^ - - comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, ->comparator : (a: T[K], b: T[K]) => 0 | 1 | -1 -> : ^ ^^ ^^ ^^ ^^^^^ ->a : T[K] -> : ^^^^ ->b : T[K] -> : ^^^^ ->-1 : -1 -> : ^^ ->1 : 1 -> : ^ - -) => Comparator; - -declare const concatComparators: ( ->concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ - - c1: Comparator, ->c1 : Comparator -> : ^^^^^^^^^^^^^ - - c2: Comparator, ->c2 : Comparator -> : ^^^^^^^^^^^^^ - - ...cRest: Comparator[] ->cRest : Comparator[] -> : ^^^^^^^^^^^^^^^ - -) => Comparator; - -declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; ->compareNumbers : (a: number, b: number) => 0 | 1 | -1 -> : ^ ^^ ^^ ^^ ^^^^^ ->a : number -> : ^^^^^^ ->b : number -> : ^^^^^^ ->-1 : -1 -> : ^^ ->1 : 1 -> : ^ - -declare class ModuleGraphConnection { ->ModuleGraphConnection : ModuleGraphConnection -> : ^^^^^^^^^^^^^^^^^^^^^ - - clone(): ModuleGraphConnection; ->clone : () => ModuleGraphConnection -> : ^^^^^^ -} - -const bySourceOrder = createComparator("sourceOrder", compareNumbers); ->bySourceOrder : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator("sourceOrder", compareNumbers) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ->"sourceOrder" : "sourceOrder" -> : ^^^^^^^^^^^^^ ->compareNumbers : (a: number, b: number) => 0 | 1 | -1 -> : ^ ^^ ^^ ^^ ^^^^^ - -const byRangeStart = createComparator("rangeStart", compareNumbers); ->byRangeStart : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator("rangeStart", compareNumbers) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ->"rangeStart" : "rangeStart" -> : ^^^^^^^^^^^^ ->compareNumbers : (a: number, b: number) => 0 | 1 | -1 -> : ^ ^^ ^^ ^^ ^^^^^ - -declare const references: { ->references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ - - connection: ModuleGraphConnection; ->connection : ModuleGraphConnection -> : ^^^^^^^^^^^^^^^^^^^^^ - - sourceOrder: number; ->sourceOrder : number -> : ^^^^^^ - - rangeStart: number | undefined; ->rangeStart : number | undefined -> : ^^^^^^^^^^^^^^^^^^ - - defer?: boolean; ->defer : boolean | undefined -> : ^^^^^^^^^^^^^^^^^^^ - -}[]; - -references.sort(concatComparators(bySourceOrder, byRangeStart)); ->references.sort(concatComparators(bySourceOrder, byRangeStart)) : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ->references.sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ->references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ->sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ->concatComparators(bySourceOrder, byRangeStart) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ ->bySourceOrder : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->byRangeStart : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +declare function fn1(arg: T[keyof T]): T +>fn1 : (arg: T[keyof T]) => T +> : ^ ^^ ^^ ^^^^^ +>arg : T[keyof T] +> : ^^^^^^^^^^ + +const res1 = fn1(["foo"]); +>res1 : Record +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fn1(["foo"]) : Record +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fn1 : (arg: T[keyof T]) => T +> : ^ ^^ ^^ ^^^^^ +>["foo"] : string[] +> : ^^^^^^^^ +>"foo" : "foo" +> : ^^^^^ diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt index 2fc1d729437d1..3c10ac65eb684 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.errors.txt @@ -1,16 +1,13 @@ -typeInferenceSelfIndexingTypeParameter2.ts(30,17): error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type '(a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }) => number'. - Types of parameters 'a' and 'a' are incompatible. - Type '{ connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }' is not assignable to type 'Record'. - Property 'connection' is incompatible with index signature. - Type 'ModuleGraphConnection' is not assignable to type 'number'. +typeInferenceSelfIndexingTypeParameter2.ts(30,50): error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type 'Comparator>'. + Property 'rangeStart' is missing in type 'Record<"sourceOrder", number>' but required in type 'Record<"rangeStart", number>'. ==== typeInferenceSelfIndexingTypeParameter2.ts (1 errors) ==== type Comparator = (a: T, b: T) => -1 | 0 | 1; - declare const createComparator: ( - property: string, - comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, + declare const createComparator: ( + property: K, + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, ) => Comparator; declare const concatComparators: ( @@ -36,10 +33,7 @@ typeInferenceSelfIndexingTypeParameter2.ts(30,17): error TS2345: Argument of typ }[]; references.sort(concatComparators(bySourceOrder, byRangeStart)); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type '(a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }) => number'. -!!! error TS2345: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2345: Type '{ connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }' is not assignable to type 'Record'. -!!! error TS2345: Property 'connection' is incompatible with index signature. -!!! error TS2345: Type 'ModuleGraphConnection' is not assignable to type 'number'. + ~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type 'Comparator>'. +!!! error TS2345: Property 'rangeStart' is missing in type 'Record<"sourceOrder", number>' but required in type 'Record<"rangeStart", number>'. \ No newline at end of file diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols index b28acf052c5d6..a9e39b3efd04b 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.symbols @@ -9,21 +9,24 @@ type Comparator = (a: T, b: T) => -1 | 0 | 1; >b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 27)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 16)) -declare const createComparator: ( +declare const createComparator: ( >createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 35)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) - property: string, ->property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 37)) + property: K, +>property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 55)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 35)) - comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, ->comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 3, 19)) + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, +>comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 3, 14)) >a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 4, 15)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 35)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 4, 23)) >T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) ->b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 4, 29)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 33)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 2, 35)) ) => Comparator; >Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter2.ts, 0, 0)) diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types index adcdc73ce7cb9..7f7f2c03034d6 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter2.types @@ -13,21 +13,21 @@ type Comparator = (a: T, b: T) => -1 | 0 | 1; >1 : 1 > : ^ -declare const createComparator: ( ->createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ - - property: string, ->property : string -> : ^^^^^^ - - comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, ->comparator : (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1 -> : ^ ^^ ^^ ^^ ^^^^^ ->a : T[keyof T] -> : ^^^^^^^^^^ ->b : T[keyof T] -> : ^^^^^^^^^^ +declare const createComparator: ( +>createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ + + property: K, +>property : K +> : ^ + + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, +>comparator : (a: T[K], b: T[K]) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : T[K] +> : ^^^^ +>b : T[K] +> : ^^^^ >-1 : -1 > : ^^ >1 : 1 @@ -75,24 +75,24 @@ declare class ModuleGraphConnection { } const bySourceOrder = createComparator("sourceOrder", compareNumbers); ->bySourceOrder : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator("sourceOrder", compareNumbers) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("sourceOrder", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >"sourceOrder" : "sourceOrder" > : ^^^^^^^^^^^^^ >compareNumbers : (a: number, b: number) => 0 | 1 | -1 > : ^ ^^ ^^ ^^ ^^^^^ const byRangeStart = createComparator("rangeStart", compareNumbers); ->byRangeStart : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator("rangeStart", compareNumbers) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("rangeStart", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: K, comparator: (a: T[K], b: T[K]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >"rangeStart" : "rangeStart" > : ^^^^^^^^^^^^ >compareNumbers : (a: number, b: number) => 0 | 1 | -1 @@ -129,12 +129,12 @@ references.sort(concatComparators(bySourceOrder, byRangeStart)); > : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ >sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] > : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ->concatComparators(bySourceOrder, byRangeStart) : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>concatComparators(bySourceOrder, byRangeStart) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator > : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ ->bySourceOrder : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->byRangeStart : Comparator> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.errors.txt b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.errors.txt new file mode 100644 index 0000000000000..845da45b3c7fe --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.errors.txt @@ -0,0 +1,45 @@ +typeInferenceSelfIndexingTypeParameter3.ts(30,17): error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type '(a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }) => number'. + Types of parameters 'a' and 'a' are incompatible. + Type '{ connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }' is not assignable to type 'Record'. + Property 'connection' is incompatible with index signature. + Type 'ModuleGraphConnection' is not assignable to type 'number'. + + +==== typeInferenceSelfIndexingTypeParameter3.ts (1 errors) ==== + type Comparator = (a: T, b: T) => -1 | 0 | 1; + + declare const createComparator: ( + property: string, + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, + ) => Comparator; + + declare const concatComparators: ( + c1: Comparator, + c2: Comparator, + ...cRest: Comparator[] + ) => Comparator; + + declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; + + declare class ModuleGraphConnection { + clone(): ModuleGraphConnection; + } + + const bySourceOrder = createComparator("sourceOrder", compareNumbers); + const byRangeStart = createComparator("rangeStart", compareNumbers); + + declare const references: { + connection: ModuleGraphConnection; + sourceOrder: number; + rangeStart: number | undefined; + defer?: boolean; + }[]; + + references.sort(concatComparators(bySourceOrder, byRangeStart)); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'Comparator>' is not assignable to parameter of type '(a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }) => number'. +!!! error TS2345: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2345: Type '{ connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean | undefined; }' is not assignable to type 'Record'. +!!! error TS2345: Property 'connection' is incompatible with index signature. +!!! error TS2345: Type 'ModuleGraphConnection' is not assignable to type 'number'. + \ No newline at end of file diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols index 8c7fd07bc9a87..fd5c0a52681d5 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.symbols @@ -1,109 +1,103 @@ //// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts] //// === typeInferenceSelfIndexingTypeParameter3.ts === -declare function f1( ->f1 : Symbol(f1, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) - - arg: { ->arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 23)) - - [K in keyof T]: T[K][keyof T[K]]; ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 5)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 5)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 5)) - } -): T; ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 20)) - -const res1 = f1({ ->res1 : Symbol(res1, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 6, 5)) ->f1 : Symbol(f1, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) - - a: "hello", ->a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 6, 17)) - - b: 100, ->b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 13)) - -}); - -type Inner = { ->Inner : Symbol(Inner, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 9, 3)) ->O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) - - [I in keyof O]: O[I][keyof O[I]]; ->I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 12, 3)) ->O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) ->O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) ->I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 12, 3)) ->O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 11, 11)) ->I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 12, 3)) - -}; - -declare function f2(fields: { ->f2 : Symbol(f2, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 2)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) ->fields : Symbol(fields, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 23)) - - [K in keyof T]: { ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 16, 3)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) - - label: string; ->label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 16, 19)) - - values: Inner; ->values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 17, 18)) ->Inner : Symbol(Inner, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 9, 3)) ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) ->K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 16, 3)) - - }; -}): T; ->T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 20)) - -const res2 = f2({ ->res2 : Symbol(res2, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 22, 5)) ->f2 : Symbol(f2, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 2)) - - prop: { ->prop : Symbol(prop, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 22, 17)) - - label: "first", ->label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 23, 9)) - - values: { ->values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 24, 19)) - - foo: 123, ->foo : Symbol(foo, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 25, 13)) - - bar: true, ->bar : Symbol(bar, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 26, 15)) - - }, - }, - other: { ->other : Symbol(other, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 29, 4)) - - label: "second", ->label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 30, 10)) - - values: { ->values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 31, 20)) - - baz: "", ->baz : Symbol(baz, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 32, 13)) - - qwe: [true], ->qwe : Symbol(qwe, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 33, 14)) - - }, - }, -}); +type Comparator = (a: T, b: T) => -1 | 0 | 1; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 16)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 22)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 16)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 27)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 16)) + +declare const createComparator: ( +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 33)) + + property: string, +>property : Symbol(property, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 37)) + + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +>comparator : Symbol(comparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 3, 19)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 4, 15)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 33)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 33)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 4, 29)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 33)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 33)) + +) => Comparator; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 33)) + +declare const concatComparators: ( +>concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 13)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 34)) + + c1: Comparator, +>c1 : Symbol(c1, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 38)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 34)) + + c2: Comparator, +>c2 : Symbol(c2, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 8, 20)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 34)) + + ...cRest: Comparator[] +>cRest : Symbol(cRest, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 9, 20)) +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 34)) + +) => Comparator; +>Comparator : Symbol(Comparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 34)) + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 13)) +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 31)) +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 41)) + +declare class ModuleGraphConnection { +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 67)) + + clone(): ModuleGraphConnection; +>clone : Symbol(ModuleGraphConnection.clone, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 15, 37)) +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 67)) +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +>bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 19, 5)) +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 13)) +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 13)) + +const byRangeStart = createComparator("rangeStart", compareNumbers); +>byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 20, 5)) +>createComparator : Symbol(createComparator, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 2, 13)) +>compareNumbers : Symbol(compareNumbers, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 13)) + +declare const references: { +>references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 22, 13)) + + connection: ModuleGraphConnection; +>connection : Symbol(connection, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 22, 27)) +>ModuleGraphConnection : Symbol(ModuleGraphConnection, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 13, 67)) + + sourceOrder: number; +>sourceOrder : Symbol(sourceOrder, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 23, 36)) + + rangeStart: number | undefined; +>rangeStart : Symbol(rangeStart, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 24, 22)) + + defer?: boolean; +>defer : Symbol(defer, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 25, 33)) + +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); +>references.sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) +>references : Symbol(references, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 22, 13)) +>sort : Symbol(Array.sort, Decl(lib.es5.d.ts, --, --)) +>concatComparators : Symbol(concatComparators, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 7, 13)) +>bySourceOrder : Symbol(bySourceOrder, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 19, 5)) +>byRangeStart : Symbol(byRangeStart, Decl(typeInferenceSelfIndexingTypeParameter3.ts, 20, 5)) diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types index 3bc267e135314..bd46074ff9622 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter3.types @@ -1,142 +1,140 @@ //// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts] //// === typeInferenceSelfIndexingTypeParameter3.ts === -declare function f1( ->f1 : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T -> : ^ ^^ ^^ ^^^^^ - - arg: { ->arg : { [K in keyof T]: T[K][keyof T[K]]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - [K in keyof T]: T[K][keyof T[K]]; - } -): T; - -const res1 = f1({ ->res1 : { a: Record; b: Record; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f1({ a: "hello", b: 100,}) : { a: Record; b: Record; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f1 : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T -> : ^ ^^ ^^ ^^^^^ ->{ a: "hello", b: 100,} : { a: string; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ - - a: "hello", ->a : string -> : ^^^^^^ ->"hello" : "hello" -> : ^^^^^^^ +type Comparator = (a: T, b: T) => -1 | 0 | 1; +>Comparator : Comparator +> : ^^^^^^^^^^^^^ +>a : T +> : ^ +>b : T +> : ^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +declare const createComparator: ( +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ + + property: string, +>property : string +> : ^^^^^^ + + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +>comparator : (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : T[keyof T] +> : ^^^^^^^^^^ +>b : T[keyof T] +> : ^^^^^^^^^^ +>-1 : -1 +> : ^^ +>1 : 1 +> : ^ + +) => Comparator; + +declare const concatComparators: ( +>concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ + + c1: Comparator, +>c1 : Comparator +> : ^^^^^^^^^^^^^ - b: 100, + c2: Comparator, +>c2 : Comparator +> : ^^^^^^^^^^^^^ + + ...cRest: Comparator[] +>cRest : Comparator[] +> : ^^^^^^^^^^^^^^^ + +) => Comparator; + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ +>a : number +> : ^^^^^^ >b : number > : ^^^^^^ ->100 : 100 -> : ^^^ - -}); - -type Inner = { ->Inner : Inner -> : ^^^^^^^^ - - [I in keyof O]: O[I][keyof O[I]]; -}; - -declare function f2(fields: { ->f2 : (fields: { [K in keyof T]: { label: string; values: Inner; }; }) => T -> : ^ ^^ ^^ ^^^^^ ->fields : { [K in keyof T]: { label: string; values: Inner; }; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^ - - [K in keyof T]: { - label: string; ->label : string -> : ^^^^^^ - - values: Inner; ->values : Inner -> : ^^^^^^^^^^^ - - }; -}): T; - -const res2 = f2({ ->res2 : { prop: { foo: Record; bar: Record; }; other: { baz: Record; qwe: Record; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f2({ prop: { label: "first", values: { foo: 123, bar: true, }, }, other: { label: "second", values: { baz: "", qwe: [true], }, },}) : { prop: { foo: Record; bar: Record; }; other: { baz: Record; qwe: Record; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f2 : (fields: { [K in keyof T]: { label: string; values: Inner; }; }) => T -> : ^ ^^ ^^ ^^^^^ ->{ prop: { label: "first", values: { foo: 123, bar: true, }, }, other: { label: "second", values: { baz: "", qwe: [true], }, },} : { prop: { label: string; values: { foo: number; bar: true; }; }; other: { label: string; values: { baz: string; qwe: true[]; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - prop: { ->prop : { label: string; values: { foo: number; bar: true; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ label: "first", values: { foo: 123, bar: true, }, } : { label: string; values: { foo: number; bar: true; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - label: "first", ->label : string -> : ^^^^^^ ->"first" : "first" -> : ^^^^^^^ - - values: { ->values : { foo: number; bar: true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ foo: 123, bar: true, } : { foo: number; bar: true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - foo: 123, ->foo : number -> : ^^^^^^ ->123 : 123 -> : ^^^ - - bar: true, ->bar : true -> : ^^^^ ->true : true -> : ^^^^ - - }, - }, - other: { ->other : { label: string; values: { baz: string; qwe: true[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ label: "second", values: { baz: "", qwe: [true], }, } : { label: string; values: { baz: string; qwe: true[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - label: "second", ->label : string -> : ^^^^^^ ->"second" : "second" -> : ^^^^^^^^ - - values: { ->values : { baz: string; qwe: true[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ baz: "", qwe: [true], } : { baz: string; qwe: true[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - baz: "", ->baz : string -> : ^^^^^^ ->"" : "" +>-1 : -1 > : ^^ - - qwe: [true], ->qwe : true[] -> : ^^^^^^ ->[true] : true[] -> : ^^^^^^ ->true : true -> : ^^^^ - - }, - }, -}); +>1 : 1 +> : ^ + +declare class ModuleGraphConnection { +>ModuleGraphConnection : ModuleGraphConnection +> : ^^^^^^^^^^^^^^^^^^^^^ + + clone(): ModuleGraphConnection; +>clone : () => ModuleGraphConnection +> : ^^^^^^ +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("sourceOrder", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>"sourceOrder" : "sourceOrder" +> : ^^^^^^^^^^^^^ +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ + +const byRangeStart = createComparator("rangeStart", compareNumbers); +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator("rangeStart", compareNumbers) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createComparator : (property: string, comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>"rangeStart" : "rangeStart" +> : ^^^^^^^^^^^^ +>compareNumbers : (a: number, b: number) => 0 | 1 | -1 +> : ^ ^^ ^^ ^^ ^^^^^ + +declare const references: { +>references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ + + connection: ModuleGraphConnection; +>connection : ModuleGraphConnection +> : ^^^^^^^^^^^^^^^^^^^^^ + + sourceOrder: number; +>sourceOrder : number +> : ^^^^^^ + + rangeStart: number | undefined; +>rangeStart : number | undefined +> : ^^^^^^^^^^^^^^^^^^ + + defer?: boolean; +>defer : boolean | undefined +> : ^^^^^^^^^^^^^^^^^^^ + +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); +>references.sort(concatComparators(bySourceOrder, byRangeStart)) : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>references.sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>references : { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>sort : (compareFn?: ((a: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }, b: { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }) => number) | undefined) => { connection: ModuleGraphConnection; sourceOrder: number; rangeStart: number | undefined; defer?: boolean; }[] +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +>concatComparators(bySourceOrder, byRangeStart) : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>concatComparators : (c1: Comparator, c2: Comparator, ...cRest: Comparator[]) => Comparator +> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>bySourceOrder : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>byRangeStart : Comparator> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols new file mode 100644 index 0000000000000..f7cee4a489241 --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols @@ -0,0 +1,109 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts] //// + +=== typeInferenceSelfIndexingTypeParameter4.ts === +declare function f1( +>f1 : Symbol(f1, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 0)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 20)) + + arg: { +>arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 23)) + + [K in keyof T]: T[K][keyof T[K]]; +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 2, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 20)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 2, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 2, 5)) + } +): T; +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 20)) + +const res1 = f1({ +>res1 : Symbol(res1, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 6, 5)) +>f1 : Symbol(f1, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 0, 0)) + + a: "hello", +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 6, 17)) + + b: 100, +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 7, 13)) + +}); + +type Inner = { +>Inner : Symbol(Inner, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 9, 3)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 11, 11)) + + [I in keyof O]: O[I][keyof O[I]]; +>I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 12, 3)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 11, 11)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 11, 11)) +>I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 12, 3)) +>O : Symbol(O, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 11, 11)) +>I : Symbol(I, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 12, 3)) + +}; + +declare function f2(fields: { +>f2 : Symbol(f2, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 13, 2)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 15, 20)) +>fields : Symbol(fields, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 15, 23)) + + [K in keyof T]: { +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 16, 3)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 15, 20)) + + label: string; +>label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 16, 19)) + + values: Inner; +>values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 17, 18)) +>Inner : Symbol(Inner, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 9, 3)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 15, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 16, 3)) + + }; +}): T; +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 15, 20)) + +const res2 = f2({ +>res2 : Symbol(res2, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 22, 5)) +>f2 : Symbol(f2, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 13, 2)) + + prop: { +>prop : Symbol(prop, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 22, 17)) + + label: "first", +>label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 23, 9)) + + values: { +>values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 24, 19)) + + foo: 123, +>foo : Symbol(foo, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 25, 13)) + + bar: true, +>bar : Symbol(bar, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 26, 15)) + + }, + }, + other: { +>other : Symbol(other, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 29, 4)) + + label: "second", +>label : Symbol(label, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 30, 10)) + + values: { +>values : Symbol(values, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 31, 20)) + + baz: "", +>baz : Symbol(baz, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 32, 13)) + + qwe: [true], +>qwe : Symbol(qwe, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 33, 14)) + + }, + }, +}); + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types new file mode 100644 index 0000000000000..45448215737dd --- /dev/null +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types @@ -0,0 +1,142 @@ +//// [tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts] //// + +=== typeInferenceSelfIndexingTypeParameter4.ts === +declare function f1( +>f1 : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T +> : ^ ^^ ^^ ^^^^^ + + arg: { +>arg : { [K in keyof T]: T[K][keyof T[K]]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + [K in keyof T]: T[K][keyof T[K]]; + } +): T; + +const res1 = f1({ +>res1 : { a: Record; b: Record; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f1({ a: "hello", b: 100,}) : { a: Record; b: Record; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f1 : (arg: { [K in keyof T]: T[K][keyof T[K]]; }) => T +> : ^ ^^ ^^ ^^^^^ +>{ a: "hello", b: 100,} : { a: string; b: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + + a: "hello", +>a : string +> : ^^^^^^ +>"hello" : "hello" +> : ^^^^^^^ + + b: 100, +>b : number +> : ^^^^^^ +>100 : 100 +> : ^^^ + +}); + +type Inner = { +>Inner : Inner +> : ^^^^^^^^ + + [I in keyof O]: O[I][keyof O[I]]; +}; + +declare function f2(fields: { +>f2 : (fields: { [K in keyof T]: { label: string; values: Inner; }; }) => T +> : ^ ^^ ^^ ^^^^^ +>fields : { [K in keyof T]: { label: string; values: Inner; }; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^ + + [K in keyof T]: { + label: string; +>label : string +> : ^^^^^^ + + values: Inner; +>values : Inner +> : ^^^^^^^^^^^ + + }; +}): T; + +const res2 = f2({ +>res2 : { prop: { foo: Record; bar: Record; }; other: { baz: Record; qwe: Record; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f2({ prop: { label: "first", values: { foo: 123, bar: true, }, }, other: { label: "second", values: { baz: "", qwe: [true], }, },}) : { prop: { foo: Record; bar: Record; }; other: { baz: Record; qwe: Record; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f2 : (fields: { [K in keyof T]: { label: string; values: Inner; }; }) => T +> : ^ ^^ ^^ ^^^^^ +>{ prop: { label: "first", values: { foo: 123, bar: true, }, }, other: { label: "second", values: { baz: "", qwe: [true], }, },} : { prop: { label: string; values: { foo: number; bar: true; }; }; other: { label: string; values: { baz: string; qwe: true[]; }; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + prop: { +>prop : { label: string; values: { foo: number; bar: true; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ label: "first", values: { foo: 123, bar: true, }, } : { label: string; values: { foo: number; bar: true; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + label: "first", +>label : string +> : ^^^^^^ +>"first" : "first" +> : ^^^^^^^ + + values: { +>values : { foo: number; bar: true; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ foo: 123, bar: true, } : { foo: number; bar: true; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + foo: 123, +>foo : number +> : ^^^^^^ +>123 : 123 +> : ^^^ + + bar: true, +>bar : true +> : ^^^^ +>true : true +> : ^^^^ + + }, + }, + other: { +>other : { label: string; values: { baz: string; qwe: true[]; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ label: "second", values: { baz: "", qwe: [true], }, } : { label: string; values: { baz: string; qwe: true[]; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + label: "second", +>label : string +> : ^^^^^^ +>"second" : "second" +> : ^^^^^^^^ + + values: { +>values : { baz: string; qwe: true[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ baz: "", qwe: [true], } : { baz: string; qwe: true[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + baz: "", +>baz : string +> : ^^^^^^ +>"" : "" +> : ^^ + + qwe: [true], +>qwe : true[] +> : ^^^^^^ +>[true] : true[] +> : ^^^^^^ +>true : true +> : ^^^^ + + }, + }, +}); + diff --git a/tests/cases/compiler/typeInferenceAggregateFromIndicesInConditionalTypes1.ts b/tests/cases/compiler/typeInferenceAggregateFromIndicesInConditionalTypes1.ts new file mode 100644 index 0000000000000..5c3747622b269 --- /dev/null +++ b/tests/cases/compiler/typeInferenceAggregateFromIndicesInConditionalTypes1.ts @@ -0,0 +1,12 @@ +// @strict: true +// @noEmit: true + +type Foo = { + a: string; + b: number; + c: boolean; +} + +type AC = T extends { a: (infer R extends Record)["_a"]; c: (infer R)["_c"] } ? R : never; + +type Result1 = AC; diff --git a/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts b/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts index 951dfe586c07c..c7066a6238257 100644 --- a/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts +++ b/tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts @@ -22,3 +22,7 @@ export const { name, values } = useController({ name: "test", defaultValue: "", }); + +declare function fn1(arg: T[keyof T & keyof U], u: U): T; + +const res1 = fn1("foo", { prop: 42 }); diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts index 0c52d44b53196..c81f41e950936 100644 --- a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts @@ -1,33 +1,5 @@ // @strict: true // @noEmit: true -type Comparator = (a: T, b: T) => -1 | 0 | 1; - -declare const createComparator: ( - property: K, - comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, -) => Comparator; - -declare const concatComparators: ( - c1: Comparator, - c2: Comparator, - ...cRest: Comparator[] -) => Comparator; - -declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; - -declare class ModuleGraphConnection { - clone(): ModuleGraphConnection; -} - -const bySourceOrder = createComparator("sourceOrder", compareNumbers); -const byRangeStart = createComparator("rangeStart", compareNumbers); - -declare const references: { - connection: ModuleGraphConnection; - sourceOrder: number; - rangeStart: number | undefined; - defer?: boolean; -}[]; - -references.sort(concatComparators(bySourceOrder, byRangeStart)); +declare function fn1(arg: T[keyof T]): T +const res1 = fn1(["foo"]); diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts index 9e4c30d954b47..0c52d44b53196 100644 --- a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter2.ts @@ -3,9 +3,9 @@ type Comparator = (a: T, b: T) => -1 | 0 | 1; -declare const createComparator: ( - property: string, - comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +declare const createComparator: ( + property: K, + comparator: (a: T[K], b: T[K]) => 0 | 1 | -1, ) => Comparator; declare const concatComparators: ( diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts index 69f1e848fa247..9e4c30d954b47 100644 --- a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter3.ts @@ -1,41 +1,33 @@ // @strict: true // @noEmit: true -declare function f1( - arg: { - [K in keyof T]: T[K][keyof T[K]]; - } -): T; - -const res1 = f1({ - a: "hello", - b: 100, -}); - -type Inner = { - [I in keyof O]: O[I][keyof O[I]]; -}; - -declare function f2(fields: { - [K in keyof T]: { - label: string; - values: Inner; - }; -}): T; - -const res2 = f2({ - prop: { - label: "first", - values: { - foo: 123, - bar: true, - }, - }, - other: { - label: "second", - values: { - baz: "", - qwe: [true], - }, - }, -}); +type Comparator = (a: T, b: T) => -1 | 0 | 1; + +declare const createComparator: ( + property: string, + comparator: (a: T[keyof T], b: T[keyof T]) => 0 | 1 | -1, +) => Comparator; + +declare const concatComparators: ( + c1: Comparator, + c2: Comparator, + ...cRest: Comparator[] +) => Comparator; + +declare const compareNumbers: (a: number, b: number) => 0 | 1 | -1; + +declare class ModuleGraphConnection { + clone(): ModuleGraphConnection; +} + +const bySourceOrder = createComparator("sourceOrder", compareNumbers); +const byRangeStart = createComparator("rangeStart", compareNumbers); + +declare const references: { + connection: ModuleGraphConnection; + sourceOrder: number; + rangeStart: number | undefined; + defer?: boolean; +}[]; + +references.sort(concatComparators(bySourceOrder, byRangeStart)); diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts new file mode 100644 index 0000000000000..69f1e848fa247 --- /dev/null +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts @@ -0,0 +1,41 @@ +// @strict: true +// @noEmit: true + +declare function f1( + arg: { + [K in keyof T]: T[K][keyof T[K]]; + } +): T; + +const res1 = f1({ + a: "hello", + b: 100, +}); + +type Inner = { + [I in keyof O]: O[I][keyof O[I]]; +}; + +declare function f2(fields: { + [K in keyof T]: { + label: string; + values: Inner; + }; +}): T; + +const res2 = f2({ + prop: { + label: "first", + values: { + foo: 123, + bar: true, + }, + }, + other: { + label: "second", + values: { + baz: "", + qwe: [true], + }, + }, +}); From a09f410eaca9896c7e468b03e0013e07c82814f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Wed, 3 Dec 2025 09:02:29 +0100 Subject: [PATCH 28/29] remove `PartialInference` --- src/compiler/checker.ts | 22 +- src/harness/fourslashInterfaceImpl.ts | 1 - src/lib/es5.d.ts | 9 - ...completionsCommitCharactersGlobal.baseline | 414 ------------------ .../indexAccessCombinedInference.types | 24 +- ...rseMappedConcretePropertiesInference.types | 16 +- ...rtProvider_namespaceSameNameAsIntrinsic.js | 6 - .../pasteEdits_revertUpdatedFile.js | 6 - ...regateFromIndicesInConditionalTypes1.types | 4 +- ...enceIndexingUsingOtherTypeParameter1.types | 8 +- 10 files changed, 29 insertions(+), 481 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a56fffc253490..651e2c113a4c8 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2301,7 +2301,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var deferredGlobalBigIntType: ObjectType | undefined; var deferredGlobalNaNSymbol: Symbol | undefined; var deferredGlobalRecordSymbol: Symbol | undefined; - var deferredGlobalPartialInferenceSymbol: Symbol | undefined; var deferredGlobalClassDecoratorContextType: GenericType | undefined; var deferredGlobalClassMethodDecoratorContextType: GenericType | undefined; var deferredGlobalClassGetterDecoratorContextType: GenericType | undefined; @@ -17615,11 +17614,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return deferredGlobalRecordSymbol === unknownSymbol ? undefined : deferredGlobalRecordSymbol; } - function getGlobalPartialInferenceSymbol(): Symbol | undefined { - deferredGlobalPartialInferenceSymbol ||= getGlobalTypeAliasSymbol("PartialInference" as __String, /*arity*/ 2, /*reportErrors*/ false) || unknownSymbol; - return deferredGlobalPartialInferenceSymbol === unknownSymbol ? undefined : deferredGlobalPartialInferenceSymbol; - } - /** * Instantiates a global type that is generic with some element type, and returns that instantiation. */ @@ -26889,19 +26883,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return; } if (!hasInferenceCandidates(inference)) { - const partialInferenceTypeSymbol = getGlobalPartialInferenceSymbol(); - if (partialInferenceTypeSymbol) { - if ((target as IndexedAccessType).indexType.flags & TypeFlags.Instantiable) { - const recordSymbol = getGlobalRecordSymbol(); - if (recordSymbol) { - inference.indexes = append(inference.indexes, getTypeAliasInstantiation(recordSymbol, [(target as IndexedAccessType).indexType, source])); - } - } - else { - // Instantiates instance of `type PartialInference = ({[K in Keys]: {[K1 in K]: T}})[Keys];` - // Where `T` is `source` and `Keys` is `target.indexType` - inference.indexes = append(inference.indexes, getTypeAliasInstantiation(partialInferenceTypeSymbol, [source, (target as IndexedAccessType).indexType])); - } + const recordSymbol = getGlobalRecordSymbol(); + if (recordSymbol) { + inference.indexes = append(inference.indexes, getTypeAliasInstantiation(recordSymbol, [(target as IndexedAccessType).indexType, source])); } } } diff --git a/src/harness/fourslashInterfaceImpl.ts b/src/harness/fourslashInterfaceImpl.ts index 0c2b951428340..6178b2723f13e 100644 --- a/src/harness/fourslashInterfaceImpl.ts +++ b/src/harness/fourslashInterfaceImpl.ts @@ -1301,7 +1301,6 @@ export namespace Completion { typeEntry("Uncapitalize"), typeEntry("NoInfer"), interfaceEntry("ThisType"), - typeEntry("PartialInference"), varEntry("ArrayBuffer"), interfaceEntry("ArrayBufferTypes"), typeEntry("ArrayBufferLike"), diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index e519920e7d147..3ca96f12760be 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -1666,15 +1666,6 @@ type NoInfer = intrinsic; */ interface ThisType {} -/** - * Type instantiated to perform partial inferences from indexed accesses - */ -type PartialInference = ({ - [K in Keys]: { - [K1 in K]: T; - }; -})[Keys]; - /** * Stores types to be used with WeakSet, WeakMap, WeakRef, and FinalizationRegistry */ diff --git a/tests/baselines/reference/completionsCommitCharactersGlobal.baseline b/tests/baselines/reference/completionsCommitCharactersGlobal.baseline index a2654d549c348..582d3363da492 100644 --- a/tests/baselines/reference/completionsCommitCharactersGlobal.baseline +++ b/tests/baselines/reference/completionsCommitCharactersGlobal.baseline @@ -2692,7 +2692,6 @@ // | type ParameterDecorator = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => void // | type Parameters any> = T extends (...args: infer P) => any ? P : never // | type Partial = { [P in keyof T]?: T[P]; } -// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] // | type Pick = { [P in K]: T[P]; } // | interface Promise // | type PromiseConstructorLike = new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike @@ -2873,7 +2872,6 @@ // | type ParameterDecorator = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => void // | type Parameters any> = T extends (...args: infer P) => any ? P : never // | type Partial = { [P in keyof T]?: T[P]; } -// | type PartialInference = { [K in Keys]: { [K1 in K]: T; }; }[Keys] // | type Pick = { [P in K]: T[P]; } // | interface Promise // | type PromiseConstructorLike = new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike @@ -80612,212 +80610,6 @@ } ] }, - { - "name": "PartialInference", - "kind": "type", - "kindModifiers": "declare", - "sortText": "15", - "displayParts": [ - { - "text": "type", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "PartialInference", - "kind": "aliasName" - }, - { - "text": "<", - "kind": "punctuation" - }, - { - "text": "T", - "kind": "typeParameterName" - }, - { - "text": ",", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "Keys", - "kind": "typeParameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "extends", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "PropertyKey", - "kind": "aliasName" - }, - { - "text": ">", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "=", - "kind": "operator" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "{", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "[", - "kind": "punctuation" - }, - { - "text": "K", - "kind": "typeParameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "in", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "Keys", - "kind": "typeParameterName" - }, - { - "text": "]", - "kind": "punctuation" - }, - { - "text": ":", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "{", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "[", - "kind": "punctuation" - }, - { - "text": "K1", - "kind": "typeParameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "in", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "K", - "kind": "typeParameterName" - }, - { - "text": "]", - "kind": "punctuation" - }, - { - "text": ":", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "T", - "kind": "typeParameterName" - }, - { - "text": ";", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "}", - "kind": "punctuation" - }, - { - "text": ";", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "}", - "kind": "punctuation" - }, - { - "text": "[", - "kind": "punctuation" - }, - { - "text": "Keys", - "kind": "typeParameterName" - }, - { - "text": "]", - "kind": "punctuation" - } - ], - "documentation": [ - { - "text": "Type instantiated to perform partial inferences from indexed accesses", - "kind": "text" - } - ] - }, { "name": "Pick", "kind": "type", @@ -90289,212 +90081,6 @@ } ] }, - { - "name": "PartialInference", - "kind": "type", - "kindModifiers": "declare", - "sortText": "15", - "displayParts": [ - { - "text": "type", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "PartialInference", - "kind": "aliasName" - }, - { - "text": "<", - "kind": "punctuation" - }, - { - "text": "T", - "kind": "typeParameterName" - }, - { - "text": ",", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "Keys", - "kind": "typeParameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "extends", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "PropertyKey", - "kind": "aliasName" - }, - { - "text": ">", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "=", - "kind": "operator" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "{", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "[", - "kind": "punctuation" - }, - { - "text": "K", - "kind": "typeParameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "in", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "Keys", - "kind": "typeParameterName" - }, - { - "text": "]", - "kind": "punctuation" - }, - { - "text": ":", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "{", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "[", - "kind": "punctuation" - }, - { - "text": "K1", - "kind": "typeParameterName" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "in", - "kind": "keyword" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "K", - "kind": "typeParameterName" - }, - { - "text": "]", - "kind": "punctuation" - }, - { - "text": ":", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "T", - "kind": "typeParameterName" - }, - { - "text": ";", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "}", - "kind": "punctuation" - }, - { - "text": ";", - "kind": "punctuation" - }, - { - "text": " ", - "kind": "space" - }, - { - "text": "}", - "kind": "punctuation" - }, - { - "text": "[", - "kind": "punctuation" - }, - { - "text": "Keys", - "kind": "typeParameterName" - }, - { - "text": "]", - "kind": "punctuation" - } - ], - "documentation": [ - { - "text": "Type instantiated to perform partial inferences from indexed accesses", - "kind": "text" - } - ] - }, { "name": "Pick", "kind": "type", diff --git a/tests/baselines/reference/indexAccessCombinedInference.types b/tests/baselines/reference/indexAccessCombinedInference.types index 0794d5b9689e7..2b646bf7c6a9d 100644 --- a/tests/baselines/reference/indexAccessCombinedInference.types +++ b/tests/baselines/reference/indexAccessCombinedInference.types @@ -344,14 +344,14 @@ const opt3 = pickOne(either, {x: 12}, {y: ""}, {z: /./}); > : ^^^^^^ const pickDelayed = (x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}); ->pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}) : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pickDelayed : (x: TKey) => (Record<"Key", TKey> & Record<"A", { j: TKey; }> & Record<"B", { i: TKey; }> & Record<"Merge", { chosen: TKey; }>)[TKey] & { chosen: TKey; } +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(x: TKey) => pickOne(x, {j: x}, {i: x}, {chosen: x}) : (x: TKey) => (Record<"Key", TKey> & Record<"A", { j: TKey; }> & Record<"B", { i: TKey; }> & Record<"Merge", { chosen: TKey; }>)[TKey] & { chosen: TKey; } +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : TKey > : ^^^^ ->pickOne(x, {j: x}, {i: x}, {chosen: x}) : ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pickOne(x, {j: x}, {i: x}, {chosen: x}) : (Record<"Key", TKey> & Record<"A", { j: TKey; }> & Record<"B", { i: TKey; }> & Record<"Merge", { chosen: TKey; }>)[TKey] & { chosen: TKey; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pickOne : { (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"]): T[T["Key"]] & T["Merge"]; (key: T["Key"], left: T["A"], right: T["B"], into: T["Merge"], extra: T["Extra"]): T[T["Key"]] & { into: T["Merge"]; extra: T["Extra"]; }; } > : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x : TKey @@ -380,8 +380,8 @@ const opt4 = pickDelayed("A"); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pickDelayed("A") : { j: "A"; } & { chosen: "A"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pickDelayed : (x: TKey) => (Record<"Key", TKey> & Record<"A", { j: TKey; }> & Record<"B", { i: TKey; }> & Record<"Merge", { chosen: TKey; }>)[TKey] & { chosen: TKey; } +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"A" : "A" > : ^^^ @@ -390,8 +390,8 @@ const opt5 = pickDelayed("B"); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pickDelayed("B") : { i: "B"; } & { chosen: "B"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pickDelayed : (x: TKey) => (Record<"Key", TKey> & Record<"A", { j: TKey; }> & Record<"B", { i: TKey; }> & Record<"Merge", { chosen: TKey; }>)[TKey] & { chosen: TKey; } +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"B" : "B" > : ^^^ @@ -400,8 +400,8 @@ const opt6 = pickDelayed(either); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pickDelayed(either) : ({ j: "A" | "B"; } | { i: "A" | "B"; }) & { chosen: "A" | "B"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pickDelayed : (x: TKey) => ({ Key: TKey; } & { A: { j: TKey; }; } & { B: { i: TKey; }; } & { Merge: { chosen: TKey; }; })[TKey] & { chosen: TKey; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pickDelayed : (x: TKey) => (Record<"Key", TKey> & Record<"A", { j: TKey; }> & Record<"B", { i: TKey; }> & Record<"Merge", { chosen: TKey; }>)[TKey] & { chosen: TKey; } +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >either : "A" | "B" > : ^^^^^^^^^ diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types index e1ad9e14f03de..c22d2efb48f68 100644 --- a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types @@ -36,10 +36,10 @@ declare function test>( }): T; const res = test({ ->res : { a: { foo: string; } & { bar: number; }; b: { foo: boolean; } & { bar: number[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test({ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },}) : { a: { foo: string; } & { bar: number; }; b: { foo: boolean; } & { bar: number[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>res : { a: Record<"foo", string> & Record<"bar", number>; b: Record<"foo", boolean> & Record<"bar", number[]>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>test({ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },}) : { a: Record<"foo", string> & Record<"bar", number>; b: Record<"foo", boolean> & Record<"bar", number[]>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },} : { a: { foo: string; onFoo: (arg: string) => number; bar: number; onBar: (arg: number) => number; }; b: { foo: true; onFoo: (arg: boolean) => boolean; bar: number[]; onBar: (arg: number[]) => number[][]; }; } @@ -199,10 +199,10 @@ declare function useQueries>( ): T; const resQueries = useQueries([ ->resQueries : [{ key: "users"; } & { fnData: { name: string; }[]; }, { key: "posts"; } & { fnData: { title: string; }[]; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : [{ key: "users"; } & { fnData: { name: string; }[]; }, { key: "posts"; } & { fnData: { title: string; }[]; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>resQueries : [Record<"key", "users"> & Record<"fnData", { name: string; }[]>, Record<"key", "posts"> & Record<"fnData", { title: string; }[]>] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>useQueries([ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }]) : [Record<"key", "users"> & Record<"fnData", { name: string; }[]>, Record<"key", "posts"> & Record<"fnData", { title: string; }[]>] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >useQueries : >(queries: [...UseQueriesOptions]) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >[ { queryKey: "users", queryFn: (key) => [{ name: "Andarist" }], }, { queryKey: "posts", queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), }] : [{ queryKey: "users"; queryFn: (key: QueryFunctionContext<"users">) => { name: string; }[]; }, { queryKey: "posts"; queryFn: (key: QueryFunctionContext<"posts">) => Promise<{ title: string; }[]>; }] diff --git a/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js b/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js index 9299b71e99f9f..494bff29d8f01 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js +++ b/tests/baselines/reference/tsserver/fourslashServer/autoImportProvider_namespaceSameNameAsIntrinsic.js @@ -953,12 +953,6 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "declare", "sortText": "15" }, - { - "name": "PartialInference", - "kind": "type", - "kindModifiers": "declare", - "sortText": "15" - }, { "name": "Pick", "kind": "type", diff --git a/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js b/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js index 43c7c5512aa02..05f9b333578ad 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js +++ b/tests/baselines/reference/tsserver/fourslashServer/pasteEdits_revertUpdatedFile.js @@ -920,12 +920,6 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "declare", "sortText": "15" }, - { - "name": "PartialInference", - "kind": "type", - "kindModifiers": "declare", - "sortText": "15" - }, { "name": "Pick", "kind": "type", diff --git a/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types b/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types index ae25907c6ea56..32263005227c3 100644 --- a/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types +++ b/tests/baselines/reference/typeInferenceAggregateFromIndicesInConditionalTypes1.types @@ -27,6 +27,6 @@ type AC = T extends { a: (infer R extends Record)["_a"]; c: (inf > : ^^^^^^^ type Result1 = AC; ->Result1 : { _a: string; } & { _c: boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Result1 : Record<"_a", string> & Record<"_c", boolean> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types index 297f0cafb3333..fba16224804f0 100644 --- a/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types +++ b/tests/baselines/reference/typeInferenceIndexingUsingOtherTypeParameter1.types @@ -74,10 +74,10 @@ declare function fn1(arg: T[keyof T & keyof U], u: U): T; > : ^ const res1 = fn1("foo", { prop: 42 }); ->res1 : { prop: "foo"; } -> : ^^^^^^^^^^^^^^^^ ->fn1("foo", { prop: 42 }) : { prop: "foo"; } -> : ^^^^^^^^^^^^^^^^ +>res1 : Record<"prop", "foo"> +> : ^^^^^^^^^^^^^^^^^^^^^ +>fn1("foo", { prop: 42 }) : Record<"prop", "foo"> +> : ^^^^^^^^^^^^^^^^^^^^^ >fn1 : (arg: T[keyof T & keyof U], u: U) => T > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >"foo" : "foo" From 7bc77f13c3cc6e809e03c38917be37185aa3f8ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Wed, 3 Dec 2025 09:59:48 +0100 Subject: [PATCH 29/29] add tests --- ...eMappedConcretePropertiesInference.symbols | 225 +++++++++++------- ...rseMappedConcretePropertiesInference.types | 90 ++++++- ...nferenceSelfIndexingTypeParameter1.symbols | 12 + ...eInferenceSelfIndexingTypeParameter1.types | 18 ++ ...nferenceSelfIndexingTypeParameter4.symbols | 56 +++++ ...eInferenceSelfIndexingTypeParameter4.types | 71 ++++++ ...everseMappedConcretePropertiesInference.ts | 24 +- ...typeInferenceSelfIndexingTypeParameter1.ts | 3 + ...typeInferenceSelfIndexingTypeParameter4.ts | 21 ++ 9 files changed, 422 insertions(+), 98 deletions(-) diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols b/tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols index 6860208f71c05..11df64c1960e9 100644 --- a/tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.symbols @@ -1,185 +1,238 @@ //// [tests/cases/compiler/reverseMappedConcretePropertiesInference.ts] //// === reverseMappedConcretePropertiesInference.ts === -declare function test>(a: { ->test : Symbol(test, Decl(reverseMappedConcretePropertiesInference.ts, 0, 0)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +declare function test1>>( +>test1 : Symbol(test1, Decl(reverseMappedConcretePropertiesInference.ts, 0, 0)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 23)) >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) ->foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 0, 48)) ->bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 0, 62)) ->a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 0, 80)) +>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) + + arg: { +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 0, 77)) + + [K in keyof T]: { +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 2, 5)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 23)) + + a: T[K]["A"]; +>a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 2, 21)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 2, 5)) + + b: T[K]["B"]; +>b : Symbol(b, Decl(reverseMappedConcretePropertiesInference.ts, 3, 19)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 2, 5)) + } + } +): T; +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 23)) + +const res1 = test1({ +>res1 : Symbol(res1, Decl(reverseMappedConcretePropertiesInference.ts, 9, 5)) +>test1 : Symbol(test1, Decl(reverseMappedConcretePropertiesInference.ts, 0, 0)) + + x: { +>x : Symbol(x, Decl(reverseMappedConcretePropertiesInference.ts, 9, 20)) + + a: "foo", +>a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 10, 6)) + + b: 42, +>b : Symbol(b, Decl(reverseMappedConcretePropertiesInference.ts, 11, 13)) + + }, + y: { +>y : Symbol(y, Decl(reverseMappedConcretePropertiesInference.ts, 13, 4)) + + a: 100, +>a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 14, 6)) + + b: "bar", +>b : Symbol(b, Decl(reverseMappedConcretePropertiesInference.ts, 15, 11)) + + }, +}); + +declare function test2>(a: { +>test2 : Symbol(test2, Decl(reverseMappedConcretePropertiesInference.ts, 18, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 20, 23)) +>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 20, 49)) +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 20, 63)) +>a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 20, 81)) [K in keyof T]: { ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 21, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 20, 23)) foo: T[K]["foo"]; ->foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 1, 19)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 21, 19)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 20, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 21, 3)) onFoo: (fooArg: T[K]["foo"]) => void; ->onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 2, 21)) ->fooArg : Symbol(fooArg, Decl(reverseMappedConcretePropertiesInference.ts, 3, 12)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) +>onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 22, 21)) +>fooArg : Symbol(fooArg, Decl(reverseMappedConcretePropertiesInference.ts, 23, 12)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 20, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 21, 3)) bar: T[K]["bar"]; ->bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 3, 41)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 23, 41)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 20, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 21, 3)) onBar: (barArg: T[K]["bar"]) => void; ->onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 4, 21)) ->barArg : Symbol(barArg, Decl(reverseMappedConcretePropertiesInference.ts, 5, 12)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 1, 3)) +>onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 24, 21)) +>barArg : Symbol(barArg, Decl(reverseMappedConcretePropertiesInference.ts, 25, 12)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 20, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 21, 3)) }; }): T; ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 0, 22)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 20, 23)) -const res = test({ ->res : Symbol(res, Decl(reverseMappedConcretePropertiesInference.ts, 9, 5)) ->test : Symbol(test, Decl(reverseMappedConcretePropertiesInference.ts, 0, 0)) +const res2 = test2({ +>res2 : Symbol(res2, Decl(reverseMappedConcretePropertiesInference.ts, 29, 5)) +>test2 : Symbol(test2, Decl(reverseMappedConcretePropertiesInference.ts, 18, 3)) a: { ->a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 9, 18)) +>a : Symbol(a, Decl(reverseMappedConcretePropertiesInference.ts, 29, 20)) foo: 'answer', ->foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 10, 8)) +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 30, 8)) onFoo: (arg) => arg.length, ->onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 11, 22)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 12, 16)) +>onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 31, 22)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 32, 16)) >arg.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 12, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 32, 16)) >length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) bar: 42, ->bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 12, 35)) +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 32, 35)) onBar: (arg) => arg + 10 ->onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 13, 16)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 14, 16)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 14, 16)) +>onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 33, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 34, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 34, 16)) }, b: { ->b : Symbol(b, Decl(reverseMappedConcretePropertiesInference.ts, 15, 6)) +>b : Symbol(b, Decl(reverseMappedConcretePropertiesInference.ts, 35, 6)) foo: true, ->foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 16, 8)) +>foo : Symbol(foo, Decl(reverseMappedConcretePropertiesInference.ts, 36, 8)) onFoo: (arg) => !!arg, ->onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 17, 18)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 18, 16)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 18, 16)) +>onFoo : Symbol(onFoo, Decl(reverseMappedConcretePropertiesInference.ts, 37, 18)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 38, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 38, 16)) bar: [1, 2, 3], ->bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 18, 30)) +>bar : Symbol(bar, Decl(reverseMappedConcretePropertiesInference.ts, 38, 30)) onBar: (arg) => [arg, arg] ->onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 19, 23)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 20, 16)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 20, 16)) ->arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 20, 16)) +>onBar : Symbol(onBar, Decl(reverseMappedConcretePropertiesInference.ts, 39, 23)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 40, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 40, 16)) +>arg : Symbol(arg, Decl(reverseMappedConcretePropertiesInference.ts, 40, 16)) }, }) interface QueryFunctionContext { ->QueryFunctionContext : Symbol(QueryFunctionContext, Decl(reverseMappedConcretePropertiesInference.ts, 22, 2)) ->TQueryKey : Symbol(TQueryKey, Decl(reverseMappedConcretePropertiesInference.ts, 24, 31)) +>QueryFunctionContext : Symbol(QueryFunctionContext, Decl(reverseMappedConcretePropertiesInference.ts, 42, 2)) +>TQueryKey : Symbol(TQueryKey, Decl(reverseMappedConcretePropertiesInference.ts, 44, 31)) queryKey: TQueryKey; ->queryKey : Symbol(QueryFunctionContext.queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 24, 58)) ->TQueryKey : Symbol(TQueryKey, Decl(reverseMappedConcretePropertiesInference.ts, 24, 31)) +>queryKey : Symbol(QueryFunctionContext.queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 44, 58)) +>TQueryKey : Symbol(TQueryKey, Decl(reverseMappedConcretePropertiesInference.ts, 44, 31)) } type QueryOptions = { ->QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 26, 1)) +>QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 46, 1)) key: string; ->key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 28, 21)) +>key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 48, 21)) fnData?: unknown; ->fnData : Symbol(fnData, Decl(reverseMappedConcretePropertiesInference.ts, 29, 14)) +>fnData : Symbol(fnData, Decl(reverseMappedConcretePropertiesInference.ts, 49, 14)) }; type UseQueriesOptions> = { ->UseQueriesOptions : Symbol(UseQueriesOptions, Decl(reverseMappedConcretePropertiesInference.ts, 31, 2)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) +>UseQueriesOptions : Symbol(UseQueriesOptions, Decl(reverseMappedConcretePropertiesInference.ts, 51, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 53, 23)) >ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 3 more) ->QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 26, 1)) +>QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 46, 1)) [K in keyof T]: { ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 54, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 53, 23)) queryKey: T[K]["key"]; ->queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 34, 19)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) +>queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 54, 19)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 53, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 54, 3)) queryFn?: ( ->queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 35, 26)) +>queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 55, 26)) ctx: QueryFunctionContext ->ctx : Symbol(ctx, Decl(reverseMappedConcretePropertiesInference.ts, 36, 15)) ->QueryFunctionContext : Symbol(QueryFunctionContext, Decl(reverseMappedConcretePropertiesInference.ts, 22, 2)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) +>ctx : Symbol(ctx, Decl(reverseMappedConcretePropertiesInference.ts, 56, 15)) +>QueryFunctionContext : Symbol(QueryFunctionContext, Decl(reverseMappedConcretePropertiesInference.ts, 42, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 53, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 54, 3)) ) => Promise | T[K]["fnData"]; >Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 33, 23)) ->K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 34, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 53, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 54, 3)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 53, 23)) +>K : Symbol(K, Decl(reverseMappedConcretePropertiesInference.ts, 54, 3)) }; }; declare function useQueries>( ->useQueries : Symbol(useQueries, Decl(reverseMappedConcretePropertiesInference.ts, 40, 2)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 42, 28)) +>useQueries : Symbol(useQueries, Decl(reverseMappedConcretePropertiesInference.ts, 60, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 62, 28)) >ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 3 more) ->QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 26, 1)) +>QueryOptions : Symbol(QueryOptions, Decl(reverseMappedConcretePropertiesInference.ts, 46, 1)) queries: [...UseQueriesOptions] ->queries : Symbol(queries, Decl(reverseMappedConcretePropertiesInference.ts, 42, 67)) ->UseQueriesOptions : Symbol(UseQueriesOptions, Decl(reverseMappedConcretePropertiesInference.ts, 31, 2)) ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 42, 28)) +>queries : Symbol(queries, Decl(reverseMappedConcretePropertiesInference.ts, 62, 67)) +>UseQueriesOptions : Symbol(UseQueriesOptions, Decl(reverseMappedConcretePropertiesInference.ts, 51, 2)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 62, 28)) ): T; ->T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 42, 28)) +>T : Symbol(T, Decl(reverseMappedConcretePropertiesInference.ts, 62, 28)) const resQueries = useQueries([ ->resQueries : Symbol(resQueries, Decl(reverseMappedConcretePropertiesInference.ts, 46, 5)) ->useQueries : Symbol(useQueries, Decl(reverseMappedConcretePropertiesInference.ts, 40, 2)) +>resQueries : Symbol(resQueries, Decl(reverseMappedConcretePropertiesInference.ts, 66, 5)) +>useQueries : Symbol(useQueries, Decl(reverseMappedConcretePropertiesInference.ts, 60, 2)) { queryKey: "users", ->queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 47, 3)) +>queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 67, 3)) queryFn: (key) => [{ name: "Andarist" }], ->queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 48, 22)) ->key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 49, 14)) ->name : Symbol(name, Decl(reverseMappedConcretePropertiesInference.ts, 49, 24)) +>queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 68, 22)) +>key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 69, 14)) +>name : Symbol(name, Decl(reverseMappedConcretePropertiesInference.ts, 69, 24)) }, { queryKey: "posts", ->queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 51, 3)) +>queryKey : Symbol(queryKey, Decl(reverseMappedConcretePropertiesInference.ts, 71, 3)) queryFn: (key) => Promise.resolve([{ title: 'TS 5.1' }]), ->queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 52, 22)) ->key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 53, 14)) +>queryFn : Symbol(queryFn, Decl(reverseMappedConcretePropertiesInference.ts, 72, 22)) +>key : Symbol(key, Decl(reverseMappedConcretePropertiesInference.ts, 73, 14)) >Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) >Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --)) >resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) ->title : Symbol(title, Decl(reverseMappedConcretePropertiesInference.ts, 53, 40)) +>title : Symbol(title, Decl(reverseMappedConcretePropertiesInference.ts, 73, 40)) } ]); diff --git a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types index c22d2efb48f68..4bfb47c579f22 100644 --- a/tests/baselines/reference/reverseMappedConcretePropertiesInference.types +++ b/tests/baselines/reference/reverseMappedConcretePropertiesInference.types @@ -1,9 +1,79 @@ //// [tests/cases/compiler/reverseMappedConcretePropertiesInference.ts] //// === reverseMappedConcretePropertiesInference.ts === -declare function test>(a: { ->test : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ +declare function test1>>( +>test1 : >>(arg: { [K in keyof T]: { a: T[K]["A"]; b: T[K]["B"]; }; }) => T +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ + + arg: { +>arg : { [K in keyof T]: { a: T[K]["A"]; b: T[K]["B"]; }; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ + + [K in keyof T]: { + a: T[K]["A"]; +>a : T[K]["A"] +> : ^^^^^^^^^ + + b: T[K]["B"]; +>b : T[K]["B"] +> : ^^^^^^^^^ + } + } +): T; + +const res1 = test1({ +>res1 : { x: Record<"A", string> & Record<"B", number>; y: Record<"A", number> & Record<"B", string>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>test1({ x: { a: "foo", b: 42, }, y: { a: 100, b: "bar", },}) : { x: Record<"A", string> & Record<"B", number>; y: Record<"A", number> & Record<"B", string>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>test1 : >>(arg: { [K in keyof T]: { a: T[K]["A"]; b: T[K]["B"]; }; }) => T +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>{ x: { a: "foo", b: 42, }, y: { a: 100, b: "bar", },} : { x: { a: string; b: number; }; y: { a: number; b: string; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + x: { +>x : { a: string; b: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ a: "foo", b: 42, } : { a: string; b: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + + a: "foo", +>a : string +> : ^^^^^^ +>"foo" : "foo" +> : ^^^^^ + + b: 42, +>b : number +> : ^^^^^^ +>42 : 42 +> : ^^ + + }, + y: { +>y : { a: number; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ a: 100, b: "bar", } : { a: number; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + + a: 100, +>a : number +> : ^^^^^^ +>100 : 100 +> : ^^^ + + b: "bar", +>b : string +> : ^^^^^^ +>"bar" : "bar" +> : ^^^^^ + + }, +}); + +declare function test2>(a: { +>test2 : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >foo : unknown > : ^^^^^^^ >bar : unknown @@ -35,13 +105,13 @@ declare function test>( }; }): T; -const res = test({ ->res : { a: Record<"foo", string> & Record<"bar", number>; b: Record<"foo", boolean> & Record<"bar", number[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test({ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },}) : { a: Record<"foo", string> & Record<"bar", number>; b: Record<"foo", boolean> & Record<"bar", number[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ +const res2 = test2({ +>res2 : { a: Record<"foo", string> & Record<"bar", number>; b: Record<"foo", boolean> & Record<"bar", number[]>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>test2({ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },}) : { a: Record<"foo", string> & Record<"bar", number>; b: Record<"foo", boolean> & Record<"bar", number[]>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>test2 : >(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; bar: T[K]["bar"]; onBar: (barArg: T[K]["bar"]) => void; }; }) => T +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ a: { foo: 'answer', onFoo: (arg) => arg.length, bar: 42, onBar: (arg) => arg + 10 }, b: { foo: true, onFoo: (arg) => !!arg, bar: [1, 2, 3], onBar: (arg) => [arg, arg] },} : { a: { foo: string; onFoo: (arg: string) => number; bar: number; onBar: (arg: number) => number; }; b: { foo: true; onFoo: (arg: boolean) => boolean; bar: number[]; onBar: (arg: number[]) => number[][]; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols index 331f4f65b54a3..508508d2fff7b 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.symbols @@ -13,3 +13,15 @@ const res1 = fn1(["foo"]); >res1 : Symbol(res1, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 1, 5)) >fn1 : Symbol(fn1, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 0, 0)) +declare function fn2(arg: T[keyof T & "a"]): T +>fn2 : Symbol(fn2, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 1, 26)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 21)) +>arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 24)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 21)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 21)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 3, 21)) + +const res2 = fn2(["foo"]); +>res2 : Symbol(res2, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 4, 5)) +>fn2 : Symbol(fn2, Decl(typeInferenceSelfIndexingTypeParameter1.ts, 1, 26)) + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types index c4881c7bb90c1..1d4e34dc9d1be 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter1.types @@ -19,3 +19,21 @@ const res1 = fn1(["foo"]); >"foo" : "foo" > : ^^^^^ +declare function fn2(arg: T[keyof T & "a"]): T +>fn2 : (arg: T[keyof T & "a"]) => T +> : ^ ^^ ^^ ^^^^^ +>arg : T[keyof T & "a"] +> : ^^^^^^^^^^^^^^^^ + +const res2 = fn2(["foo"]); +>res2 : Record<"a", string[]> +> : ^^^^^^^^^^^^^^^^^^^^^ +>fn2(["foo"]) : Record<"a", string[]> +> : ^^^^^^^^^^^^^^^^^^^^^ +>fn2 : (arg: T[keyof T & "a"]) => T +> : ^ ^^ ^^ ^^^^^ +>["foo"] : string[] +> : ^^^^^^^^ +>"foo" : "foo" +> : ^^^^^ + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols index f7cee4a489241..c62c85696f4a0 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.symbols @@ -107,3 +107,59 @@ const res2 = f2({ }, }); + +declare function f3( +>f3 : Symbol(f3, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 37, 3)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 20)) + + arg: { +>arg : Symbol(arg, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 23)) + + [K in keyof T]: { +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 42, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 20)) + + a: T[K][keyof T[K] & "A"]; +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 42, 21)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 42, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 42, 5)) + + b: T[K][keyof T[K] & "B"]; +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 43, 32)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 42, 5)) +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 20)) +>K : Symbol(K, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 42, 5)) + } + } +): T; +>T : Symbol(T, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 40, 20)) + +const res3 = f3({ +>res3 : Symbol(res3, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 49, 5)) +>f3 : Symbol(f3, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 37, 3)) + + x: { +>x : Symbol(x, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 49, 17)) + + a: "foo", +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 50, 6)) + + b: 42, +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 51, 13)) + + }, + y: { +>y : Symbol(y, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 53, 4)) + + a: 100, +>a : Symbol(a, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 54, 6)) + + b: "bar", +>b : Symbol(b, Decl(typeInferenceSelfIndexingTypeParameter4.ts, 55, 11)) + + }, +}); + diff --git a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types index 45448215737dd..47e485ca2acfc 100644 --- a/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types +++ b/tests/baselines/reference/typeInferenceSelfIndexingTypeParameter4.types @@ -140,3 +140,74 @@ const res2 = f2({ }, }); + +declare function f3( +>f3 : (arg: { [K in keyof T]: { a: T[K][keyof T[K] & "A"]; b: T[K][keyof T[K] & "B"]; }; }) => T +> : ^ ^^ ^^ ^^^^^ + + arg: { +>arg : { [K in keyof T]: { a: T[K][keyof T[K] & "A"]; b: T[K][keyof T[K] & "B"]; }; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ + + [K in keyof T]: { + a: T[K][keyof T[K] & "A"]; +>a : T[K][keyof T[K] & "A"] +> : ^^^^^^^^^^^^^^^^^^^^^^ + + b: T[K][keyof T[K] & "B"]; +>b : T[K][keyof T[K] & "B"] +> : ^^^^^^^^^^^^^^^^^^^^^^ + } + } +): T; + +const res3 = f3({ +>res3 : { x: Record<"A", string> & Record<"B", number>; y: Record<"A", number> & Record<"B", string>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f3({ x: { a: "foo", b: 42, }, y: { a: 100, b: "bar", },}) : { x: Record<"A", string> & Record<"B", number>; y: Record<"A", number> & Record<"B", string>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f3 : (arg: { [K in keyof T]: { a: T[K][keyof T[K] & "A"]; b: T[K][keyof T[K] & "B"]; }; }) => T +> : ^ ^^ ^^ ^^^^^ +>{ x: { a: "foo", b: 42, }, y: { a: 100, b: "bar", },} : { x: { a: string; b: number; }; y: { a: number; b: string; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + x: { +>x : { a: string; b: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ a: "foo", b: 42, } : { a: string; b: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + + a: "foo", +>a : string +> : ^^^^^^ +>"foo" : "foo" +> : ^^^^^ + + b: 42, +>b : number +> : ^^^^^^ +>42 : 42 +> : ^^ + + }, + y: { +>y : { a: number; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ a: 100, b: "bar", } : { a: number; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + + a: 100, +>a : number +> : ^^^^^^ +>100 : 100 +> : ^^^ + + b: "bar", +>b : string +> : ^^^^^^ +>"bar" : "bar" +> : ^^^^^ + + }, +}); + diff --git a/tests/cases/compiler/reverseMappedConcretePropertiesInference.ts b/tests/cases/compiler/reverseMappedConcretePropertiesInference.ts index d5a13fe36d5b9..0e09218bebfad 100644 --- a/tests/cases/compiler/reverseMappedConcretePropertiesInference.ts +++ b/tests/cases/compiler/reverseMappedConcretePropertiesInference.ts @@ -2,7 +2,27 @@ // @lib: esnext // @noEmit: true -declare function test>(a: { +declare function test1>>( + arg: { + [K in keyof T]: { + a: T[K]["A"]; + b: T[K]["B"]; + } + } +): T; + +const res1 = test1({ + x: { + a: "foo", + b: 42, + }, + y: { + a: 100, + b: "bar", + }, +}); + +declare function test2>(a: { [K in keyof T]: { foo: T[K]["foo"]; onFoo: (fooArg: T[K]["foo"]) => void; @@ -11,7 +31,7 @@ declare function test>( }; }): T; -const res = test({ +const res2 = test2({ a: { foo: 'answer', onFoo: (arg) => arg.length, diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts index c81f41e950936..6117f005c0def 100644 --- a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter1.ts @@ -3,3 +3,6 @@ declare function fn1(arg: T[keyof T]): T const res1 = fn1(["foo"]); + +declare function fn2(arg: T[keyof T & "a"]): T +const res2 = fn2(["foo"]); diff --git a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts index 69f1e848fa247..dae0607378757 100644 --- a/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts +++ b/tests/cases/compiler/typeInferenceSelfIndexingTypeParameter4.ts @@ -39,3 +39,24 @@ const res2 = f2({ }, }, }); + + +declare function f3( + arg: { + [K in keyof T]: { + a: T[K][keyof T[K] & "A"]; + b: T[K][keyof T[K] & "B"]; + } + } +): T; + +const res3 = f3({ + x: { + a: "foo", + b: 42, + }, + y: { + a: 100, + b: "bar", + }, +});