/*
 * 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.
 */


function func1(a: number, b: string) { }
function func2(a: boolean = true, ...b: number[]) { }
function func3(a = 6, [c, d], b?) { }
function func4({ }: number, [a, b]: string[]) { }
function func5([a, b]: [number, string] = [1, "foo"]) { }
function func6({ a, b }: { a: number, b: number } = { a: 0, b: 0 }) { }
declare function func7([a, b]: [number, string])
declare function func8({ a, b }: { a: number, b: number })
declare function func9([a, b]?: [number, string])
declare function func10({ a, b }?: { a: number, b: number })

interface Interface1 {
    (a: number, { b, c }?: {
        b?: boolean;
        c?: any;
    }): string;
}