Added tests for debt tokens upgradeability

This commit is contained in:
emilio 2020-08-18 12:16:48 +02:00
parent 3247fb8784
commit 7b51fde8e7
21 changed files with 2285 additions and 22 deletions

View File

@ -467,5 +467,17 @@
"address": "0x501A498e8FDA589038d6526C2153a9fdc9d8eDD2",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockStableDebtToken": {
"buidlerevm": {
"address": "0x6aaF7e94e099291a94ed8E245c90f4766CE9bB7C",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockVariableDebtToken": {
"buidlerevm": {
"address": "0x40A939911b662656C0EE71c19B954DB1911Dc8e3",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
}
}

View File

@ -258,7 +258,7 @@ export const deployStableDebtToken = async ([
symbol,
underlyingAsset,
poolAddress,
]: [string, string, string, tEthereumAddress, tEthereumAddress]) => {
]: [string, string, tEthereumAddress, tEthereumAddress]) => {
const token = await deployContract<StableDebtToken>(eContractid.StableDebtToken, [
poolAddress,
underlyingAsset,
@ -274,7 +274,7 @@ export const deployVariableDebtToken = async ([
symbol,
underlyingAsset,
poolAddress,
]: [string, string, string, tEthereumAddress, tEthereumAddress]) => {
]: [string, string, tEthereumAddress, tEthereumAddress]) => {
const token = await deployContract<VariableDebtToken>(eContractid.VariableDebtToken, [
poolAddress,
underlyingAsset,

View File

@ -38,6 +38,8 @@ export enum eContractid {
WalletBalanceProvider = 'WalletBalanceProvider',
AToken = 'AToken',
MockAToken = 'MockAToken',
MockStableDebtToken = 'MockStableDebtToken',
MockVariableDebtToken = 'MockVariableDebtToken',
AaveProtocolTestHelpers = 'AaveProtocolTestHelpers',
IERC20Detailed = 'IERC20Detailed',
StableDebtToken = 'StableDebtToken',

View File

@ -1,12 +1,17 @@
import {expect} from 'chai';
import {makeSuite, TestEnv} from './helpers/make-suite';
import {ProtocolErrors, eContractid} from '../helpers/types';
import {deployGenericAToken, getAToken, deployContract} from '../helpers/contracts-helpers';
import {deployGenericAToken, getAToken, deployContract, getContract} from '../helpers/contracts-helpers';
import {MockAToken} from '../types/MockAToken';
import { MockStableDebtToken } from '../types/MockStableDebtToken';
import { MockVariableDebtToken } from '../types/MockVariableDebtToken';
makeSuite('Upgradeability', (testEnv: TestEnv) => {
const {INVALID_POOL_MANAGER_CALLER_MSG} = ProtocolErrors;
let newATokenAddress: string;
let newStableTokenAddress: string;
let newVariableTokenAddress: string;
before('deploying instances', async () => {
const {dai, pool} = testEnv;
@ -17,7 +22,24 @@ makeSuite('Upgradeability', (testEnv: TestEnv) => {
'aDAI',
]);
const stableDebtTokenInstance = await deployContract<MockStableDebtToken>(eContractid.MockStableDebtToken, [
pool.address,
dai.address,
'Aave stable debt bearing DAI updated',
'stableDebtDAI',
]);
const variableDebtTokenInstance = await deployContract<MockVariableDebtToken>(eContractid.MockVariableDebtToken, [
pool.address,
dai.address,
'Aave variable debt bearing DAI updated',
'variableDebtDAI',
]);
newATokenAddress = aTokenInstance.address;
newVariableTokenAddress = variableDebtTokenInstance.address;
newStableTokenAddress = stableDebtTokenInstance.address;
});
it('Tries to update the DAI Atoken implementation with a different address than the lendingPoolManager', async () => {
@ -39,4 +61,53 @@ makeSuite('Upgradeability', (testEnv: TestEnv) => {
expect(tokenName).to.be.eq('Aave Interest bearing DAI updated', 'Invalid token name');
});
it('Tries to update the DAI Stable debt token implementation with a different address than the lendingPoolManager', async () => {
const {dai, configurator, users} = testEnv;
await expect(
configurator.connect(users[1].signer).updateStableDebtToken(dai.address, newStableTokenAddress)
).to.be.revertedWith(INVALID_POOL_MANAGER_CALLER_MSG);
});
it('Upgrades the DAI stable debt token implementation ', async () => {
const {dai, configurator, pool} = testEnv;
const name = await (await getAToken(newATokenAddress)).name();
await configurator.updateStableDebtToken(dai.address, newStableTokenAddress);
const {stableDebtTokenAddress} = await pool.getReserveTokensAddresses(dai.address);
const debtToken = await getContract<MockStableDebtToken>(eContractid.MockStableDebtToken, stableDebtTokenAddress);
const tokenName = await debtToken.name();
expect(tokenName).to.be.eq('Aave stable debt bearing DAI updated', 'Invalid token name');
});
it('Tries to update the DAI variable debt token implementation with a different address than the lendingPoolManager', async () => {
const {dai, configurator, users} = testEnv;
await expect(
configurator.connect(users[1].signer).updateVariableDebtToken(dai.address, newVariableTokenAddress)
).to.be.revertedWith(INVALID_POOL_MANAGER_CALLER_MSG);
});
it('Upgrades the DAI variable debt token implementation ', async () => {
const {dai, configurator, pool} = testEnv;
const name = await (await getAToken(newATokenAddress)).name();
await configurator.updateVariableDebtToken(dai.address, newVariableTokenAddress);
const {variableDebtTokenAddress} = await pool.getReserveTokensAddresses(dai.address);
const debtToken = await getContract<MockStableDebtToken>(eContractid.MockStableDebtToken, variableDebtTokenAddress);
const tokenName = await debtToken.name();
expect(tokenName).to.be.eq('Aave variable debt bearing DAI updated', 'Invalid token name');
});
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -27,6 +27,16 @@ const _abi = [
internalType: "address",
name: "_underlyingAssetAddress",
type: "address"
},
{
internalType: "string",
name: "_name",
type: "string"
},
{
internalType: "string",
name: "_symbol",
type: "string"
}
],
stateMutability: "nonpayable",

File diff suppressed because one or more lines are too long

View File

@ -101,9 +101,25 @@ interface LendingPoolConfiguratorInterface extends Interface {
updateAToken: TypedFunctionDescription<{
encode([_reserve, _implementation]: [string, string]): string;
}>;
updateStableDebtToken: TypedFunctionDescription<{
encode([_reserve, _implementation]: [string, string]): string;
}>;
updateVariableDebtToken: TypedFunctionDescription<{
encode([_reserve, _implementation]: [string, string]): string;
}>;
};
events: {
ATokenUpgraded: TypedEventDescription<{
encodeTopics([_reserve, _proxy, _implementation]: [
null,
null,
null
]): string[];
}>;
BorrowingDisabledOnReserve: TypedEventDescription<{
encodeTopics([_reserve]: [string | null]): string[];
}>;
@ -171,6 +187,14 @@ interface LendingPoolConfiguratorInterface extends Interface {
encodeTopics([_reserve]: [string | null]): string[];
}>;
StableDebtTokenUpgraded: TypedEventDescription<{
encodeTopics([_reserve, _proxy, _implementation]: [
null,
null,
null
]): string[];
}>;
StableRateDisabledOnReserve: TypedEventDescription<{
encodeTopics([_reserve]: [string | null]): string[];
}>;
@ -178,6 +202,14 @@ interface LendingPoolConfiguratorInterface extends Interface {
StableRateEnabledOnReserve: TypedEventDescription<{
encodeTopics([_reserve]: [string | null]): string[];
}>;
VariableDebtTokenUpgraded: TypedEventDescription<{
encodeTopics([_reserve, _proxy, _implementation]: [
null,
null,
null
]): string[];
}>;
};
}
@ -313,6 +345,18 @@ export class LendingPoolConfigurator extends Contract {
_implementation: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
updateStableDebtToken(
_reserve: string,
_implementation: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
updateVariableDebtToken(
_reserve: string,
_implementation: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
};
CONFIGURATOR_REVISION(): Promise<BigNumber>;
@ -426,7 +470,25 @@ export class LendingPoolConfigurator extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
updateStableDebtToken(
_reserve: string,
_implementation: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
updateVariableDebtToken(
_reserve: string,
_implementation: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
filters: {
ATokenUpgraded(
_reserve: null,
_proxy: null,
_implementation: null
): EventFilter;
BorrowingDisabledOnReserve(_reserve: string | null): EventFilter;
BorrowingEnabledOnReserve(
@ -475,9 +537,21 @@ export class LendingPoolConfigurator extends Contract {
ReserveUnfreezed(_reserve: string | null): EventFilter;
StableDebtTokenUpgraded(
_reserve: null,
_proxy: null,
_implementation: null
): EventFilter;
StableRateDisabledOnReserve(_reserve: string | null): EventFilter;
StableRateEnabledOnReserve(_reserve: string | null): EventFilter;
VariableDebtTokenUpgraded(
_reserve: null,
_proxy: null,
_implementation: null
): EventFilter;
};
estimate: {
@ -549,5 +623,15 @@ export class LendingPoolConfigurator extends Contract {
unfreezeReserve(_reserve: string): Promise<BigNumber>;
updateAToken(_reserve: string, _implementation: string): Promise<BigNumber>;
updateStableDebtToken(
_reserve: string,
_implementation: string
): Promise<BigNumber>;
updateVariableDebtToken(
_reserve: string,
_implementation: string
): Promise<BigNumber>;
};
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

390
types/MockStableDebtToken.d.ts vendored Normal file
View File

@ -0,0 +1,390 @@
/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Contract, ContractTransaction, EventFilter, Signer } from "ethers";
import { Listener, Provider } from "ethers/providers";
import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils";
import {
TransactionOverrides,
TypedEventDescription,
TypedFunctionDescription
} from ".";
interface MockStableDebtTokenInterface extends Interface {
functions: {
DEBT_TOKEN_REVISION: TypedFunctionDescription<{ encode([]: []): string }>;
allowance: TypedFunctionDescription<{
encode([owner, spender]: [string, string]): string;
}>;
approve: TypedFunctionDescription<{
encode([spender, _amount]: [string, BigNumberish]): string;
}>;
balanceOf: TypedFunctionDescription<{
encode([account]: [string]): string;
}>;
burn: TypedFunctionDescription<{
encode([_user, _amount]: [string, BigNumberish]): string;
}>;
decimals: TypedFunctionDescription<{ encode([]: []): string }>;
decreaseAllowance: TypedFunctionDescription<{
encode([spender, subtractedValue]: [string, BigNumberish]): string;
}>;
getAverageStableRate: TypedFunctionDescription<{ encode([]: []): string }>;
getUserLastUpdated: TypedFunctionDescription<{
encode([_user]: [string]): string;
}>;
getUserStableRate: TypedFunctionDescription<{
encode([_user]: [string]): string;
}>;
increaseAllowance: TypedFunctionDescription<{
encode([spender, addedValue]: [string, BigNumberish]): string;
}>;
initialize: TypedFunctionDescription<{
encode([_decimals, _name, _symbol]: [
BigNumberish,
string,
string
]): string;
}>;
mint: TypedFunctionDescription<{
encode([_user, _amount, _rate]: [
string,
BigNumberish,
BigNumberish
]): string;
}>;
name: TypedFunctionDescription<{ encode([]: []): string }>;
principalBalanceOf: TypedFunctionDescription<{
encode([_user]: [string]): string;
}>;
symbol: TypedFunctionDescription<{ encode([]: []): string }>;
totalSupply: TypedFunctionDescription<{ encode([]: []): string }>;
transfer: TypedFunctionDescription<{
encode([recipient, _amount]: [string, BigNumberish]): string;
}>;
transferFrom: TypedFunctionDescription<{
encode([sender, recipient, _amount]: [
string,
string,
BigNumberish
]): string;
}>;
underlyingAssetAddress: TypedFunctionDescription<{
encode([]: []): string;
}>;
};
events: {
Approval: TypedEventDescription<{
encodeTopics([owner, spender, value]: [
string | null,
string | null,
null
]): string[];
}>;
Transfer: TypedEventDescription<{
encodeTopics([from, to, value]: [
string | null,
string | null,
null
]): string[];
}>;
burnDebt: TypedEventDescription<{
encodeTopics([
_user,
_amount,
_previousBalance,
_currentBalance,
_balanceIncrease
]: [null, null, null, null, null]): string[];
}>;
mintDebt: TypedEventDescription<{
encodeTopics([
_user,
_amount,
_previousBalance,
_currentBalance,
_balanceIncrease,
_newRate
]: [null, null, null, null, null, null]): string[];
}>;
};
}
export class MockStableDebtToken extends Contract {
connect(signerOrProvider: Signer | Provider | string): MockStableDebtToken;
attach(addressOrName: string): MockStableDebtToken;
deployed(): Promise<MockStableDebtToken>;
on(event: EventFilter | string, listener: Listener): MockStableDebtToken;
once(event: EventFilter | string, listener: Listener): MockStableDebtToken;
addListener(
eventName: EventFilter | string,
listener: Listener
): MockStableDebtToken;
removeAllListeners(eventName: EventFilter | string): MockStableDebtToken;
removeListener(eventName: any, listener: Listener): MockStableDebtToken;
interface: MockStableDebtTokenInterface;
functions: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
spender: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
balanceOf(account: string): Promise<BigNumber>;
burn(
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
decimals(): Promise<number>;
decreaseAllowance(
spender: string,
subtractedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
getAverageStableRate(): Promise<BigNumber>;
getUserLastUpdated(_user: string): Promise<number>;
getUserStableRate(_user: string): Promise<BigNumber>;
increaseAllowance(
spender: string,
addedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
mint(
_user: string,
_amount: BigNumberish,
_rate: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
name(): Promise<string>;
principalBalanceOf(_user: string): Promise<BigNumber>;
symbol(): Promise<string>;
totalSupply(): Promise<BigNumber>;
transfer(
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
transferFrom(
sender: string,
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
underlyingAssetAddress(): Promise<string>;
};
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
spender: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
balanceOf(account: string): Promise<BigNumber>;
burn(
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
decimals(): Promise<number>;
decreaseAllowance(
spender: string,
subtractedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
getAverageStableRate(): Promise<BigNumber>;
getUserLastUpdated(_user: string): Promise<number>;
getUserStableRate(_user: string): Promise<BigNumber>;
increaseAllowance(
spender: string,
addedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
mint(
_user: string,
_amount: BigNumberish,
_rate: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
name(): Promise<string>;
principalBalanceOf(_user: string): Promise<BigNumber>;
symbol(): Promise<string>;
totalSupply(): Promise<BigNumber>;
transfer(
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
transferFrom(
sender: string,
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
underlyingAssetAddress(): Promise<string>;
filters: {
Approval(
owner: string | null,
spender: string | null,
value: null
): EventFilter;
Transfer(from: string | null, to: string | null, value: null): EventFilter;
burnDebt(
_user: null,
_amount: null,
_previousBalance: null,
_currentBalance: null,
_balanceIncrease: null
): EventFilter;
mintDebt(
_user: null,
_amount: null,
_previousBalance: null,
_currentBalance: null,
_balanceIncrease: null,
_newRate: null
): EventFilter;
};
estimate: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(spender: string, _amount: BigNumberish): Promise<BigNumber>;
balanceOf(account: string): Promise<BigNumber>;
burn(_user: string, _amount: BigNumberish): Promise<BigNumber>;
decimals(): Promise<BigNumber>;
decreaseAllowance(
spender: string,
subtractedValue: BigNumberish
): Promise<BigNumber>;
getAverageStableRate(): Promise<BigNumber>;
getUserLastUpdated(_user: string): Promise<BigNumber>;
getUserStableRate(_user: string): Promise<BigNumber>;
increaseAllowance(
spender: string,
addedValue: BigNumberish
): Promise<BigNumber>;
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string
): Promise<BigNumber>;
mint(
_user: string,
_amount: BigNumberish,
_rate: BigNumberish
): Promise<BigNumber>;
name(): Promise<BigNumber>;
principalBalanceOf(_user: string): Promise<BigNumber>;
symbol(): Promise<BigNumber>;
totalSupply(): Promise<BigNumber>;
transfer(recipient: string, _amount: BigNumberish): Promise<BigNumber>;
transferFrom(
sender: string,
recipient: string,
_amount: BigNumberish
): Promise<BigNumber>;
underlyingAssetAddress(): Promise<BigNumber>;
};
}

File diff suppressed because one or more lines are too long

362
types/MockVariableDebtToken.d.ts vendored Normal file
View File

@ -0,0 +1,362 @@
/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Contract, ContractTransaction, EventFilter, Signer } from "ethers";
import { Listener, Provider } from "ethers/providers";
import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils";
import {
TransactionOverrides,
TypedEventDescription,
TypedFunctionDescription
} from ".";
interface MockVariableDebtTokenInterface extends Interface {
functions: {
DEBT_TOKEN_REVISION: TypedFunctionDescription<{ encode([]: []): string }>;
allowance: TypedFunctionDescription<{
encode([owner, spender]: [string, string]): string;
}>;
approve: TypedFunctionDescription<{
encode([spender, _amount]: [string, BigNumberish]): string;
}>;
balanceOf: TypedFunctionDescription<{ encode([_user]: [string]): string }>;
burn: TypedFunctionDescription<{
encode([_user, _amount]: [string, BigNumberish]): string;
}>;
decimals: TypedFunctionDescription<{ encode([]: []): string }>;
decreaseAllowance: TypedFunctionDescription<{
encode([spender, subtractedValue]: [string, BigNumberish]): string;
}>;
getUserIndex: TypedFunctionDescription<{
encode([_user]: [string]): string;
}>;
increaseAllowance: TypedFunctionDescription<{
encode([spender, addedValue]: [string, BigNumberish]): string;
}>;
initialize: TypedFunctionDescription<{
encode([_decimals, _name, _symbol]: [
BigNumberish,
string,
string
]): string;
}>;
mint: TypedFunctionDescription<{
encode([_user, _amount]: [string, BigNumberish]): string;
}>;
name: TypedFunctionDescription<{ encode([]: []): string }>;
principalBalanceOf: TypedFunctionDescription<{
encode([_user]: [string]): string;
}>;
symbol: TypedFunctionDescription<{ encode([]: []): string }>;
totalSupply: TypedFunctionDescription<{ encode([]: []): string }>;
transfer: TypedFunctionDescription<{
encode([recipient, _amount]: [string, BigNumberish]): string;
}>;
transferFrom: TypedFunctionDescription<{
encode([sender, recipient, _amount]: [
string,
string,
BigNumberish
]): string;
}>;
underlyingAssetAddress: TypedFunctionDescription<{
encode([]: []): string;
}>;
};
events: {
Approval: TypedEventDescription<{
encodeTopics([owner, spender, value]: [
string | null,
string | null,
null
]): string[];
}>;
Transfer: TypedEventDescription<{
encodeTopics([from, to, value]: [
string | null,
string | null,
null
]): string[];
}>;
burnDebt: TypedEventDescription<{
encodeTopics([
_user,
_amount,
_previousBalance,
_currentBalance,
_balanceIncrease,
_index
]: [null, null, null, null, null, null]): string[];
}>;
mintDebt: TypedEventDescription<{
encodeTopics([
_user,
_amount,
_previousBalance,
_currentBalance,
_balanceIncrease,
_index
]: [null, null, null, null, null, null]): string[];
}>;
};
}
export class MockVariableDebtToken extends Contract {
connect(signerOrProvider: Signer | Provider | string): MockVariableDebtToken;
attach(addressOrName: string): MockVariableDebtToken;
deployed(): Promise<MockVariableDebtToken>;
on(event: EventFilter | string, listener: Listener): MockVariableDebtToken;
once(event: EventFilter | string, listener: Listener): MockVariableDebtToken;
addListener(
eventName: EventFilter | string,
listener: Listener
): MockVariableDebtToken;
removeAllListeners(eventName: EventFilter | string): MockVariableDebtToken;
removeListener(eventName: any, listener: Listener): MockVariableDebtToken;
interface: MockVariableDebtTokenInterface;
functions: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
spender: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
balanceOf(_user: string): Promise<BigNumber>;
burn(
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
decimals(): Promise<number>;
decreaseAllowance(
spender: string,
subtractedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
getUserIndex(_user: string): Promise<BigNumber>;
increaseAllowance(
spender: string,
addedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
mint(
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
name(): Promise<string>;
principalBalanceOf(_user: string): Promise<BigNumber>;
symbol(): Promise<string>;
totalSupply(): Promise<BigNumber>;
transfer(
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
transferFrom(
sender: string,
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
underlyingAssetAddress(): Promise<string>;
};
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
spender: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
balanceOf(_user: string): Promise<BigNumber>;
burn(
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
decimals(): Promise<number>;
decreaseAllowance(
spender: string,
subtractedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
getUserIndex(_user: string): Promise<BigNumber>;
increaseAllowance(
spender: string,
addedValue: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
mint(
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
name(): Promise<string>;
principalBalanceOf(_user: string): Promise<BigNumber>;
symbol(): Promise<string>;
totalSupply(): Promise<BigNumber>;
transfer(
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
transferFrom(
sender: string,
recipient: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
underlyingAssetAddress(): Promise<string>;
filters: {
Approval(
owner: string | null,
spender: string | null,
value: null
): EventFilter;
Transfer(from: string | null, to: string | null, value: null): EventFilter;
burnDebt(
_user: null,
_amount: null,
_previousBalance: null,
_currentBalance: null,
_balanceIncrease: null,
_index: null
): EventFilter;
mintDebt(
_user: null,
_amount: null,
_previousBalance: null,
_currentBalance: null,
_balanceIncrease: null,
_index: null
): EventFilter;
};
estimate: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(spender: string, _amount: BigNumberish): Promise<BigNumber>;
balanceOf(_user: string): Promise<BigNumber>;
burn(_user: string, _amount: BigNumberish): Promise<BigNumber>;
decimals(): Promise<BigNumber>;
decreaseAllowance(
spender: string,
subtractedValue: BigNumberish
): Promise<BigNumber>;
getUserIndex(_user: string): Promise<BigNumber>;
increaseAllowance(
spender: string,
addedValue: BigNumberish
): Promise<BigNumber>;
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string
): Promise<BigNumber>;
mint(_user: string, _amount: BigNumberish): Promise<BigNumber>;
name(): Promise<BigNumber>;
principalBalanceOf(_user: string): Promise<BigNumber>;
symbol(): Promise<BigNumber>;
totalSupply(): Promise<BigNumber>;
transfer(recipient: string, _amount: BigNumberish): Promise<BigNumber>;
transferFrom(
sender: string,
recipient: string,
_amount: BigNumberish
): Promise<BigNumber>;
underlyingAssetAddress(): Promise<BigNumber>;
};
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -134,4 +134,4 @@ const _abi = [
];
const _bytecode =
"0x608060405234801561001057600080fd5b506040516108bc3803806108bc8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610857806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061064d945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b0381358116916020013516610777565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610641576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b60200260200101818152505050610639565b61061f8885848151811061061257fe5b6020026020010151610777565b83838151811061062b57fe5b602002602001018181525050505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff8111801561066b57600080fd5b50604051908082528060200260200182016040528015610695578160200160208202803683370190505b50905060005b845181101561076d5760005b84518110156107645760008551830290506106dd8683815181106106c757fe5b60200260200101516001600160a01b0316610320565b61071e576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b61074187848151811061072d57fe5b602002602001015187848151811061061257fe5b848383018151811061074f57fe5b602002602001018181525050506001016106a7565b5060010161069b565b5090505b92915050565b600061078b826001600160a01b0316610320565b1561081957816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156107e657600080fd5b505afa1580156107fa573d6000803e3d6000fd5b505050506040513d602081101561081057600080fd5b50519050610771565b50600061077156fea26469706673582212200c49fc45bf8d6aedaf3cd09ab09eb29f7e718ec1bbd6342feaa0ae4422f04e7464736f6c63430006080033";
"0x608060405234801561001057600080fd5b506040516108bc3803806108bc8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610857806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061064d945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b0381358116916020013516610777565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610641576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b60200260200101818152505050610639565b61061f8885848151811061061257fe5b6020026020010151610777565b83838151811061062b57fe5b602002602001018181525050505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff8111801561066b57600080fd5b50604051908082528060200260200182016040528015610695578160200160208202803683370190505b50905060005b845181101561076d5760005b84518110156107645760008551830290506106dd8683815181106106c757fe5b60200260200101516001600160a01b0316610320565b61071e576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b61074187848151811061072d57fe5b602002602001015187848151811061061257fe5b848383018151811061074f57fe5b602002602001018181525050506001016106a7565b5060010161069b565b5090505b92915050565b600061078b826001600160a01b0316610320565b1561081957816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156107e657600080fd5b505afa1580156107fa573d6000803e3d6000fd5b505050506040513d602081101561081057600080fd5b50519050610771565b50600061077156fea264697066735822122034fc927b8c23c0caa3ecab84fba4ad99d8060c0991fa524bf75ee93544a094eb64736f6c63430006080033";