142365ec6Sopenharmony_ci/*
242365ec6Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
342365ec6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
442365ec6Sopenharmony_ci * you may not use this file except in compliance with the License.
542365ec6Sopenharmony_ci * You may obtain a copy of the License at
642365ec6Sopenharmony_ci *
742365ec6Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
842365ec6Sopenharmony_ci *
942365ec6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1042365ec6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1142365ec6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1242365ec6Sopenharmony_ci * See the License for the specific language governing permissions and
1342365ec6Sopenharmony_ci * limitations under the License.
1442365ec6Sopenharmony_ci */
1542365ec6Sopenharmony_ci
1642365ec6Sopenharmony_ciimport type { UiStateMode } from '../redux/actions/Action';
1742365ec6Sopenharmony_ciimport { Action } from '../redux/actions/Action';
1842365ec6Sopenharmony_ciimport { CameraService } from '../camera/CameraService';
1942365ec6Sopenharmony_ciimport type { EventBus } from '../worker/eventbus/EventBus';
2042365ec6Sopenharmony_ciimport { EventBusManager } from '../worker/eventbus/EventBusManager';
2142365ec6Sopenharmony_ciimport { WorkerManager } from '../worker/WorkerManager';
2242365ec6Sopenharmony_ci
2342365ec6Sopenharmony_ciexport abstract class BaseFunction {
2442365ec6Sopenharmony_ci  protected mCameraService: CameraService = CameraService.getInstance();
2542365ec6Sopenharmony_ci  protected mWorkerManager: WorkerManager = new WorkerManager();
2642365ec6Sopenharmony_ci  protected mEventBus: EventBus = EventBusManager.getInstance().getEventBus();
2742365ec6Sopenharmony_ci
2842365ec6Sopenharmony_ci  protected enableUi(): void {
2942365ec6Sopenharmony_ci    this.mWorkerManager.postMessage(Action.uiState(true));
3042365ec6Sopenharmony_ci  }
3142365ec6Sopenharmony_ci
3242365ec6Sopenharmony_ci  protected disableUi(): void {
3342365ec6Sopenharmony_ci    this.mWorkerManager.postMessage(Action.uiState(false));
3442365ec6Sopenharmony_ci  }
3542365ec6Sopenharmony_ci
3642365ec6Sopenharmony_ci  protected enableUiWithMode(uiStateMode: UiStateMode): void {
3742365ec6Sopenharmony_ci    this.mWorkerManager.postMessage(Action.uiStateWithMode(true, uiStateMode));
3842365ec6Sopenharmony_ci  }
3942365ec6Sopenharmony_ci
4042365ec6Sopenharmony_ci  protected disableUiWithMode(uiStateMode: UiStateMode): void {
4142365ec6Sopenharmony_ci    this.mWorkerManager.postMessage(Action.uiStateWithMode(false, uiStateMode));
4242365ec6Sopenharmony_ci  }
4342365ec6Sopenharmony_ci
4442365ec6Sopenharmony_ci  abstract load(): void
4542365ec6Sopenharmony_ci
4642365ec6Sopenharmony_ci  abstract unload(): void
4742365ec6Sopenharmony_ci}