@bombearn/sdk
Version:
Interaction framework for the yearn protocol
134 lines (133 loc) • 3.88 kB
TypeScript
import { Address, Integer, Locale } from "./common";
import { EarningsDayData } from "./custom/earnings";
import { Apy } from "./custom/vault";
import { VaultStrategiesMetadata } from "./strategy";
/**
* Lens-defined metadata for Yearn Vaults (v1 & v2)
*/
export interface VaultMetadata {
allowZapIn?: boolean;
allowZapOut?: boolean;
apy?: Apy;
classification?: Classification;
controller: Address;
defaultDisplayToken: Address;
depositLimit: Integer;
depositsDisabled?: boolean;
displayIcon: string;
displayName: string;
emergencyShutdown: boolean;
hideIfNoDeposits: boolean;
historicEarnings?: EarningsDayData[];
latestVaultAddress: Address;
migrationAvailable: boolean;
migrationContract?: Address;
migrationTargetVault?: Address;
pricePerShare: Integer;
strategies?: VaultStrategiesMetadata;
symbol?: string;
totalAssets: Integer;
totalSupply: Integer;
vaultDetailPageAssets?: string[];
vaultNameOverride?: string;
withdrawalsDisabled?: boolean;
zapInWith?: string;
zapOutWith?: string;
}
/**
* Lens-defined metadata for a Voting Escrow
*/
export interface VotingEscrowMetadata {
apy?: Apy;
rewardPool: Address;
}
/**
* Lens-defined metadata for a Gauge
*/
export interface GaugeMetadata {
apy: number;
displayIcon: string;
displayName: string;
vaultApy?: Apy;
vaultPricePerShare: Integer;
vaultUnderlyingToken: Address;
rewardToken: Address;
votingEscrowToken: Address;
}
/**
* Key Value representation of metadata names and types.
* Used mainly to provide correct type-guards for asset types.
*/
export declare type Metadata = {
VAULT_V2: VaultMetadata;
VAULT_V1: VaultMetadata;
VOTING_ESCROW: VotingEscrowMetadata;
GAUGE: GaugeMetadata;
};
/**
* Union type of all the existing Metadata types.
*/
export declare type TypeId = keyof Metadata;
export interface LocalizedProperties {
name?: string;
description: string;
}
export declare type Localization = Partial<Record<Locale, LocalizedProperties>>;
/**
* Token metadata from yearn-meta
*/
export interface TokenMetadata {
address: Address;
categories?: string[];
description: string;
website: string;
tokenIconOverride?: string;
tokenSymbolOverride?: string;
tokenNameOverride?: string;
localization: Localization;
}
export interface StrategyMetadata {
name: string;
description: string;
address: Address;
protocols: string[];
}
export interface StrategiesMetadata {
name: string;
description: string;
localization: Localization;
addresses: Address[];
protocols: string[];
}
export interface Classification {
isPool?: boolean;
poolProvider?: "Curve" | "Balancer" | "Yearn";
stability?: "Stable" | "Unstable" | "Correlated" | "Volatile";
stableBaseAsset?: "USD" | "EUR" | "AUD" | "CHF" | "KRW" | "GBP" | "JPY" | "CRV" | "FTM" | "Avax" | "Ether" | "Bitcoin" | "Aave" | "Link";
isAutomated?: boolean;
}
export interface VaultMetadataOverrides {
address: Address;
allowZapIn?: boolean;
allowZapOut?: boolean;
apyOverride?: number;
apyTypeOverride?: string;
classification?: Classification;
comment?: string;
depositsDisabled?: boolean;
displayName?: string;
hideAlways?: boolean;
migrationAvailable?: boolean;
migrationContract?: Address;
migrationTargetVault?: Address;
order?: number;
retired?: boolean;
useVaultDataAsDefault?: boolean;
vaultDetailPageAssets?: string[];
vaultIconOverride?: string;
vaultNameOverride?: string;
vaultSymbolOverride?: string;
withdrawalsDisabled?: boolean;
zapInWith?: string;
zapOutWith?: string;
}