/**
 * Copyright (c) 2025 Huawei Technologies Co., Ltd.
 * This program is free software, you can redistribute it and/or modify it under the terms and conditions of 
 * CANN Open Software License Agreement Version 2.0 (the "License").
 * Please refer to the License for details. You may not use this file except in compliance with the License.
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, 
 * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
 * See LICENSE in the root of the software repository for the full text of the License.
 */

#ifndef INC_GRAPH_FLOW_GRAPH_DATA_FLOW_ATTR_DEFINE_H_
#define INC_GRAPH_FLOW_GRAPH_DATA_FLOW_ATTR_DEFINE_H_

#include "graph/debug/ge_attr_define.h"

namespace ge {
namespace dflow {
// Public attribute
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_PROCESS_POINTS;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_IS_DATA_FLOW_GRAPH;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_INPUT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_OUTPUT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_CONTAINS_N_MAPPING_NODE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_ENABLE_EXCEPTION_CATCH;

// For data align
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_INPUTS_ALIGN_TIMEOUT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_INPUTS_ALIGN_MAX_CACHE_NUM;
// whether dropout data when no align
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DATA_FLOW_INPUTS_ALIGN_DROPOUT;

// For count batch
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_COUNT_BATCH_BATCH_SIZE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_COUNT_BATCH_SLIDE_STRIDE;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_COUNT_BATCH_TIMEOUT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_COUNT_BATCH_BATCH_DIM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_COUNT_BATCH_FLAG;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_COUNT_BATCH_PADDING;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_COUNT_BATCH_DROP_REMAINDER;

// For time batch
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_TIME_BATCH_TIME_WINDOW;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_TIME_BATCH_TIME_INTERVAL;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_TIME_BATCH_TIMEOUT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_TIME_BATCH_BATCH_DIM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_TIME_BATCH_FLAG;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_TIME_BATCH_PADDING;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_TIME_BATCH_DROP_REMAINDER;

// FlowFunc
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_FLOW_FUNC_BIN_PATH;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_FLOW_FUNC_FUNC_LIST;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_FLOW_FUNC_FUNC_INPUTS_INDEX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_FLOW_FUNC_FUNC_OUTPUTS_INDEX;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_FLOW_FUNC_FUNC_STREAM_INPUT;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_FLOW_FUNC_INVOKE_KEYS;

// for balance
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_BALANCE_SCATTER;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_BALANCE_GATHER;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char *const ATTR_NAME_DYNAMIC_BALANCED_DISTRIBUTION_HCOM;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char
    *const ATTR_NAME_DYNAMIC_BALANCED_DISTRIBUTION_HCOM_GROUP;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char
    *const ATTR_NAME_DYNAMIC_BALANCED_DISTRIBUTION_HCOM_TAG;
GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY extern const char
    *const ATTR_NAME_DYNAMIC_BALANCED_DISTRIBUTION_HCOM_IS_RECV;

// for inner pp
constexpr const char *INNER_PP_TYPE_MODEL_PP = "_MODEL_PP";
constexpr const char *INNER_PP_CUSTOM_ATTR_INNER_TYPE = "_dflow_inner_pp_attr_inner_type";
constexpr const char *INNER_PP_CUSTOM_ATTR_MODEL_PP_MODEL_PATH = "_dflow_model_pp_attr_model_path";
}  // namespace dflow
}  // namespace ge
#endif  // INC_GRAPH_FLOW_GRAPH_DATA_FLOW_ATTR_DEFINE_H_