# old/mod.ts
export function keepSame(): void {}
export function toRemove(a: string, b: string): void {}
export function toModify(x: string): string { return x; }

# new/mod.ts
export function keepSame(): void {}
export function toModify(x: number): number { return x; }
export function brandNew(): void {}

# output.json
{
  "modifiedModules": {
    "file:///mod.ts": {
      "added": [
        {
          "name": "brandNew",
          "declarations": [
            {
              "location": {
                "filename": "file:///mod.ts",
                "line": 2,
                "col": 0,
                "byteIndex": 94
              },
              "declarationKind": "export",
              "kind": "function",
              "def": {
                "params": [],
                "returnType": {
                  "repr": "void",
                  "kind": "keyword",
                  "value": "void"
                },
                "hasBody": true
              }
            }
          ]
        }
      ],
      "removed": [
        {
          "name": "toRemove",
          "declarations": [
            {
              "location": {
                "filename": "file:///mod.ts",
                "line": 1,
                "col": 0,
                "byteIndex": 36
              },
              "declarationKind": "export",
              "kind": "function",
              "def": {
                "params": [
                  {
                    "kind": "identifier",
                    "name": "a",
                    "optional": false,
                    "tsType": {
                      "repr": "string",
                      "kind": "keyword",
                      "value": "string"
                    }
                  },
                  {
                    "kind": "identifier",
                    "name": "b",
                    "optional": false,
                    "tsType": {
                      "repr": "string",
                      "kind": "keyword",
                      "value": "string"
                    }
                  }
                ],
                "returnType": {
                  "repr": "void",
                  "kind": "keyword",
                  "value": "void"
                },
                "hasBody": true
              }
            }
          ]
        }
      ],
      "modified": [
        {
          "name": "toModify",
          "declarations": {
            "modified": [
              {
                "kind": "function",
                "defChanges": {
                  "type": "function",
                  "paramsChange": {
                    "modified": [
                      {
                        "index": 0,
                        "typeChange": {
                          "old": {
                            "repr": "string",
                            "kind": "keyword",
                            "value": "string"
                          },
                          "new": {
                            "repr": "number",
                            "kind": "keyword",
                            "value": "number"
                          }
                        }
                      }
                    ]
                  },
                  "returnTypeChange": {
                    "old": {
                      "repr": "string",
                      "kind": "keyword",
                      "value": "string"
                    },
                    "new": {
                      "repr": "number",
                      "kind": "keyword",
                      "value": "number"
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}
