Source code for api.structs

"""Module containing API data structures."""

from collections import namedtuple

AccountInfo = namedtuple(
    "AccountInfo",
    ["addresses", "bundle", "values_in", "online", "points"],
    defaults=[None, None, "ALGO", None, None],
)
Entities = namedtuple(
    "Entities", ["programs", "providers", "markets"], defaults=[None, None, None]
)
AsaItem = namedtuple("AsaItem", ["value", "asset", "amount", "price", "programs"])
AsaItemProgram = namedtuple(
    "AsaItemProgram",
    ["program", "value", "amount", "proxy", "distribution", "linked"],
    defaults=["program", None, None, None, None, None],
)
AsaProgram = namedtuple(
    "AsaProgram",
    ["type", "name", "provider", "url", "code"],
    defaults=[None, None, None, None, None],
)
AsaLink = namedtuple("AsaLink", ["provider", "link", "title"])
Distribution = namedtuple("Distribution", ["value", "amount", "link"])
DistributionLink = namedtuple("DistributionLink", ["provider", "text", "url"])
LinkedData = namedtuple(
    "LinkedData",
    ["provider", "text", "link", "value", "amount", "balance", "info", "id"],
    defaults=[None, "text", None, None, None, None, None, None],
)
Provider = namedtuple("Provider", ["name", "info"], defaults=["Unknown", None])

NftCollection = namedtuple(
    "NftCollection",
    ["value", "name", "amount", "nfts"],  # TODO: "floor" will be added
)
NftItem = namedtuple("NftItem", ["value", "nft", "amount", "price"])
Nft = namedtuple(
    "Nft",
    [
        "id",
        "name",
        "unit",
        "total",
        "decimals",
        "creator",
        "image",
        "thumbnail",
        "urls",
        "listings",
        "floor",  # TODO: will be removed
        "last_purchase",
        "max_purchase",
        "title",
        "description",
        "rarity",
        "traits",
    ],
)
NftCurrency = namedtuple("NftCurrency", ["amount", "asset"])
NftListing = namedtuple("NftListing", ["price", "market", "link", "currency"])
NftPurchase = namedtuple(
    "NftPurchase", ["price", "market", "link", "epoch", "currency"]
)
NftTrait = namedtuple("NftTrait", ["name", "value"])
NftUrl = namedtuple("NftUrl", ["typ", "url"])

SystemInfo = namedtuple("SystemInfo", ["warning", "information"], defaults=[None, None])
Total = namedtuple(
    "Total",
    [
        "algo",
        "asa",
        "nft",
        "total",
        "totalusdc",
        "priceusdc",
        "pricealgo",
        "noteval",
        "totalwonft",
        "totalwonftusdc",
    ],
)

# # LP
LpProvider = namedtuple("LpProvider", ["code", "name", "baselink"])
LpFarming = namedtuple("LpFarming", ["code", "name", "baselink"])