/*
 * Copyright (c) 2026 Huawei Technologies Co., Ltd.
 * openFuyao is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *          http://license.coscl.org.cn/MulanPSL2
 * 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 FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */

package types

// ArtifactType 表示预热对象的形态。
type ArtifactType string

// ArtifactType values describe the shape of the artifact being warmed up.
const (
	ArtifactTypeDirectory   ArtifactType = "DIRECTORY"
	ArtifactTypeFile        ArtifactType = "FILE"
	ArtifactTypeModelWeight ArtifactType = "MODEL_WEIGHT"
)

// WarmupTaskPhase 表示节点侧任务状态。
type WarmupTaskPhase string

// WarmupTaskPhase values describe task progress on a node agent.
const (
	WarmupPhasePending   WarmupTaskPhase = "Pending"
	WarmupPhaseRunning   WarmupTaskPhase = "Running"
	WarmupPhaseSucceeded WarmupTaskPhase = "Succeeded"
	WarmupPhaseFailed    WarmupTaskPhase = "Failed"
	WarmupPhaseCanceled  WarmupTaskPhase = "Canceled"
)

// DistributionStrategy 表示批次级分发策略。
type DistributionStrategy string

// DistributionStrategy values describe how work is distributed across targets.
const (
	DistributionSingleSourceFanout  DistributionStrategy = "SINGLE_SOURCE_FANOUT"
	DistributionNodeLevelAssignment DistributionStrategy = "NODE_LEVEL_ASSIGNMENT"
	DistributionStripedMultiSource  DistributionStrategy = "STRIPED_MULTI_SOURCE"
	DistributionHybrid              DistributionStrategy = "HYBRID"
)

// TransferMode 表示单节点上的拉取模式。
type TransferMode string

// TransferMode values describe how a single target pulls data.
const (
	TransferModeSingleSourceDirect   TransferMode = "SINGLE_SOURCE_DIRECT"
	TransferModeDirectStriped        TransferMode = "DIRECT_STRIPED"
	TransferModePartialPullAllGather TransferMode = "PARTIAL_PULL_ALLGATHER"
)

// CollectiveMode describes the collective transport pattern used across peers.
type CollectiveMode string

// CollectiveMode values describe the collective algorithm used for peer exchange.
const (
	CollectiveModeNone CollectiveMode = "NONE"
	CollectiveModeRing CollectiveMode = "RING"
)

// TransportPath describes which underlying transport served the transfer.
type TransportPath string

// TransportPath values identify the actual transport selected at runtime.
const (
	TransportPathRDMA        TransportPath = "RDMA"
	TransportPathTCPFallback TransportPath = "TCP_FALLBACK"
	TransportPathMixed       TransportPath = "MIXED"
)

// ArtifactFileKind 表示 HuggingFace 下载目录中的文件角色。
type ArtifactFileKind string

// ArtifactFileKind values classify files within a logical artifact manifest.
const (
	ArtifactFileKindSafeTensors ArtifactFileKind = "SAFETENSORS"
	ArtifactFileKindJSON        ArtifactFileKind = "JSON"
	ArtifactFileKindTokenizer   ArtifactFileKind = "TOKENIZER"
	ArtifactFileKindAuxiliary   ArtifactFileKind = "AUXILIARY"
)