# https://jsr.io/@scope/a/meta.json
{"versions": { "1.0.0": {} } }

# https://jsr.io/@scope/a/1.0.0_meta.json
{ "exports": { ".": "./mod.ts" } }

# https://jsr.io/@scope/a/1.0.0/mod.ts
export class Test {
  test1() {}
  test2(): number {
    return 2;
  }
  test3(param: number): number {
  }
  test4(param = 2): number {
    return 1;
  }
  test5<T extends PublicOther>(param = 2): T {
    return new PublicOther();
  }
  test6<T = PublicOther>(param: number = 2): T {
    return new PublicOther();
  }

  test7(param?: number): number;
  test7(param?: number, param2?: PublicOther2): number;
  test7(param: PrivateOther = new PrivateOther, param2?: string): PrivateOther {
    return new PublicOther();
  }

  test8(param: number): number;
  test8(param: string): string;
  test8(param: string): string {
  }
}

export class Test2 {
  public method1() {
  }
  protected method2() {
  }
  private tsPrivateMethod() {
  }
  #privateMethod() {
  }
}

class PublicOther {
}
class PublicOther2 {
}

class PrivateOther {}

# mod.ts
import 'jsr:@scope/a'

# output
{
  "roots": [
    "file:///mod.ts"
  ],
  "modules": [
    {
      "kind": "esm",
      "dependencies": [
        {
          "specifier": "jsr:@scope/a",
          "code": {
            "specifier": "jsr:@scope/a",
            "resolutionMode": "import",
            "span": {
              "start": {
                "line": 0,
                "character": 7
              },
              "end": {
                "line": 0,
                "character": 21
              }
            }
          }
        }
      ],
      "size": 22,
      "mediaType": "TypeScript",
      "specifier": "file:///mod.ts"
    },
    {
      "kind": "esm",
      "size": 833,
      "mediaType": "TypeScript",
      "specifier": "https://jsr.io/@scope/a/1.0.0/mod.ts"
    }
  ],
  "redirects": {
    "jsr:@scope/a": "https://jsr.io/@scope/a/1.0.0/mod.ts"
  },
  "packages": {
    "@scope/a@*": "@scope/a@1.0.0"
  }
}

Fast check https://jsr.io/@scope/a/1.0.0/mod.ts:
  {}
  export class Test {
    test1(): void {}
    test2(): number {
      return {} as never;
    }
    test3(param: number): number {
      return {} as never;
    }
    test4(param?: number): number {
      return {} as never;
    }
    test5<T extends PublicOther>(param?: number): T {
      return {} as never;
    }
    test6<T = PublicOther>(param?: number): T {
      return {} as never;
    }
    test7(param?: number): number;
    test7(param?: number, param2?: PublicOther2): number;
    test7(param0?: any, param1?: any): any {
      return {} as never;
    }
    test8(param: number): number;
    test8(param: string): string;
    test8(param0?: any): any {
      return {} as never;
    }
  }
  export class Test2 {
    #private!: unknown;
    public method1(): void {}
    protected method2(): void {}
    declare private tsPrivateMethod: any;
  }
  class PublicOther {
  }
  class PublicOther2 {
  }
  --- DTS ---
  export declare class Test {
    test1(): void;
    test2(): number;
    test3(param: number): number;
    test4(param?: number): number;
    test5<T extends PublicOther>(param?: number): T;
    test6<T = PublicOther>(param?: number): T;
    test7(param?: number): number;
    test7(param?: number, param2?: PublicOther2): number;
    test8(param: number): number;
    test8(param: string): string;
  }
  export declare class Test2 {
    public method1(): void;
    protected method2(): void;
    private tsPrivateMethod: any;
  }
  declare class PublicOther {
  }
  declare class PublicOther2 {
  }
