diff --git a/package.json b/package.json index 4981290282..0552bd4f99 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "typescript": "5.3.3" }, "resolutions": { + "@celo/abis": "file:/Users/martinvol/celo/celo-monorepo/packages/protocol/abis/celo-abis-13.0.0-post-audit.0.tgz", "web3": "1.10.4", "web3-utils": "1.10.4", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", diff --git a/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap b/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap index 78d7abbe97..aac110da28 100644 --- a/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap +++ b/packages/cli/src/commands/network/__snapshots__/contracts.test.ts.snap @@ -124,12 +124,6 @@ exports[`network:contracts when version can be obtained runs 2`] = ` "implementation": "0x67bd72d0101905B1928E56f3204058c8C2D53251", "version": "NONE" }, - { - "contract": "Reserve", - "proxy": "0x153193d9b852Dd791565a2929110282976040e54", - "implementation": "0x6DDBd2A88C55e28ac8283c43D1F7100C295283fb", - "version": "1.1.2.2" - }, { "contract": "ScoreManager", "proxy": "0x26B262FbaB2E243a4CEFD2Dbde9e1C203BaCd732", @@ -302,12 +296,6 @@ exports[`network:contracts when version cant be obtained still prints rest of co "implementation": "0x67bd72d0101905B1928E56f3204058c8C2D53251", "version": "NONE" }, - { - "contract": "Reserve", - "proxy": "0x153193d9b852Dd791565a2929110282976040e54", - "implementation": "0x6DDBd2A88C55e28ac8283c43D1F7100C295283fb", - "version": "1.2.3.4" - }, { "contract": "ScoreManager", "proxy": "0x26B262FbaB2E243a4CEFD2Dbde9e1C203BaCd732", diff --git a/packages/cli/src/commands/network/parameters.test.ts b/packages/cli/src/commands/network/parameters.test.ts index 70f319e1f8..d673cf9bcd 100644 --- a/packages/cli/src/commands/network/parameters.test.ts +++ b/packages/cli/src/commands/network/parameters.test.ts @@ -44,13 +44,6 @@ testWithAnvilL2('network:parameters', (web3) => { LockedCelo: totalLockedGold: 120000000000000000000000 (~1.200e+23) unlockingPeriod: 6 hours - Reserve: - frozenReserveGoldDays: 0 - frozenReserveGoldStartBalance: 0 - frozenReserveGoldStartDay: 20278 (~2.028e+4) - otherReserveAddresses: - - tobinTaxStalenessThreshold: 3153600000 (~3.154e+9) SortedOracles: reportExpiry: 5 minutes Validators: diff --git a/packages/cli/src/packages-to-be/stable-tokens.ts b/packages/cli/src/packages-to-be/stable-tokens.ts index 45da77c279..8c4349969b 100644 --- a/packages/cli/src/packages-to-be/stable-tokens.ts +++ b/packages/cli/src/packages-to-be/stable-tokens.ts @@ -1,4 +1,4 @@ -import { stableTokenABI, stableTokenBrlABI, stableTokenEurABI } from '@celo/abis' +import { ierc20CeloTokensABI } from '@celo/abis' import { resolveAddress } from '@celo/actions' import { Client, getContract, GetContractReturnType, PublicClient } from 'viem' @@ -7,12 +7,12 @@ export async function getStableTokenUSDContract ): Promise> { return getContract({ address: await resolveAddress(client, 'StableToken'), - abi: stableTokenABI, + abi: ierc20CeloTokensABI, client, }) } export type StableTokenUSD = GetContractReturnType< - typeof stableTokenABI, + typeof ierc20CeloTokensABI, T > @@ -21,12 +21,12 @@ export async function getStableTokenEurContract ): Promise> { return getContract({ address: await resolveAddress(client, 'StableTokenEUR'), - abi: stableTokenEurABI, + abi: ierc20CeloTokensABI, client, }) } export type StableTokenEUR = GetContractReturnType< - typeof stableTokenEurABI, + typeof ierc20CeloTokensABI, T > @@ -35,12 +35,12 @@ export async function getStableTokenBrlContract ): Promise> { return getContract({ address: await resolveAddress(client, 'StableTokenBRL'), - abi: stableTokenBrlABI, + abi: ierc20CeloTokensABI, client, }) } export type StableTokenBRL = GetContractReturnType< - typeof stableTokenBrlABI, + typeof ierc20CeloTokensABI, T > diff --git a/packages/cli/src/transfer-stable-base.ts b/packages/cli/src/transfer-stable-base.ts index b4ba10ccc4..807acd26fc 100644 --- a/packages/cli/src/transfer-stable-base.ts +++ b/packages/cli/src/transfer-stable-base.ts @@ -63,8 +63,6 @@ export abstract class TransferStableBase extends BaseCommand { )![0] as StableToken let stableTokenContract: StableTokenContract try { - // @ts-expect-error - this should be StableTokenContract by for some - // reason it returns `any` stableTokenContract = await this._stableCurrencyContract(wallet.extend(publicActions)) } catch { failWith(`The ${stableToken} token was not deployed yet`) diff --git a/packages/sdk/contractkit/src/base.ts b/packages/sdk/contractkit/src/base.ts index 069dbd909f..269f48157c 100644 --- a/packages/sdk/contractkit/src/base.ts +++ b/packages/sdk/contractkit/src/base.ts @@ -25,7 +25,6 @@ export enum CeloContract { MultiSig = 'MultiSig', OdisPayments = 'OdisPayments', Registry = 'Registry', - Reserve = 'Reserve', ScoreManager = 'ScoreManager', SortedOracles = 'SortedOracles', StableToken = 'StableToken', diff --git a/packages/sdk/contractkit/src/contract-cache.ts b/packages/sdk/contractkit/src/contract-cache.ts index 3bafbf2c06..1217ff037d 100644 --- a/packages/sdk/contractkit/src/contract-cache.ts +++ b/packages/sdk/contractkit/src/contract-cache.ts @@ -20,7 +20,6 @@ import { GovernanceWrapper } from './wrappers/Governance' import { LockedGoldWrapper } from './wrappers/LockedGold' import { MultiSigWrapper } from './wrappers/MultiSig' import { OdisPaymentsWrapper } from './wrappers/OdisPayments' -import { ReserveWrapper } from './wrappers/Reserve' import { ScoreManagerWrapper } from './wrappers/ScoreManager' import { SortedOraclesWrapper } from './wrappers/SortedOracles' import { StableTokenWrapper } from './wrappers/StableTokenWrapper' @@ -38,7 +37,6 @@ const WrapperFactories = { [CeloContract.CeloToken]: GoldTokenWrapper, [CeloContract.MultiSig]: MultiSigWrapper, [CeloContract.OdisPayments]: OdisPaymentsWrapper, - [CeloContract.Reserve]: ReserveWrapper, [CeloContract.ScoreManager]: ScoreManagerWrapper, [CeloContract.StableToken]: StableTokenWrapper, [CeloContract.StableTokenEUR]: StableTokenWrapper, @@ -87,7 +85,6 @@ interface WrapperCacheMap { [CeloContract.LockedGold]?: LockedGoldWrapper [CeloContract.MultiSig]?: MultiSigWrapper [CeloContract.OdisPayments]?: OdisPaymentsWrapper - [CeloContract.Reserve]?: ReserveWrapper [CeloContract.ScoreManager]?: ScoreManagerWrapper [CeloContract.SortedOracles]?: SortedOraclesWrapper [CeloContract.StableToken]?: StableTokenWrapper @@ -169,9 +166,6 @@ export class WrapperCache implements ContractCacheType { getOdisPayments() { return this.getContract(CeloContract.OdisPayments) } - getReserve() { - return this.getContract(CeloContract.Reserve) - } getScoreManager() { return this.getContract(CeloContract.ScoreManager) } diff --git a/packages/sdk/contractkit/src/kit.ts b/packages/sdk/contractkit/src/kit.ts index acd28e73ba..43c8f7b831 100644 --- a/packages/sdk/contractkit/src/kit.ts +++ b/packages/sdk/contractkit/src/kit.ts @@ -21,7 +21,6 @@ import { AttestationsConfig } from './wrappers/Attestations' import { ElectionConfig } from './wrappers/Election' import { GovernanceConfig } from './wrappers/Governance' import { LockedGoldConfig } from './wrappers/LockedGold' -import { ReserveConfig } from './wrappers/Reserve' import { SortedOraclesConfig } from './wrappers/SortedOracles' import { StableTokenConfig } from './wrappers/StableTokenWrapper' import { ValidatorsConfig } from './wrappers/Validators' @@ -65,7 +64,6 @@ export interface NetworkConfig { governance: GovernanceConfig lockedGold: LockedGoldConfig sortedOracles: SortedOraclesConfig - reserve: ReserveConfig validators: ValidatorsConfig } @@ -135,7 +133,6 @@ export class ContractKit { CeloContract.Governance, CeloContract.LockedCelo, CeloContract.SortedOracles, - CeloContract.Reserve, CeloContract.Validators, CeloContract.FeeCurrencyDirectory, CeloContract.EpochManager, diff --git a/packages/sdk/contractkit/src/mini-contract-cache.ts b/packages/sdk/contractkit/src/mini-contract-cache.ts index 92ed47b934..4ce7b464da 100644 --- a/packages/sdk/contractkit/src/mini-contract-cache.ts +++ b/packages/sdk/contractkit/src/mini-contract-cache.ts @@ -1,8 +1,6 @@ import { newAccounts } from '@celo/abis/web3/Accounts' import { newGoldToken } from '@celo/abis/web3/GoldToken' -import { newStableToken } from '@celo/abis/web3/mento/StableToken' -import { newStableTokenBRL } from '@celo/abis/web3/mento/StableTokenBRL' -import { newStableTokenEUR } from '@celo/abis/web3/mento/StableTokenEUR' +import { newIERC20CeloTokens } from '@celo/abis/web3/IERC20CeloTokens' import { StableToken } from '@celo/base' import { Connection } from '@celo/connect' import { AddressRegistry } from './address-registry' @@ -13,6 +11,10 @@ import { AccountsWrapper } from './wrappers/Accounts' import { GoldTokenWrapper } from './wrappers/GoldTokenWrapper' import { StableTokenWrapper } from './wrappers/StableTokenWrapper' +const newStableToken = newIERC20CeloTokens +const newStableTokenBRL = newIERC20CeloTokens +const newStableTokenEUR = newIERC20CeloTokens + const MINIMUM_CONTRACTS = { [CeloContract.Accounts]: { newInstance: newAccounts, diff --git a/packages/sdk/contractkit/src/proxy.ts b/packages/sdk/contractkit/src/proxy.ts index 3dac861bab..c36672cc7e 100644 --- a/packages/sdk/contractkit/src/proxy.ts +++ b/packages/sdk/contractkit/src/proxy.ts @@ -26,8 +26,7 @@ import { ABI as ScoreManagerABI } from '@celo/abis/web3/ScoreManager' import { ABI as SortedOraclesABI } from '@celo/abis/web3/SortedOracles' import { ABI as UniswapFeeHandlerSellerABI } from '@celo/abis/web3/UniswapFeeHandlerSeller' import { ABI as ValidatorsABI } from '@celo/abis/web3/Validators' -import { ABI as ReserveABI } from '@celo/abis/web3/mento/Reserve' -import { ABI as StableTokenABI } from '@celo/abis/web3/mento/StableToken' +import { ABI as StableTokenABI } from '@celo/abis/web3/IERC20CeloTokens' import { ABIDefinition, AbiItem } from '@celo/connect' import Web3 from 'web3' @@ -137,7 +136,6 @@ const initializeAbiMap = { OdisPaymentsProxy: findInitializeAbi(OdisPaymentsABI), ProxyProxy: findInitializeAbi(ProxyABI), RegistryProxy: findInitializeAbi(RegistryABI), - ReserveProxy: findInitializeAbi(ReserveABI), ScoreManagerProxy: findInitializeAbi(ScoreManagerABI), SortedOraclesProxy: findInitializeAbi(SortedOraclesABI), StableTokenProxy: findInitializeAbi(StableTokenABI), diff --git a/packages/sdk/contractkit/src/web3-contract-cache.ts b/packages/sdk/contractkit/src/web3-contract-cache.ts index f7b350890b..49ae41bf84 100644 --- a/packages/sdk/contractkit/src/web3-contract-cache.ts +++ b/packages/sdk/contractkit/src/web3-contract-cache.ts @@ -15,8 +15,7 @@ import { newGovernance } from '@celo/abis/web3/Governance' import { newGovernanceSlasher } from '@celo/abis/web3/GovernanceSlasher' import { newIERC20 } from '@celo/abis/web3/IERC20' import { newLockedGold } from '@celo/abis/web3/LockedGold' -import { newReserve } from '@celo/abis/web3/mento/Reserve' -import { newStableToken } from '@celo/abis/web3/mento/StableToken' +import { newIERC20CeloTokens as newStableToken } from '@celo/abis/web3/IERC20CeloTokens' import { newMentoFeeHandlerSeller } from '@celo/abis/web3/MentoFeeHandlerSeller' import { newMultiSig } from '@celo/abis/web3/MultiSig' import { newOdisPayments } from '@celo/abis/web3/OdisPayments' @@ -58,7 +57,6 @@ export const ContractFactories = { [CeloContract.MultiSig]: newMultiSig, [CeloContract.OdisPayments]: newOdisPayments, [CeloContract.Registry]: newRegistry, - [CeloContract.Reserve]: newReserve, [CeloContract.ScoreManager]: newScoreManager, [CeloContract.SortedOracles]: newSortedOracles, [CeloContract.StableToken]: newStableToken, @@ -150,9 +148,6 @@ export class Web3ContractCache { getRegistry() { return this.getContract(CeloContract.Registry) } - getReserve() { - return this.getContract(CeloContract.Reserve) - } getScoreManager() { return this.getContract(CeloContract.ScoreManager) } diff --git a/packages/sdk/contractkit/src/wrappers/Reserve.test.ts b/packages/sdk/contractkit/src/wrappers/Reserve.test.ts deleted file mode 100644 index 0dfe601a32..0000000000 --- a/packages/sdk/contractkit/src/wrappers/Reserve.test.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { newReserve } from '@celo/abis/web3/mento/Reserve' -import { newMultiSig } from '@celo/abis/web3/MultiSig' -import { StrongAddress } from '@celo/base' -import { - asCoreContractsOwner, - DEFAULT_OWNER_ADDRESS, - setBalance, - testWithAnvilL2, - withImpersonatedAccount, -} from '@celo/dev-utils/anvil-test' -import BigNumber from 'bignumber.js' -import { CeloContract } from '../base' -import { newKitFromWeb3 } from '../kit' -import { MultiSigWrapper } from './MultiSig' -import { ReserveWrapper } from './Reserve' - -testWithAnvilL2('Reserve Wrapper', (web3) => { - const kit = newKitFromWeb3(web3) - let accounts: StrongAddress[] = [] - let reserve: ReserveWrapper - let reserveSpenderMultiSig: MultiSigWrapper - let otherReserveAddress: StrongAddress - let otherSpender: StrongAddress - - beforeEach(async () => { - accounts = (await web3.eth.getAccounts()) as StrongAddress[] - kit.defaultAccount = accounts[0] - otherReserveAddress = accounts[9] - otherSpender = accounts[7] - reserve = await kit.contracts.getReserve() - const multiSigAddress = await kit.registry.addressFor('ReserveSpenderMultiSig' as CeloContract) - reserveSpenderMultiSig = await kit.contracts.getMultiSig(multiSigAddress) - const reserveContract = newReserve(web3, reserve.address) - const reserveSpenderMultiSigContract = newMultiSig(web3, reserveSpenderMultiSig.address) - - await withImpersonatedAccount( - web3, - multiSigAddress, - async () => { - await reserveSpenderMultiSig - .replaceOwner(DEFAULT_OWNER_ADDRESS, accounts[0]) - .sendAndWaitForReceipt({ from: multiSigAddress }) - await reserveSpenderMultiSigContract.methods - .addOwner(otherSpender) - .send({ from: multiSigAddress }) - await reserveSpenderMultiSigContract.methods - .changeRequirement(2) - .send({ from: multiSigAddress }) - }, - new BigNumber(web3.utils.toWei('1', 'ether')) - ) - - await asCoreContractsOwner(web3, async (ownerAdress: StrongAddress) => { - await reserveContract.methods.addSpender(otherSpender).send({ from: ownerAdress }) - await reserveContract.methods - .addOtherReserveAddress(otherReserveAddress) - .send({ from: ownerAdress }) - }) - - await setBalance(web3, reserve.address, new BigNumber(web3.utils.toWei('1', 'ether'))) - }) - - test('can get asset target weights which sum to 100%', async () => { - const targets = await reserve.getAssetAllocationWeights() - expect(targets.reduce((total, current) => total.plus(current), new BigNumber(0))).toEqual( - new BigNumber(100 * 10_000_000_000_000_000_000_000) - ) - }) - - test('can get asset target symbols ', async () => { - const targets = await reserve.getAssetAllocationSymbols() - - const expectation = ['cGLD', 'BTC', 'ETH', 'DAI'] - - targets.forEach((sym, i) => { - expect(sym).toEqual(expect.stringMatching(expectation[i])) - }) - }) - - test('can get reserve unfrozen balance ', async () => { - const balance = await reserve.getUnfrozenBalance() - expect(balance).toBeBigNumber() - }) - - test('can get sum of reserve unfrozen balance + other reserve address balances', async () => { - const balanceWithOtherAddresses = await reserve.getUnfrozenReserveCeloBalance() - expect(balanceWithOtherAddresses).toBeBigNumber() - }) - - test('test is spender', async () => { - const tx = await reserve.isSpender(reserveSpenderMultiSig.address) - expect(tx).toBeTruthy() - }) - - test('two spenders required to confirm transfers gold', async () => { - const tx = await reserve.transferGold(otherReserveAddress, 10) - const multisigTx = await reserveSpenderMultiSig.submitOrConfirmTransaction( - reserve.address, - tx.txo - ) - const events = await (await multisigTx.sendAndWaitForReceipt()).events - expect(events && events.Submission && events.Confirmation && !events.Execution).toBeTruthy() - - const tx2 = await reserve.transferGold(otherReserveAddress, 10) - const multisigTx2 = await reserveSpenderMultiSig.submitOrConfirmTransaction( - reserve.address, - tx2.txo - ) - const events2 = await (await multisigTx2.sendAndWaitForReceipt({ from: otherSpender })).events - expect(events2 && !events2.Submission && events2.Confirmation && events2.Execution).toBeTruthy() - }) - - test('test does not transfer gold if not spender', async () => { - const tx = await reserve.transferGold(otherReserveAddress, 10) - const multisigTx = await reserveSpenderMultiSig.submitOrConfirmTransaction( - reserve.address, - tx.txo - ) - await expect(multisigTx.sendAndWaitForReceipt({ from: accounts[2] })).rejects.toThrowError() - }) -}) diff --git a/packages/sdk/contractkit/src/wrappers/Reserve.ts b/packages/sdk/contractkit/src/wrappers/Reserve.ts deleted file mode 100644 index 05b7f3a8e9..0000000000 --- a/packages/sdk/contractkit/src/wrappers/Reserve.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { Reserve } from '@celo/abis/web3/mento/Reserve' -import { Address, EventLog } from '@celo/connect' -import BigNumber from 'bignumber.js' -import { - BaseWrapper, - fixidityValueToBigNumber, - proxyCall, - proxySend, - valueToBigNumber, -} from './BaseWrapper' - -export interface ReserveConfig { - tobinTaxStalenessThreshold: BigNumber - frozenReserveGoldStartBalance: BigNumber - frozenReserveGoldStartDay: BigNumber - frozenReserveGoldDays: BigNumber - otherReserveAddresses: string[] -} - -/** - * Contract for handling reserve for stable currencies - */ -export class ReserveWrapper extends BaseWrapper { - /** - * Query Tobin tax staleness threshold parameter. - * @returns Current Tobin tax staleness threshold. - */ - tobinTaxStalenessThreshold = proxyCall( - this.contract.methods.tobinTaxStalenessThreshold, - undefined, - valueToBigNumber - ) - dailySpendingRatio = proxyCall( - this.contract.methods.getDailySpendingRatio, - undefined, - fixidityValueToBigNumber - ) - isSpender: (account: string) => Promise = proxyCall(this.contract.methods.isSpender) - transferGold = proxySend(this.connection, this.contract.methods.transferGold) - getOrComputeTobinTax = proxySend(this.connection, this.contract.methods.getOrComputeTobinTax) - frozenReserveGoldStartBalance = proxyCall( - this.contract.methods.frozenReserveGoldStartBalance, - undefined, - valueToBigNumber - ) - frozenReserveGoldStartDay = proxyCall( - this.contract.methods.frozenReserveGoldStartDay, - undefined, - valueToBigNumber - ) - frozenReserveGoldDays = proxyCall( - this.contract.methods.frozenReserveGoldDays, - undefined, - valueToBigNumber - ) - - /** - * @notice Returns a list of weights used for the allocation of reserve assets. - * @return An array of a list of weights used for the allocation of reserve assets. - */ - getAssetAllocationWeights = proxyCall( - this.contract.methods.getAssetAllocationWeights, - undefined, - (weights) => weights.map(valueToBigNumber) - ) - - /** - * @notice Returns a list of token symbols that have been allocated. - * @return An array of token symbols that have been allocated. - */ - getAssetAllocationSymbols = proxyCall( - this.contract.methods.getAssetAllocationSymbols, - undefined, - (symbols) => symbols.map((symbol) => this.connection.hexToAscii(symbol)) - ) - - /** - * @alias {getReserveCeloBalance} - */ - getReserveGoldBalance = proxyCall( - this.contract.methods.getReserveGoldBalance, - undefined, - valueToBigNumber - ) - - /** - * @notice Returns the amount of CELO included in the reserve - * @return {BigNumber} The CELO amount included in the reserve. - */ - getReserveCeloBalance = this.getReserveGoldBalance - - /** - * @notice Returns the amount of unfrozen CELO in the Reserve contract. - * @see {getUnfrozenReserveCeloBalance} - * @return {BigNumber} amount in wei - */ - getUnfrozenBalance = proxyCall( - this.contract.methods.getUnfrozenBalance, - undefined, - valueToBigNumber - ) - - /** - * @notice Returns the amount of unfrozen CELO included in the reserve - * contract and in other reserve addresses. - * @see {getUnfrozenBalance} - * @return {BigNumber} amount in wei - */ - getUnfrozenReserveCeloBalance = proxyCall( - this.contract.methods.getUnfrozenReserveGoldBalance, - undefined, - valueToBigNumber - ) - - getOtherReserveAddresses = proxyCall(this.contract.methods.getOtherReserveAddresses) - - /** - * Returns current configuration parameters. - */ - async getConfig(): Promise { - return { - tobinTaxStalenessThreshold: await this.tobinTaxStalenessThreshold(), - frozenReserveGoldStartBalance: await this.frozenReserveGoldStartBalance(), - frozenReserveGoldStartDay: await this.frozenReserveGoldStartDay(), - frozenReserveGoldDays: await this.frozenReserveGoldDays(), - otherReserveAddresses: await this.getOtherReserveAddresses(), - } - } - - isOtherReserveAddress = proxyCall(this.contract.methods.isOtherReserveAddress) - - async getSpenders(): Promise { - const spendersAdded = ( - await this.getPastEvents('SpenderAdded', { - fromBlock: 0, - toBlock: 'latest', - }) - ).map((eventlog: EventLog) => eventlog.returnValues.spender) - const spendersRemoved = ( - await this.getPastEvents('SpenderRemoved', { - fromBlock: 0, - toBlock: 'latest', - }) - ).map((eventlog: EventLog) => eventlog.returnValues.spender) - return spendersAdded.filter((spender) => !spendersRemoved.includes(spender)) - } -} - -export type ReserveWrapperType = ReserveWrapper diff --git a/packages/sdk/contractkit/src/wrappers/StableTokenWrapper.ts b/packages/sdk/contractkit/src/wrappers/StableTokenWrapper.ts index 6179a7540c..1edb1fb430 100644 --- a/packages/sdk/contractkit/src/wrappers/StableTokenWrapper.ts +++ b/packages/sdk/contractkit/src/wrappers/StableTokenWrapper.ts @@ -1,5 +1,5 @@ import { ICeloToken } from '@celo/abis/web3/ICeloToken' -import { StableToken } from '@celo/abis/web3/mento/StableToken' +import { IERC20CeloTokens as StableToken } from '@celo/abis/web3/IERC20CeloTokens' import { proxyCall, proxySend, stringIdentity, tupleParser, valueToString } from './BaseWrapper' import { CeloTokenWrapper } from './CeloTokenWrapper' diff --git a/yarn.lock b/yarn.lock index 35b034e68e..ca97266393 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1676,10 +1676,10 @@ __metadata: languageName: node linkType: hard -"@celo/abis@npm:13.0.0-post-audit.0": +"@celo/abis@file:/Users/martinvol/celo/celo-monorepo/packages/protocol/abis/celo-abis-13.0.0-post-audit.0.tgz::locator=celo%40workspace%3A.": version: 13.0.0-post-audit.0 - resolution: "@celo/abis@npm:13.0.0-post-audit.0" - checksum: da5aad746ff8fb3515513c7e42be4624e041ff08f7b8dd61a408292c6dd9a28baade1d47873e37024bb81ab91d758142da304b5f55994092530393f773e29f92 + resolution: "@celo/abis@file:/Users/martinvol/celo/celo-monorepo/packages/protocol/abis/celo-abis-13.0.0-post-audit.0.tgz#/Users/martinvol/celo/celo-monorepo/packages/protocol/abis/celo-abis-13.0.0-post-audit.0.tgz::hash=f570a2&locator=celo%40workspace%3A." + checksum: 6c5b10374757fe6b2c1035203a1f73d76eb74f7fe4706de9d3965c81fff7924f83f85e11124727693cfaaf985d83e8483b6297e993a20b5a1a8dba196c34c11b languageName: node linkType: hard