These schemas provide information and statistics about protocols, including protocol key, name, supported chains, image, URL, recipes, integration types, category, tags, description, Twitter and Telegram URLs, TVL (Total Value Locked), TVL for each supported chain, the date the protocol was created, and timeseries of TVL for a specific time range. They can be used to track the performance of protocols and make data-driven decisions.

ProtocolData

export class ProtocolData {
  key: string;
  name: string;
  chains: Array<string>;
  image: string;
  url: string;
  recipes: Record<string, Array<RecipeData>>;
  integration_types: Array<string>;
  categories: Array<string> | undefined;
  tags: Array<string>;
  description: string | undefined;
  twitter_url: string | undefined;
  telegram_url: string | undefined;
}
@dataclass
class ProtocolData:
    key: str
    name: str
    chains: list[str]
    image: str
    url: str
    recipes: dict[str, list[RecipeData]]
    integration_types: list[str]
    categories: list[str] | None
    tags: list[str]
    description: str | None
    twitter_url: str | None
    telegram_url: str | None

The ProtocolData dataclass holds information about a protocol. It includes the protocol's key, name, supported chains, image, URL, recipes, integration types, category, tags, description, Twitter and Telegram URLs. The recipes attribute holds a dictionary of RecipeData objects, which are used to represent the various actions a user can perform on a protocol.


ProtocolStats

export class ProtocolStats {
  total_tvl: string;
  chain_tvl: Record<string, string>;
  created_date: string | undefined;
}
@dataclass
class ProtocolStats:
    total_tvl: str
    chain_tvl: dict[str, str]
    created_date: str | None

The ProtocolStats dataclass holds statistical information about a protocol. It includes the protocol's total TVL (Total Value Locked), TVL for each supported chain, and the date the protocol was created.


ProtocolWithStats

export class ProtocolWithStats {
    protocol: ProtocolData;
    stats: ProtocolStats;
}
@dataclass
class ProtocolWithStats:
    protocol: ProtocolData
    stats: ProtocolStats

The ProtocolWithStats dataclass combines ProtocolData and ProtocolStats to provide a full representation of a protocol, including both its information and statistics.


PaginatedProtocolWithStats

export class PaginatedProtocolWithStats {
  response: Array<ProtocolWithStats>;
  total: number;
}
@dataclass
class PaginatedProtocolWithStats:
    response: list[ProtocolWithStats]
    total: int

The PaginatedProtocolWithStats dataclass holds a paginated list of ProtocolWithStats objects along with a total count of the protocols. The response attribute holds a list of ProtocolWithStats objects, each of which represents a protocol along with its statistics. The total attribute holds the total count of ProtocolWithStats objects.


ProtocolTimeseries

export class ProtocolTimeseries {
  tier: string;
  tvl_timeseries: Record<number, number | undefined>;
  chain_tvl_timeseries: Record<string, Record<number, number | undefined>>;
}
@dataclass
class ProtocolTimeseries:
    tier: str
    tvl_timeseries: dict[str, float | None]
    chain_tvl_timeseries: dict[str, dict[str, float | None]]

The ProtocolTimeseries dataclass holds a timeseries of TVL (Total Value Locked) for a specific time range. It includes a tier attribute, which specifies the time range, a tvl_timeseries attribute, which is a dictionary that maps timestamps to the total TVL of the protocol at that time, and a chain_tvl_timeseries attribute, which is a dictionary that maps chain IDs to dictionaries of timestamps and the TVL of the protocol on that chain at that time. The timestamps are Unix timestamps in seconds, and the TVL values are represented as floats or None if the value is not available.