package util

import "time"

const (
	ConsensusAccountName = "consensus"
	ProtoConfigPath      = "protocol"

	// MaxAlphabetNodes is the maximum number of candidates allowed, which is currently limited by the size
	// of the invocation script.
	// See: https://github.com/nspcc-dev/neo-go/blob/740488f7f35e367eaa99a71c0a609c315fe2b0fc/pkg/core/transaction/witness.go#L10
	MaxAlphabetNodes = 22

	EndpointFlag                    = "rpc-endpoint"
	EndpointFlagDesc                = "N3 RPC node endpoint"
	EndpointFlagShort               = "r"
	AlphabetWalletsFlag             = "alphabet-wallets"
	AlphabetWalletsFlagDesc         = "Path to alphabet wallets dir"
	LocalDumpFlag                   = "local-dump"
	ContractsInitFlag               = "contracts"
	ContractsInitFlagDesc           = "Path to archive with compiled FrostFS contracts (the default is to fetch the latest release from the official repository)"
	ContractsURLFlag                = "contracts-url"
	ContractsURLFlagDesc            = "URL to archive with compiled FrostFS contracts"
	EpochDurationInitFlag           = "network.epoch_duration"
	MaxObjectSizeInitFlag           = "network.max_object_size"
	RefillGasAmountFlag             = "gas"
	StorageWalletFlag               = "storage-wallet"
	ContainerFeeInitFlag            = "network.fee.container"
	ContainerAliasFeeInitFlag       = "network.fee.container_alias"
	CandidateFeeInitFlag            = "network.fee.candidate"
	WithdrawFeeInitFlag             = "network.fee.withdraw"
	MaintenanceModeAllowedInitFlag  = "network.maintenance_mode_allowed"
	HomomorphicHashDisabledInitFlag = "network.homomorphic_hash_disabled"

	SingleAccountName    = "single"
	CommitteeAccountName = "committee"

	NNSContract        = "nns"
	FrostfsContract    = "frostfs"    // not deployed in side-chain.
	ProcessingContract = "processing" // not deployed in side-chain.
	AlphabetContract   = "alphabet"
	BalanceContract    = "balance"
	ContainerContract  = "container"
	FrostfsIDContract  = "frostfsid"
	NetmapContract     = "netmap"
	PolicyContract     = "policy"
	ProxyContract      = "proxy"

	ContractWalletFilename    = "contract.json"
	ContractWalletPasswordKey = "contract"

	FrostfsOpsEmail = "ops@frostfs.info"

	DefaultExpirationTime = 10 * 365 * 24 * time.Hour / time.Second
)

var (
	ContractList = []string{
		BalanceContract,
		ContainerContract,
		FrostfsIDContract,
		NetmapContract,
		PolicyContract,
		ProxyContract,
	}

	FullContractList = append([]string{
		FrostfsContract,
		ProcessingContract,
		NNSContract,
		AlphabetContract,
	}, ContractList...)
)