/*
 * Copyright (c) 2025 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.
 */

import router, {
  BackRouterOptions,
  DisableAlertBeforeBackPageOptions,
  EnableAlertBeforeBackPageOptions, RouterOptions, RouterState } from '@system.router';

class K {
  private router: RouterOptions = {
    uri: 'pages/routerpage2/routerpage2',
    params: { // error
      data1: 'message',
      data2: {
        data3: [123, 456, 789]
      }
    }
  }

  private options: BackRouterOptions = {
    uri: 'pages/detail/detail',  // error
    params: {    // error
      data1: 'message'
    }
  }

  getState() {
    let page: RouterState = router.getState(); // error
    console.log('current index = ' + page.index); // error
    console.log('current name = ' + page.name); // error
    console.log('current path = ' + page.path); // error
  }

  pushPage() {
    router.push(this.router);   // error
  }

  defaultBack() {
    router.back(this.options);   // error
  }
}

export default new K()

class L {
  private options: EnableAlertBeforeBackPageOptions = {
    message: 'Message Info',
    success: () => {
      console.log('success');
    },
    cancel: () => { // error
      console.log('cancel');
    },
    complete: () => { // error
      console.log('complete');
    }
  }

  enableAlertBeforeBackPage() {
    router.enableAlertBeforeBackPage(this.options);
  }
}

class M {
  enableAlertBeforeBackPage() {
    router.enableAlertBeforeBackPage({
      message: 'Message Info',
      success: () => { // error
        console.log('success');
      },
      cancel: () => {
        console.log('cancel');
      }
    });
  }
}

class Z {
  private options: DisableAlertBeforeBackPageOptions = {    // error
    success: () => {
      console.log('success');
    },
    cancel: () => {
      console.log('cancel');
    }
  }

  disableAlertBeforeBackPage() {
    router.disableAlertBeforeBackPage(this.options);
  }
}