package types

import (
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)

var (
	ErrNftListingAlreadyExists       = sdkerrors.Register(ModuleName, 1, "nft listing already exist")
	ErrListedNftDoesNotExist         = sdkerrors.Register(ModuleName, 2, "nft listing does not exist")
	ErrBidDoesNotExists              = sdkerrors.Register(ModuleName, 3, "nft bid does not exist")
	ErrNotSupportedBidToken          = sdkerrors.Register(ModuleName, 4, "not supported bid token")
	ErrNftDoesNotExists              = sdkerrors.Register(ModuleName, 5, "specified nft does not exist")
	ErrNotNftOwner                   = sdkerrors.Register(ModuleName, 6, "not the owner of nft")
	ErrNotNftListingOwner            = sdkerrors.Register(ModuleName, 7, "not the owner of nft listing")
	ErrStatusCannotCancelListing     = sdkerrors.Register(ModuleName, 8, "listing status does not allow cancel")
	ErrStatusEndedListing            = sdkerrors.Register(ModuleName, 9, "listing is already ended")
	ErrStatusCannotPlaceBid          = sdkerrors.Register(ModuleName, 10, "listing status does not allow bid")
	ErrStatusCannotCancelBid         = sdkerrors.Register(ModuleName, 11, "listing status does not allow cancel bid")
	ErrStatusCannotSelling           = sdkerrors.Register(ModuleName, 12, "listing status does not allow selling")
	ErrInvalidPriceDenom             = sdkerrors.Register(ModuleName, 13, "invalid price denom")
	ErrInvalidPriceAmount            = sdkerrors.Register(ModuleName, 14, "invalid price amount")
	ErrInvalidDepositDenom           = sdkerrors.Register(ModuleName, 15, "invalid deposit denom")
	ErrInvalidDepositAmount          = sdkerrors.Register(ModuleName, 16, "invalid deposit amount")
	ErrInvalidBorrowDenom            = sdkerrors.Register(ModuleName, 17, "invalid borrow denom")
	ErrInvalidBorrowAmount           = sdkerrors.Register(ModuleName, 18, "invalid borrow amount")
	ErrInvalidRepayDenom             = sdkerrors.Register(ModuleName, 19, "invalid repay denom")
	ErrInvalidRepayAmount            = sdkerrors.Register(ModuleName, 20, "invalid repay amount")
	ErrInvalidInterestAmount         = sdkerrors.Register(ModuleName, 21, "invalid interest amount")
	ErrCancelAfterSomeTime           = sdkerrors.Register(ModuleName, 22, "cancel allowed after some time")
	ErrRebidAfterSomeTime            = sdkerrors.Register(ModuleName, 23, "rebid allowed after some time")
	ErrCannotCancelListingSingleBid  = sdkerrors.Register(ModuleName, 24, "cannot cancel only 1 bid of the listing")
	ErrCannotChangeBidBorrowed       = sdkerrors.Register(ModuleName, 25, "cannot change borrowed bid")
	ErrCannotCancelBorrowedListing   = sdkerrors.Register(ModuleName, 26, "cannot cancel borrowed listing")
	ErrCannotSellingBorrowedListing  = sdkerrors.Register(ModuleName, 27, "cannot sell borrowed listing")
	ErrCannotBorrowForLiquidation    = sdkerrors.Register(ModuleName, 28, "borrow is not allowed for liquidation")
	ErrCannotReBidForLiquidation     = sdkerrors.Register(ModuleName, 29, "rebid is not allowed for liquidation")
	ErrCannotCancelBidForLiquidation = sdkerrors.Register(ModuleName, 30, "cancel bid is not allowed for liquidation")
	ErrInsufficientBalance           = sdkerrors.Register(ModuleName, 31, "insufficient balance")
	ErrSmallExpiryPeriod             = sdkerrors.Register(ModuleName, 32, "bidding period is too short")
	ErrCannotLiquidation             = sdkerrors.Register(ModuleName, 33, "cannot liquidation")
	ErrNegativeCollectedAmount       = sdkerrors.Register(ModuleName, 34, "negative collected amount")
	ErrNegativeProfit                = sdkerrors.Register(ModuleName, 35, "negative profit")
	ErrOwnerCannotPlaceBid           = sdkerrors.Register(ModuleName, 36, "owner cannot place bid")
)
