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

#ifndef NAPI_FORM_PROVIDER_H_
#define NAPI_FORM_PROVIDER_H_

#include "ability.h"
#include "form_provider_info.h"
#include "napi/native_api.h"
#include "napi/native_common.h"
#include "napi/native_node_api.h"
#include "nlohmann/json.hpp"
#include "want.h"

struct AsyncNextRefreshTimeFormCallbackInfo {
    napi_env env;
    OHOS::AppExecFwk::Ability *ability;
    napi_async_work asyncWork;
    napi_deferred deferred;
    napi_ref callback;
    int64_t formId;
    int32_t time;
    int result;
};

struct AsyncUpdateFormCallbackInfo {
    napi_env env;
    OHOS::AppExecFwk::Ability *ability;
    napi_async_work asyncWork;
    napi_deferred deferred;
    napi_ref callback;
    int64_t formId;
    std::shared_ptr<OHOS::AppExecFwk::FormProviderData> formProviderData;
    int result;
};


napi_value NAPI_SetFormNextRefreshTime(napi_env env, napi_callback_info info);
napi_value NAPI_UpdateForm(napi_env env, napi_callback_info info);

#endif /* NAPI_FORM_PROVIDER_H_ */
