/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
declare class A {
    keptPropertyPara2: number;
    static method1(x2: number, ...y2: string[]): void;
    method2(u2: number, v2: (defaultKeptPara3: number) => string, w2?: number): void;
    method3(s2?: number, ...t2: number[]): void;
    constructor(p2: number, q2: number, r2: (defaultKeptPara4: number) => string);
    field1?: (defaultKeptPara1: number) => void;
    field2: (defaultKeptPara2: number) => number;
    method4(n2: (defaultKeptPara2: string) => number, o2: {
        key1: number;
        key2: string;
    }): void;
    method5(l2: (defaultKeptPara2: number) => number, m2: number): number;
    manualKeepMethod1(j2: (defaultKeptPara2: number) => number, k2: number): number;
}
declare class manualKeepClassName {
    constructor(g2: number, h2: number, i2: (defaultKeptPara4: number) => string);
    field5?: (defaultKeptPara1: number) => void;
    method9(e2: (defaultKeptPara2: number) => number, f2: number): number;
    manualKeepMethod1(c2: (defaultKeptPara2: number) => number, d2: number): void;
}
interface B {
    method6(defaultKeptPara1: number, ...defaultKeptPara2: string[]): void;
    constructor(defaultKeptPara1: number): void;
    field3: (defaultKeptPara1: number, ...defaultKeptPara2: number[]) => void;
    field4: (defaultKeptPara1: number, defaultKeptPara2: (defaultKeptPara3: string) => number) => string;
    method7(defaultKeptPara1: (defaultKeptPara2: string) => number, defaultKeptPara3: {
        key1: number;
        key2: string;
    }): void;
    method8(defaultKeptPara1: (defaultKeptPara2: number) => number, defaultKeptPara3: number): void;
    manualKeepMethod1(defaultKeptPara1: (defaultKeptPara2: number) => number, defaultKeptPara3: number): void;
}
declare function foo1(b2: number): void;
declare function foo2(z1: number, ...a2: string[]): void;
declare function foo3(y1?: (defaultKeptPara2: number) => void): void;
declare function foo4(w1: number, x1?: (defaultKeptPara3: number) => void): void;
declare function manualKeepFoo1(u1: number, v1?: (defaultKeptPara3: number) => void): void;
declare let c: (defaultKeptPara1: number, ...defaultKeptPara2: string[]) => void;
declare let d: (defaultKeptPara1: number, defaultKeptPara2?: ((defaultKeptPara3: number) => void) | undefined) => void;
declare function foo(s1: number, t1: {
    prop1: number;
    prop2: string;
}): void;
declare let e: (defaultKeptPara1: number) => void;
declare const sum: (defaultKeptPara1: number, defaultKeptPara2: number) => void;
declare let myfun1: (defaultKeptPara1: (defaultKeptPara2: number) => number) => number;
declare const sum2: (defaultKeptPara1: number, defaultKeptPara2: (defaultKeptPara3: number) => number, ...defaultKeptPara4: string[]) => void;
declare let a: (defaultKeptPara1: (defaultKeptPara2: number) => number, ...defaultKeptPara3: string[]) => void;
declare let b: (defaultKeptPara1: (defaultKeptPara2: number) => number, defaultKeptPara3?: ((defaultKeptPara4: number) => void) | undefined) => void;
declare let f: (defaultKeptPara1: number, ...defaultKeptPara2: string[]) => void;
declare let g: (defaultKeptPara1: number, defaultKeptPara2?: ((defaultKeptPara3: number) => void) | undefined) => void;
type typeFunc = (defaultKeptPara1: number, ...defaultKeptPara2: string[]) => {};
type typeFunc2 = (defaultKeptPara1: number, defaultKeptPara2: (defaultKeptPara3: number) => number) => {};
interface Person<T1> {
    method<T2>(): void;
}
declare class Person2<T3> {
    method2<r1>(): void;
}
declare function foo5<q1>(): void;
declare namespace ns1 {
    class A {
        keptPropertyPara2: number;
        static method1(o1: number, ...p1: string[]): void;
        method2(l1: number, m1: (defaultKeptPara3: number) => string, n1?: number): void;
        method3(j1?: number, ...k1: number[]): void;
        constructor(g1: number, h1: number, i1: (defaultKeptPara4: number) => string);
        field1?: (defaultKeptPara1: number) => void;
        field2: (defaultKeptPara2: number) => number;
        method4(e1: (defaultKeptPara2: string) => number, f1: {
            key1: number;
            key2: string;
        }): void;
        method5(c1: (defaultKeptPara2: number) => number, d1: number): number;
        manualKeepMethod1(a1: (defaultKeptPara2: number) => number, b1: number): number;
    }
    class manualKeepClassName {
        constructor(x: number, y: number, z: (defaultKeptPara4: number) => string);
        field5?: (defaultKeptPara1: number) => void;
        method9(v: (defaultKeptPara2: number) => number, w: number): number;
        manualKeepMethod1(t: (defaultKeptPara2: number) => number, u: number): void;
    }
    interface B {
        method6(defaultKeptPara1: number, ...keptPdefaultKeptPara2ara2: string[]): void;
        constructor(defaultKeptPara1: number): void;
        field3: (defaultKeptPara1: number, ...defaultKeptPara2: number[]) => void;
        field4: (defaultKeptPara1: number, defaultKeptPara2: (defaultKeptPara3: string) => number) => string;
        method7(defaultKeptPara1: (defaultKeptPara2: string) => number, defaultKeptPara3: {
            key1: number;
            key2: string;
        }): void;
        method8(defaultKeptPara1: (defaultKeptPara2: number) => number, defaultKeptPara3: number): void;
        manualKeepMethod1(defaultKeptPara1: (defaultKeptPara2: number) => number, defaultKeptPara3: number): void;
    }
    function foo1(s: number): void;
    function foo2(q: number, ...r: string[]): void;
    function foo3(p?: (defaultKeptPara2: number) => void): void;
    function foo4(n: number, o?: (defaultKeptPara3: number) => void): void;
    function manualKeepFoo1(l: number, m?: (defaultKeptPara3: number) => void): void;
    let c: (defaultKeptPara1: number, ...defaultKeptPara2: string[]) => void;
    let d: (defaultKeptPara1: number, defaultKeptPara2?: ((defaultKeptPara3: number) => void) | undefined) => void;
    function foo(j: number, k: {
        prop1: number;
        prop2: string;
    }): void;
    let e: (defaultKeptPara1: number) => void;
    const sum: (defaultKeptPara1: number, defaultKeptPara2: number) => void;
    let myfun1: (defaultKeptPara1: (defaultKeptPara2: number) => number) => number;
    const sum2: (defaultKeptPara1: number, defaultKeptPara2: (defaultKeptPara3: number) => number, ...defaultKeptPara4: string[]) => void;
    let a: (defaultKeptPara1: (defaultKeptPara2: number) => number, ...defaultKeptPara2: string[]) => void;
    let b: (defaultKeptPara1: (defaultKeptPara2: number) => number, defaultKeptPara2?: ((defaultKeptPara4: number) => void) | undefined) => void;
    let f: (defaultKeptPara1: number, ...defaultKeptPara2: string[]) => void;
    let g: (defaultKeptPara1: number, defaultKeptPara2?: ((defaultKeptPara3: number) => void) | undefined) => void;
    type typeFunc = (defaultKeptPara1: number, ...defaultKeptPara2: string[]) => {};
    type typeFunc2 = (defaultKeptPara1: number, defaultKeptPara2: (defaultKeptPara3: number) => number) => {};
    interface person<T1> {
        method<T2>(): void;
    }
    class person2<T3> {
        method2<i>(): void;
    }
    function foo5<h>(): void;
}
