1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSInterfaceDeclaration",
6      "body": {
7        "type": "TSInterfaceBody",
8        "body": [
9          {
10            "type": "TSIndexSignature",
11            "parameters": {
12              "type": "Identifier",
13              "name": "key",
14              "typeAnnotation": {
15                "type": "TSParenthesizedType",
16                "typeAnnotation": {
17                  "type": "TSUnionType",
18                  "types": [
19                    {
20                      "type": "TSStringKeyword",
21                      "loc": {
22                        "start": {
23                          "line": 18,
24                          "column": 12
25                        },
26                        "end": {
27                          "line": 18,
28                          "column": 18
29                        }
30                      }
31                    },
32                    {
33                      "type": "TSParenthesizedType",
34                      "typeAnnotation": {
35                        "type": "TSUnionType",
36                        "types": [
37                          {
38                            "type": "TSNumberKeyword",
39                            "loc": {
40                              "start": {
41                                "line": 18,
42                                "column": 22
43                              },
44                              "end": {
45                                "line": 18,
46                                "column": 28
47                              }
48                            }
49                          },
50                          {
51                            "type": "TSNumberKeyword",
52                            "loc": {
53                              "start": {
54                                "line": 18,
55                                "column": 31
56                              },
57                              "end": {
58                                "line": 18,
59                                "column": 37
60                              }
61                            }
62                          }
63                        ],
64                        "loc": {
65                          "start": {
66                            "line": 18,
67                            "column": 22
68                          },
69                          "end": {
70                            "line": 18,
71                            "column": 37
72                          }
73                        }
74                      },
75                      "loc": {
76                        "start": {
77                          "line": 18,
78                          "column": 21
79                        },
80                        "end": {
81                          "line": 18,
82                          "column": 38
83                        }
84                      }
85                    }
86                  ],
87                  "loc": {
88                    "start": {
89                      "line": 18,
90                      "column": 12
91                    },
92                    "end": {
93                      "line": 18,
94                      "column": 38
95                    }
96                  }
97                },
98                "loc": {
99                  "start": {
100                    "line": 18,
101                    "column": 11
102                  },
103                  "end": {
104                    "line": 18,
105                    "column": 39
106                  }
107                }
108              },
109              "loc": {
110                "start": {
111                  "line": 18,
112                  "column": 6
113                },
114                "end": {
115                  "line": 18,
116                  "column": 9
117                }
118              }
119            },
120            "typeAnnotation": {
121              "type": "TSBooleanKeyword",
122              "loc": {
123                "start": {
124                  "line": 18,
125                  "column": 42
126                },
127                "end": {
128                  "line": 18,
129                  "column": 49
130                }
131              }
132            },
133            "readonly": false,
134            "static": false,
135            "loc": {
136              "start": {
137                "line": 18,
138                "column": 5
139              },
140              "end": {
141                "line": 19,
142                "column": 4
143              }
144            }
145          }
146        ],
147        "loc": {
148          "start": {
149            "line": 17,
150            "column": 14
151          },
152          "end": {
153            "line": 19,
154            "column": 4
155          }
156        }
157      },
158      "id": {
159        "type": "Identifier",
160        "name": "I1",
161        "loc": {
162          "start": {
163            "line": 17,
164            "column": 11
165          },
166          "end": {
167            "line": 17,
168            "column": 13
169          }
170        }
171      },
172      "extends": [],
173      "loc": {
174        "start": {
175          "line": 17,
176          "column": 1
177        },
178        "end": {
179          "line": 19,
180          "column": 4
181        }
182      }
183    },
184    {
185      "type": "TSInterfaceDeclaration",
186      "body": {
187        "type": "TSInterfaceBody",
188        "body": [
189          {
190            "type": "TSIndexSignature",
191            "parameters": {
192              "type": "Identifier",
193              "name": "key",
194              "typeAnnotation": {
195                "type": "TSConditionalType",
196                "checkType": {
197                  "type": "TSIntersectionType",
198                  "types": [
199                    {
200                      "type": "TSBooleanKeyword",
201                      "loc": {
202                        "start": {
203                          "line": 22,
204                          "column": 11
205                        },
206                        "end": {
207                          "line": 22,
208                          "column": 18
209                        }
210                      }
211                    },
212                    {
213                      "type": "TSNumberKeyword",
214                      "loc": {
215                        "start": {
216                          "line": 22,
217                          "column": 21
218                        },
219                        "end": {
220                          "line": 22,
221                          "column": 27
222                        }
223                      }
224                    }
225                  ],
226                  "loc": {
227                    "start": {
228                      "line": 22,
229                      "column": 11
230                    },
231                    "end": {
232                      "line": 22,
233                      "column": 27
234                    }
235                  }
236                },
237                "extendsType": {
238                  "type": "TSStringKeyword",
239                  "loc": {
240                    "start": {
241                      "line": 22,
242                      "column": 36
243                    },
244                    "end": {
245                      "line": 22,
246                      "column": 42
247                    }
248                  }
249                },
250                "trueType": {
251                  "type": "TSNumberKeyword",
252                  "loc": {
253                    "start": {
254                      "line": 22,
255                      "column": 45
256                    },
257                    "end": {
258                      "line": 22,
259                      "column": 51
260                    }
261                  }
262                },
263                "falseType": {
264                  "type": "TSSymbolKeyword",
265                  "loc": {
266                    "start": {
267                      "line": 22,
268                      "column": 54
269                    },
270                    "end": {
271                      "line": 22,
272                      "column": 60
273                    }
274                  }
275                },
276                "loc": {
277                  "start": {
278                    "line": 22,
279                    "column": 11
280                  },
281                  "end": {
282                    "line": 22,
283                    "column": 60
284                  }
285                }
286              },
287              "loc": {
288                "start": {
289                  "line": 22,
290                  "column": 6
291                },
292                "end": {
293                  "line": 22,
294                  "column": 9
295                }
296              }
297            },
298            "typeAnnotation": {
299              "type": "TSBooleanKeyword",
300              "loc": {
301                "start": {
302                  "line": 22,
303                  "column": 63
304                },
305                "end": {
306                  "line": 22,
307                  "column": 70
308                }
309              }
310            },
311            "readonly": false,
312            "static": false,
313            "loc": {
314              "start": {
315                "line": 22,
316                "column": 5
317              },
318              "end": {
319                "line": 23,
320                "column": 4
321              }
322            }
323          }
324        ],
325        "loc": {
326          "start": {
327            "line": 21,
328            "column": 16
329          },
330          "end": {
331            "line": 23,
332            "column": 4
333          }
334        }
335      },
336      "id": {
337        "type": "Identifier",
338        "name": "I2",
339        "loc": {
340          "start": {
341            "line": 21,
342            "column": 13
343          },
344          "end": {
345            "line": 21,
346            "column": 15
347          }
348        }
349      },
350      "extends": [],
351      "loc": {
352        "start": {
353          "line": 21,
354          "column": 3
355        },
356        "end": {
357          "line": 23,
358          "column": 4
359        }
360      }
361    },
362    {
363      "type": "TSTypeAliasDeclaration",
364      "id": {
365        "type": "Identifier",
366        "name": "A",
367        "loc": {
368          "start": {
369            "line": 25,
370            "column": 8
371          },
372          "end": {
373            "line": 25,
374            "column": 9
375          }
376        }
377      },
378      "typeAnnotation": {
379        "type": "TSTypeLiteral",
380        "members": [
381          {
382            "type": "TSPropertySignature",
383            "computed": false,
384            "optional": false,
385            "readonly": false,
386            "key": {
387              "type": "Identifier",
388              "name": "a",
389              "loc": {
390                "start": {
391                  "line": 25,
392                  "column": 14
393                },
394                "end": {
395                  "line": 25,
396                  "column": 15
397                }
398              }
399            },
400            "typeAnnotation": {
401              "type": "TSNumberKeyword",
402              "loc": {
403                "start": {
404                  "line": 25,
405                  "column": 17
406                },
407                "end": {
408                  "line": 25,
409                  "column": 23
410                }
411              }
412            },
413            "loc": {
414              "start": {
415                "line": 25,
416                "column": 14
417              },
418              "end": {
419                "line": 25,
420                "column": 25
421              }
422            }
423          }
424        ],
425        "loc": {
426          "start": {
427            "line": 25,
428            "column": 12
429          },
430          "end": {
431            "line": 25,
432            "column": 25
433          }
434        }
435      },
436      "loc": {
437        "start": {
438          "line": 25,
439          "column": 3
440        },
441        "end": {
442          "line": 27,
443          "column": 12
444        }
445      }
446    },
447    {
448      "type": "TSInterfaceDeclaration",
449      "body": {
450        "type": "TSInterfaceBody",
451        "body": [
452          {
453            "type": "TSIndexSignature",
454            "parameters": {
455              "type": "Identifier",
456              "name": "key",
457              "typeAnnotation": {
458                "type": "TSIndexedAccessType",
459                "objectType": {
460                  "type": "TSTypeReference",
461                  "typeName": {
462                    "type": "Identifier",
463                    "name": "A",
464                    "loc": {
465                      "start": {
466                        "line": 28,
467                        "column": 11
468                      },
469                      "end": {
470                        "line": 28,
471                        "column": 12
472                      }
473                    }
474                  },
475                  "loc": {
476                    "start": {
477                      "line": 28,
478                      "column": 11
479                    },
480                    "end": {
481                      "line": 28,
482                      "column": 13
483                    }
484                  }
485                },
486                "indexType": {
487                  "type": "TSLiteralType",
488                  "literal": {
489                    "type": "StringLiteral",
490                    "value": "a",
491                    "loc": {
492                      "start": {
493                        "line": 28,
494                        "column": 13
495                      },
496                      "end": {
497                        "line": 28,
498                        "column": 16
499                      }
500                    }
501                  },
502                  "loc": {
503                    "start": {
504                      "line": 28,
505                      "column": 13
506                    },
507                    "end": {
508                      "line": 28,
509                      "column": 16
510                    }
511                  }
512                },
513                "loc": {
514                  "start": {
515                    "line": 28,
516                    "column": 11
517                  },
518                  "end": {
519                    "line": 28,
520                    "column": 18
521                  }
522                }
523              },
524              "loc": {
525                "start": {
526                  "line": 28,
527                  "column": 6
528                },
529                "end": {
530                  "line": 28,
531                  "column": 9
532                }
533              }
534            },
535            "typeAnnotation": {
536              "type": "TSBooleanKeyword",
537              "loc": {
538                "start": {
539                  "line": 28,
540                  "column": 20
541                },
542                "end": {
543                  "line": 28,
544                  "column": 27
545                }
546              }
547            },
548            "readonly": false,
549            "static": false,
550            "loc": {
551              "start": {
552                "line": 28,
553                "column": 5
554              },
555              "end": {
556                "line": 29,
557                "column": 4
558              }
559            }
560          }
561        ],
562        "loc": {
563          "start": {
564            "line": 27,
565            "column": 16
566          },
567          "end": {
568            "line": 29,
569            "column": 4
570          }
571        }
572      },
573      "id": {
574        "type": "Identifier",
575        "name": "I3",
576        "loc": {
577          "start": {
578            "line": 27,
579            "column": 13
580          },
581          "end": {
582            "line": 27,
583            "column": 15
584          }
585        }
586      },
587      "extends": [],
588      "loc": {
589        "start": {
590          "line": 27,
591          "column": 3
592        },
593        "end": {
594          "line": 29,
595          "column": 4
596        }
597      }
598    },
599    {
600      "type": "TSInterfaceDeclaration",
601      "body": {
602        "type": "TSInterfaceBody",
603        "body": [
604          {
605            "type": "TSIndexSignature",
606            "parameters": {
607              "type": "Identifier",
608              "name": "key",
609              "typeAnnotation": {
610                "type": "TSIntersectionType",
611                "types": [
612                  {
613                    "type": "TSStringKeyword",
614                    "loc": {
615                      "start": {
616                        "line": 32,
617                        "column": 11
618                      },
619                      "end": {
620                        "line": 32,
621                        "column": 17
622                      }
623                    }
624                  },
625                  {
626                    "type": "TSStringKeyword",
627                    "loc": {
628                      "start": {
629                        "line": 32,
630                        "column": 20
631                      },
632                      "end": {
633                        "line": 32,
634                        "column": 26
635                      }
636                    }
637                  }
638                ],
639                "loc": {
640                  "start": {
641                    "line": 32,
642                    "column": 11
643                  },
644                  "end": {
645                    "line": 32,
646                    "column": 26
647                  }
648                }
649              },
650              "loc": {
651                "start": {
652                  "line": 32,
653                  "column": 6
654                },
655                "end": {
656                  "line": 32,
657                  "column": 9
658                }
659              }
660            },
661            "typeAnnotation": {
662              "type": "TSBooleanKeyword",
663              "loc": {
664                "start": {
665                  "line": 32,
666                  "column": 29
667                },
668                "end": {
669                  "line": 32,
670                  "column": 36
671                }
672              }
673            },
674            "readonly": false,
675            "static": false,
676            "loc": {
677              "start": {
678                "line": 32,
679                "column": 5
680              },
681              "end": {
682                "line": 33,
683                "column": 4
684              }
685            }
686          }
687        ],
688        "loc": {
689          "start": {
690            "line": 31,
691            "column": 16
692          },
693          "end": {
694            "line": 33,
695            "column": 4
696          }
697        }
698      },
699      "id": {
700        "type": "Identifier",
701        "name": "I4",
702        "loc": {
703          "start": {
704            "line": 31,
705            "column": 13
706          },
707          "end": {
708            "line": 31,
709            "column": 15
710          }
711        }
712      },
713      "extends": [],
714      "loc": {
715        "start": {
716          "line": 31,
717          "column": 3
718        },
719        "end": {
720          "line": 33,
721          "column": 4
722        }
723      }
724    },
725    {
726      "type": "TSInterfaceDeclaration",
727      "body": {
728        "type": "TSInterfaceBody",
729        "body": [
730          {
731            "type": "TSIndexSignature",
732            "parameters": {
733              "type": "Identifier",
734              "name": "key",
735              "typeAnnotation": {
736                "type": "TSUnionType",
737                "types": [
738                  {
739                    "type": "TSStringKeyword",
740                    "loc": {
741                      "start": {
742                        "line": 36,
743                        "column": 11
744                      },
745                      "end": {
746                        "line": 36,
747                        "column": 17
748                      }
749                    }
750                  },
751                  {
752                    "type": "TSIntersectionType",
753                    "types": [
754                      {
755                        "type": "TSStringKeyword",
756                        "loc": {
757                          "start": {
758                            "line": 36,
759                            "column": 22
760                          },
761                          "end": {
762                            "line": 36,
763                            "column": 28
764                          }
765                        }
766                      }
767                    ],
768                    "loc": {
769                      "start": {
770                        "line": 36,
771                        "column": 20
772                      },
773                      "end": {
774                        "line": 36,
775                        "column": 28
776                      }
777                    }
778                  }
779                ],
780                "loc": {
781                  "start": {
782                    "line": 36,
783                    "column": 11
784                  },
785                  "end": {
786                    "line": 36,
787                    "column": 28
788                  }
789                }
790              },
791              "loc": {
792                "start": {
793                  "line": 36,
794                  "column": 6
795                },
796                "end": {
797                  "line": 36,
798                  "column": 9
799                }
800              }
801            },
802            "typeAnnotation": {
803              "type": "TSBooleanKeyword",
804              "loc": {
805                "start": {
806                  "line": 36,
807                  "column": 31
808                },
809                "end": {
810                  "line": 36,
811                  "column": 38
812                }
813              }
814            },
815            "readonly": false,
816            "static": false,
817            "loc": {
818              "start": {
819                "line": 36,
820                "column": 5
821              },
822              "end": {
823                "line": 37,
824                "column": 4
825              }
826            }
827          }
828        ],
829        "loc": {
830          "start": {
831            "line": 35,
832            "column": 16
833          },
834          "end": {
835            "line": 37,
836            "column": 4
837          }
838        }
839      },
840      "id": {
841        "type": "Identifier",
842        "name": "I5",
843        "loc": {
844          "start": {
845            "line": 35,
846            "column": 13
847          },
848          "end": {
849            "line": 35,
850            "column": 15
851          }
852        }
853      },
854      "extends": [],
855      "loc": {
856        "start": {
857          "line": 35,
858          "column": 3
859        },
860        "end": {
861          "line": 37,
862          "column": 4
863        }
864      }
865    }
866  ],
867  "loc": {
868    "start": {
869      "line": 1,
870      "column": 1
871    },
872    "end": {
873      "line": 38,
874      "column": 1
875    }
876  }
877}
878