@bandz/protocol-js
Version:
Bandz protocol data aggregation tool
249 lines (248 loc) • 8.18 kB
TypeScript
import { providers, BigNumber, BytesLike, PopulatedTransaction } from 'ethers';
export declare type tSmartBCHAddress = string;
export declare type tStringCurrencyUnits = string;
export declare type tStringDecimalUnits = string;
export declare type ENS = string;
/** InterestRate options */
export declare enum InterestRate {
None = "None",
Stable = "Stable",
Variable = "Variable"
}
export declare enum Market {
Proto = "proto",
AMM = "amm"
}
export declare enum Network {
mainnet = "mainnet",
amber = "amber"
}
export declare enum ChainId {
mainnet = 10000,
amber = 10001
}
export declare type ConstantAddressesByNetwork = {
[network: string]: {
SYNTHETIX_PROXY_ADDRESS?: tSmartBCHAddress;
};
};
export declare type GovernanceConfig = {
BANDZ_GOVERNANCE_V2: tSmartBCHAddress;
BANDZ_GOVERNANCE_V2_EXECUTOR_SHORT: tSmartBCHAddress;
BANDZ_GOVERNANCE_V2_EXECUTOR_LONG: tSmartBCHAddress;
BANDZ_GOVERNANCE_V2_HELPER: tSmartBCHAddress;
};
export declare type IncentivesConfig = {
INCENTIVES_CONTROLLER: tSmartBCHAddress;
INCENTIVES_CONTROLLER_REWARD_TOKEN: tSmartBCHAddress;
};
export declare type MigratorConfig = {
LEND_TO_AAVE_MIGRATOR: tSmartBCHAddress;
};
export declare type LendingPoolMarketConfig = {
LENDING_POOL: tSmartBCHAddress;
WBCH_GATEWAY?: tSmartBCHAddress;
FLASH_LIQUIDATION_ADAPTER?: tSmartBCHAddress;
REPAY_WITH_COLLATERAL_ADAPTER?: tSmartBCHAddress;
SWAP_COLLATERAL_ADAPTER?: tSmartBCHAddress;
FAUCET?: tSmartBCHAddress;
};
export declare type LendingPoolConfig = {
[network: string]: {
[market: string]: LendingPoolMarketConfig;
};
};
export declare type StakingNetworkConfig = {
TOKEN_STAKING: tSmartBCHAddress;
STAKING_REWARD_TOKEN: tSmartBCHAddress;
STAKING_HELPER?: tSmartBCHAddress;
};
export declare type StakingConfig = {
[network: string]: {
[stake: string]: StakingNetworkConfig;
};
};
export declare type TxBuilderConfig = {
governance?: {
[network: string]: GovernanceConfig;
};
incentives?: {
[network: string]: IncentivesConfig;
};
migrator?: {
[network: string]: MigratorConfig;
};
lendingPool?: LendingPoolConfig;
staking?: StakingConfig;
};
export declare enum eSmartBCHTxType {
ERC20_APPROVAL = "ERC20_APPROVAL",
DLP_ACTION = "DLP_ACTION",
GOVERNANCE_ACTION = "GOVERNANCE_ACTION",
GOV_DELEGATION_ACTION = "GOV_DELEGATION_ACTION",
STAKE_ACTION = "STAKE_ACTION",
MIGRATION_LEND_AAVE = "MIGRATION_LEND_AAVE",
FAUCET_MINT = "FAUCET_MINT",
REWARD_ACTION = "REWARD_ACTION"
}
export declare enum ProtocolAction {
default = "default",
withdraw = "withdraw",
deposit = "deposit",
liquidationCall = "liquidationCall",
liquidationFlash = "liquidationFlash",
repay = "repay",
swapCollateral = "swapCollateral",
repayCollateral = "repayCollateral",
withdrawBCH = "withdrawBCH",
borrowBCH = "borrowBCH"
}
export declare enum GovernanceVote {
Abstain = 0,
Yes = 1,
No = 2
}
export declare enum Stake {
bandz = "bandz",
bpt = "bpt"
}
export declare type GasRecommendationType = {
[action: string]: {
limit: string;
recommended: string;
};
};
export declare type GeneratedTx = {
tx: transactionType;
gas: {
price: string;
limit: string;
};
};
export declare type transactionType = {
value?: string;
from?: string;
to?: string;
nonce?: number;
gasLimit?: BigNumber;
gasPrice?: BigNumber;
data?: string;
chainId?: number;
};
export declare type AddressModel = {
ADDRESS_PROVIDER_ADDRESS: tSmartBCHAddress;
LENDINGPOOL_ADDRESS: tSmartBCHAddress;
LENDINGPOOL_CORE_ADDRESS: tSmartBCHAddress;
SYNTHETIX_PROXY_ADDRESS: tSmartBCHAddress;
GOVERNANCE_PROTO_CONTRACT: tSmartBCHAddress;
LEND_TO_AAVE_MIGRATOR: tSmartBCHAddress;
WBCH_GATEWAY: tSmartBCHAddress;
FAUCET: tSmartBCHAddress;
SWAP_COLLATERAL_ADAPTER: tSmartBCHAddress;
REPAY_WITH_COLLATERAL_ADAPTER: tSmartBCHAddress;
BANDZ_GOVERNANCE_V2: tSmartBCHAddress;
BANDZ_GOVERNANCE_V2_EXECUTOR_SHORT: tSmartBCHAddress;
BANDZ_GOVERNANCE_V2_EXECUTOR_LONG: tSmartBCHAddress;
BANDZ_GOVERNANCE_V2_HELPER: tSmartBCHAddress;
FLASHLIQUIDATION: tSmartBCHAddress;
INCENTIVES_CONTROLLER: tSmartBCHAddress;
INCENTIVES_CONTROLLER_REWARD_TOKEN: tSmartBCHAddress;
};
export declare type tCommonContractAddressBetweenMarkets = Pick<AddressModel, 'SYNTHETIX_PROXY_ADDRESS' | 'GOVERNANCE_PROTO_CONTRACT' | 'LEND_TO_AAVE_MIGRATOR' | 'WBCH_GATEWAY' | 'FAUCET' | 'SWAP_COLLATERAL_ADAPTER' | 'REPAY_WITH_COLLATERAL_ADAPTER' | 'FLASHLIQUIDATION' | 'INCENTIVES_CONTROLLER' | 'INCENTIVES_CONTROLLER_REWARD_TOKEN'>;
export declare type tDistinctContractAddressBetweenMarkets = Pick<AddressModel, 'ADDRESS_PROVIDER_ADDRESS' | 'LENDINGPOOL_ADDRESS' | 'LENDINGPOOL_CORE_ADDRESS'>;
export declare type tDistinctContractAddressBetweenMarketsV2 = Pick<AddressModel, 'LENDINGPOOL_ADDRESS'>;
export declare type tDistinctGovernanceV2Addresses = Pick<AddressModel, 'BANDZ_GOVERNANCE_V2' | 'BANDZ_GOVERNANCE_V2_EXECUTOR_SHORT' | 'BANDZ_GOVERNANCE_V2_EXECUTOR_LONG' | 'BANDZ_GOVERNANCE_V2_HELPER'>;
export declare type tdistinctStakingAddressesBetweenTokens = {
TOKEN_STAKING_ADDRESS: tSmartBCHAddress;
STAKING_REWARD_TOKEN_ADDRESS: tSmartBCHAddress;
STAKING_HELPER_ADDRESS: tSmartBCHAddress;
canUsePermit: boolean;
};
export declare type ContractAddresses = {
[contractName: string]: tSmartBCHAddress;
};
export declare type Configuration = {
network: Network;
provider: providers.Provider;
};
export declare type SmartBCHTransactionTypeExtended = {
txType: eSmartBCHTxType;
tx: () => Promise<transactionType>;
gas: GasResponse;
};
export declare type TransactionGenerationMethod = {
rawTxMethod: () => Promise<PopulatedTransaction>;
from: tSmartBCHAddress;
value?: string;
gasSurplus?: number;
action?: ProtocolAction;
};
export declare type TransactionGasGenerationMethod = {
txCallback: () => Promise<transactionType>;
action?: ProtocolAction;
};
export declare type GasType = {
gasLimit: string | undefined;
gasPrice: string;
};
export declare type GasResponse = (force?: boolean) => Promise<GasType | null>;
export declare type TokenMetadataType = {
name: string;
symbol: string;
decimals: number;
address: string;
};
export declare type DefaultProviderKeys = {
etherscan?: string;
infura?: string;
alchemy?: string;
};
export declare type GovernanceConfigType = {
[network: string]: tDistinctGovernanceV2Addresses;
};
export declare type StakingConfigType = {
[sToken: string]: {
[network: string]: tdistinctStakingAddressesBetweenTokens;
};
};
export declare type CommonConfigType = {
[network: string]: tCommonContractAddressBetweenMarkets;
};
export declare type LendingPoolConfigType = {
[pool: string]: {
[network: string]: tDistinctContractAddressBetweenMarketsV2;
};
};
export declare type EnabledNetworksType = {
staking: {
[sToken: string]: Network[];
};
lendingPool: {
[market: string]: Network[];
};
governance: Network[];
WBCHGateway: Network[];
faucet: Network[];
liquiditySwapAdapter: Network[];
repayWithCollateralAdapter: Network[];
bandzGovernanceV2: Network[];
ltaMigrator: Network[];
incentivesController: Network[];
};
export declare type PermitSignature = {
amount: tStringCurrencyUnits;
deadline: string;
v: number;
r: BytesLike;
s: BytesLike;
};
export declare type FlashLoanParams = {
assetToSwapToList: tSmartBCHAddress[];
minAmountsToReceive: string[];
swapAllBalance: boolean[];
permitAmount: string[];
deadline: string[];
v: number[];
r: BytesLike[];
s: BytesLike[];
};