diff --git a/src/apps/jarvis/assets/logo.png b/src/apps/jarvis/assets/logo.png new file mode 100644 index 000000000..c346a22e5 Binary files /dev/null and b/src/apps/jarvis/assets/logo.png differ diff --git a/src/apps/jarvis/common/jarvis.synth.token-fetcher.ts b/src/apps/jarvis/common/jarvis.synth.token-fetcher.ts new file mode 100644 index 000000000..8e4bff21b --- /dev/null +++ b/src/apps/jarvis/common/jarvis.synth.token-fetcher.ts @@ -0,0 +1,91 @@ +import { Inject } from '@nestjs/common'; +import { ethers } from 'ethers'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { AppTokenTemplatePositionFetcher } from '~position/template/app-token.template.position-fetcher'; +import { + GetAddressesParams, + GetDefinitionsParams, + DefaultAppTokenDataProps, + GetPriceParams, +} from '~position/template/app-token.template.types'; + +import { JarvisContractFactory, JarvisSynth } from '../contracts'; + +type JarvisSynthDefinition = { + address: string; + poolAddress: string; +}; + +export abstract class JarvisSynthTokenFetcher extends AppTokenTemplatePositionFetcher< + JarvisSynth, + DefaultAppTokenDataProps, + JarvisSynthDefinition +> { + abstract poolAddresses: string[]; + + constructor( + @Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit, + @Inject(JarvisContractFactory) protected readonly contractFactory: JarvisContractFactory, + ) { + super(appToolkit); + } + + getContract(address: string): JarvisSynth { + return this.contractFactory.jarvisSynth({ address, network: this.network }); + } + + async getDefinitions({ multicall }: GetDefinitionsParams): Promise { + const definitions = await Promise.all( + this.poolAddresses.map(async poolAddress => { + const poolContract = this.contractFactory.jarvisSynthereumLiquidityPool({ + address: poolAddress, + network: this.network, + }); + + const synthAddress = await multicall.wrap(poolContract).syntheticToken(); + return { address: synthAddress, poolAddress }; + }), + ); + + return definitions; + } + + async getAddresses({ definitions }: GetAddressesParams) { + return definitions.map(v => v.address); + } + + async getUnderlyingTokenDefinitions() { + return []; + } + + async getPricePerShare() { + return 1; + } + + async getPrice({ + definition, + multicall, + }: GetPriceParams) { + const poolContract = this.contractFactory.jarvisSynthereumLiquidityPool({ + address: definition.poolAddress, + network: this.network, + }); + + const finderAddress = await multicall.wrap(poolContract).synthereumFinder(); + const finder = this.contractFactory.jarvisSynthereumFinder({ address: finderAddress, network: this.network }); + + const priceFeedName = ethers.utils.formatBytes32String('PriceFeed'); + const priceFeedAddress = await finder.getImplementationAddress(priceFeedName); + const priceFeed = this.contractFactory.jarvisSynthereumPriceFeed({ + address: priceFeedAddress, + network: this.network, + }); + + // Multicall crashes for some reason + const priceFeedIdentifier = await multicall.wrap(poolContract).priceFeedIdentifier(); + const priceRaw = await priceFeed.getLatestPrice(priceFeedIdentifier).catch(() => 0); + + return Number(priceRaw) / 10 ** 18; + } +} diff --git a/src/apps/jarvis/contracts/abis/jarvis-synth.json b/src/apps/jarvis/contracts/abis/jarvis-synth.json new file mode 100644 index 000000000..e2994962f --- /dev/null +++ b/src/apps/jarvis/contracts/abis/jarvis-synth.json @@ -0,0 +1,375 @@ +[ + { + "inputs": [ + { "internalType": "string", "name": "tokenName", "type": "string" }, + { "internalType": "string", "name": "tokenSymbol", "type": "string" }, + { "internalType": "uint8", "name": "tokenDecimals", "type": "uint8" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "BURNER_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "addAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "addAdminAndMinterAndBurner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "addBurner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "value", "type": "uint256" }], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAdminMembers", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBurnerMembers", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinterMembers", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleAdmin", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "getRoleMember", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleMemberCount", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "hasRole", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "addedValue", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "isAdmin", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "isBurner", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "isMinter", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "mint", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "renounceAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "renounceAdminAndMinterAndBurner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "renounceBurner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { "inputs": [], "name": "renounceMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/jarvis/contracts/abis/jarvis-synthereum-finder.json b/src/apps/jarvis/contracts/abis/jarvis-synthereum-finder.json new file mode 100644 index 000000000..d9a860373 --- /dev/null +++ b/src/apps/jarvis/contracts/abis/jarvis-synthereum-finder.json @@ -0,0 +1,165 @@ +[ + { + "inputs": [ + { + "components": [ + { "internalType": "address", "name": "admin", "type": "address" }, + { "internalType": "address", "name": "maintainer", "type": "address" } + ], + "internalType": "struct SynthereumFinder.Roles", + "name": "_roles", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "interfaceName", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "newImplementationAddress", "type": "address" } + ], + "name": "InterfaceImplementationChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAINTAINER_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "interfaceName", "type": "bytes32" }, + { "internalType": "address", "name": "implementationAddress", "type": "address" } + ], + "name": "changeImplementationAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "interfaceName", "type": "bytes32" }], + "name": "getImplementationAddress", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleAdmin", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "getRoleMember", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleMemberCount", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "hasRole", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "name": "interfacesImplemented", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/jarvis/contracts/abis/jarvis-synthereum-liquidity-pool.json b/src/apps/jarvis/contracts/abis/jarvis-synthereum-liquidity-pool.json new file mode 100644 index 000000000..99896d043 --- /dev/null +++ b/src/apps/jarvis/contracts/abis/jarvis-synthereum-liquidity-pool.json @@ -0,0 +1,621 @@ +[ + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "address", "name": "lp", "type": "address" }], + "name": "ActivatedLP", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "lp", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "collateralSent", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "collateralDeposited", "type": "uint256" } + ], + "name": "DepositedLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "lp", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "synthTokensInLiquidation", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "collateralAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "bonusAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "collateralReceived", "type": "uint256" } + ], + "name": "Liquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { + "components": [ + { "internalType": "uint256", "name": "totalCollateral", "type": "uint256" }, + { "internalType": "uint256", "name": "exchangeAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "feeAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "numTokens", "type": "uint256" } + ], + "indexed": false, + "internalType": "struct ISynthereumMultiLpLiquidityPoolEvents.MintValues", + "name": "mintvalues", + "type": "tuple" + }, + { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "lendingModuleId", "type": "string" }], + "name": "NewLendingModule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { + "components": [ + { "internalType": "uint256", "name": "numTokens", "type": "uint256" }, + { "internalType": "uint256", "name": "exchangeAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "feeAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "collateralAmount", "type": "uint256" } + ], + "indexed": false, + "internalType": "struct ISynthereumMultiLpLiquidityPoolEvents.RedeemValues", + "name": "redeemvalues", + "type": "tuple" + }, + { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" } + ], + "name": "Redeemed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "address", "name": "lp", "type": "address" }], + "name": "RegisteredLp", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "newFee", "type": "uint256" }], + "name": "SetFeePercentage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "newLiquidationReward", "type": "uint256" }], + "name": "SetLiquidationReward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "lp", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "overCollateralization", "type": "uint256" } + ], + "name": "SetOvercollateralization", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "lp", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "collateralWithdrawn", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "collateralReceived", "type": "uint256" } + ], + "name": "WithdrawnLiquidity", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAINTAINER_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_collateralAmount", "type": "uint256" }, + { "internalType": "uint128", "name": "_overCollateralization", "type": "uint128" } + ], + "name": "activateLP", + "outputs": [{ "internalType": "uint256", "name": "collateralDeposited", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_collateralAmount", "type": "uint256" }], + "name": "addLiquidity", + "outputs": [ + { "internalType": "uint256", "name": "collateralDeposited", "type": "uint256" }, + { "internalType": "uint256", "name": "newLpCollateralAmount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collateralRequirement", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "collateralToken", + "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "collateralTokenDecimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feePercentage", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getActiveLPs", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_collateralAmount", "type": "uint256" }], + "name": "getMintTradeInfo", + "outputs": [ + { "internalType": "uint256", "name": "synthTokensReceived", "type": "uint256" }, + { "internalType": "uint256", "name": "feePaid", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_syntTokensAmount", "type": "uint256" }], + "name": "getRedeemTradeInfo", + "outputs": [ + { "internalType": "uint256", "name": "collateralAmountReceived", "type": "uint256" }, + { "internalType": "uint256", "name": "feePaid", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRegisteredLPs", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleAdmin", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "getRoleMember", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleMemberCount", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "hasRole", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract ISynthereumFinder", "name": "finder", "type": "address" }, + { "internalType": "uint8", "name": "version", "type": "uint8" }, + { "internalType": "contract IStandardERC20", "name": "collateralToken", "type": "address" }, + { "internalType": "contract IMintableBurnableERC20", "name": "syntheticToken", "type": "address" }, + { + "components": [ + { "internalType": "address", "name": "admin", "type": "address" }, + { "internalType": "address", "name": "maintainer", "type": "address" } + ], + "internalType": "struct ISynthereumMultiLpLiquidityPool.Roles", + "name": "roles", + "type": "tuple" + }, + { "internalType": "uint64", "name": "fee", "type": "uint64" }, + { "internalType": "bytes32", "name": "priceIdentifier", "type": "bytes32" }, + { "internalType": "uint128", "name": "overCollateralRequirement", "type": "uint128" }, + { "internalType": "uint64", "name": "liquidationReward", "type": "uint64" }, + { "internalType": "string", "name": "lendingModuleId", "type": "string" } + ], + "internalType": "struct ISynthereumMultiLpLiquidityPool.InitializationParams", + "name": "_params", + "type": "tuple" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_lp", "type": "address" }], + "name": "isActiveLP", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_lp", "type": "address" }], + "name": "isRegisteredLP", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "forwarder", "type": "address" }], + "name": "isTrustedForwarder", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lendingProtocolInfo", + "outputs": [ + { "internalType": "string", "name": "lendingId", "type": "string" }, + { "internalType": "address", "name": "bearingToken", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_lp", "type": "address" }, + { "internalType": "uint256", "name": "_numSynthTokens", "type": "uint256" } + ], + "name": "liquidate", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "liquidationReward", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxTokensCapacity", + "outputs": [{ "internalType": "uint256", "name": "maxCapacity", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "migrateStorage", + "outputs": [ + { "internalType": "uint8", "name": "poolVersion", "type": "uint8" }, + { "internalType": "uint256", "name": "price", "type": "uint256" }, + { "internalType": "bytes", "name": "storageBytes", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_recipient", "type": "address" }], + "name": "migrateTotalFunds", + "outputs": [{ "internalType": "uint256", "name": "migrationAmount", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "minNumTokens", "type": "uint256" }, + { "internalType": "uint256", "name": "collateralAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "expiration", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct ISynthereumMultiLpLiquidityPool.MintParams", + "name": "_mintParams", + "type": "tuple" + } + ], + "name": "mint", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_lp", "type": "address" }], + "name": "positionLPInfo", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "actualCollateralAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "tokensCollateralized", "type": "uint256" }, + { "internalType": "uint256", "name": "overCollateralization", "type": "uint256" }, + { "internalType": "uint256", "name": "capacity", "type": "uint256" }, + { "internalType": "uint256", "name": "utilization", "type": "uint256" }, + { "internalType": "uint256", "name": "coverage", "type": "uint256" }, + { "internalType": "uint256", "name": "mintShares", "type": "uint256" }, + { "internalType": "uint256", "name": "redeemShares", "type": "uint256" }, + { "internalType": "uint256", "name": "interestShares", "type": "uint256" }, + { "internalType": "bool", "name": "isOvercollateralized", "type": "bool" } + ], + "internalType": "struct ISynthereumMultiLpLiquidityPool.LPInfo", + "name": "info", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "priceFeedIdentifier", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "numTokens", "type": "uint256" }, + { "internalType": "uint256", "name": "minCollateral", "type": "uint256" }, + { "internalType": "uint256", "name": "expiration", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct ISynthereumMultiLpLiquidityPool.RedeemParams", + "name": "_redeemParams", + "type": "tuple" + } + ], + "name": "redeem", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_lp", "type": "address" }], + "name": "registerLP", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_collateralAmount", "type": "uint256" }], + "name": "removeLiquidity", + "outputs": [ + { "internalType": "uint256", "name": "collateralRemoved", "type": "uint256" }, + { "internalType": "uint256", "name": "collateralReceived", "type": "uint256" }, + { "internalType": "uint256", "name": "newLpCollateralAmount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint64", "name": "_newFee", "type": "uint64" }], + "name": "setFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint64", "name": "_newLiquidationReward", "type": "uint64" }], + "name": "setLiquidationReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract ISynthereumFinder", "name": "_finder", "type": "address" }, + { "internalType": "uint8", "name": "_oldVersion", "type": "uint8" }, + { "internalType": "bytes", "name": "_storageBytes", "type": "bytes" }, + { "internalType": "uint8", "name": "_newVersion", "type": "uint8" }, + { "internalType": "bytes", "name": "_extraInputParams", "type": "bytes" }, + { "internalType": "uint256", "name": "_sourceCollateralAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "_actualCollateralAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "_price", "type": "uint256" } + ], + "name": "setMigratedStorage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint128", "name": "_overCollateralization", "type": "uint128" }], + "name": "setOvercollateralization", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "_lendingId", "type": "string" }, + { "internalType": "address", "name": "_bearingToken", "type": "address" } + ], + "name": "switchLendingModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "synthereumFinder", + "outputs": [{ "internalType": "contract ISynthereumFinder", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syntheticToken", + "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syntheticTokenSymbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalCollateralAmount", + "outputs": [ + { "internalType": "uint256", "name": "usersCollateral", "type": "uint256" }, + { "internalType": "uint256", "name": "lpsCollateral", "type": "uint256" }, + { "internalType": "uint256", "name": "totalCollateral", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSyntheticTokens", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_bearingAmount", "type": "uint256" }], + "name": "transferToLendingManager", + "outputs": [{ "internalType": "uint256", "name": "bearingAmountOut", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "typology", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "updatePositions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "version", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/jarvis/contracts/abis/jarvis-synthereum-price-feed.json b/src/apps/jarvis/contracts/abis/jarvis-synthereum-price-feed.json new file mode 100644 index 000000000..c43a1172a --- /dev/null +++ b/src/apps/jarvis/contracts/abis/jarvis-synthereum-price-feed.json @@ -0,0 +1,225 @@ +[ + { + "inputs": [ + { "internalType": "contract ISynthereumFinder", "name": "_synthereumFinder", "type": "address" }, + { + "components": [ + { "internalType": "address", "name": "admin", "type": "address" }, + { "internalType": "address", "name": "maintainer", "type": "address" } + ], + "internalType": "struct SynthereumChainlinkPriceFeed.Roles", + "name": "_roles", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "bytes32", "name": "priceIdentifier", "type": "bytes32" }], + "name": "RemovePair", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, + { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "bytes32", "name": "priceIdentifier", "type": "bytes32" }, + { "indexed": false, "internalType": "enum ISynthereumChainlinkPriceFeed.Type", "name": "kind", "type": "uint8" }, + { "indexed": false, "internalType": "address", "name": "aggregator", "type": "address" }, + { "indexed": false, "internalType": "bytes32[]", "name": "intermediatePairs", "type": "bytes32[]" } + ], + "name": "SetPair", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAINTAINER_ROLE", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "_priceIdentifier", "type": "bytes32" }], + "name": "getAggregator", + "outputs": [{ "internalType": "contract AggregatorV3Interface", "name": "aggregator", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "_priceIdentifier", "type": "bytes32" }], + "name": "getLatestPrice", + "outputs": [{ "internalType": "uint256", "name": "price", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32[]", "name": "_priceIdentifiers", "type": "bytes32[]" }], + "name": "getLatestPrices", + "outputs": [{ "internalType": "uint256[]", "name": "prices", "type": "uint256[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleAdmin", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "getRoleMember", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], + "name": "getRoleMemberCount", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_priceIdentifier", "type": "bytes32" }, + { "internalType": "uint80", "name": "_roundId", "type": "uint80" } + ], + "name": "getRoundPrice", + "outputs": [{ "internalType": "uint256", "name": "price", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "hasRole", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "_priceIdentifier", "type": "bytes32" }], + "name": "isPriceSupported", + "outputs": [{ "internalType": "bool", "name": "isSupported", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "name": "pairs", + "outputs": [ + { "internalType": "bool", "name": "isSupported", "type": "bool" }, + { "internalType": "enum ISynthereumChainlinkPriceFeed.Type", "name": "priceType", "type": "uint8" }, + { "internalType": "contract AggregatorV3Interface", "name": "aggregator", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "_priceIdentifier", "type": "bytes32" }], + "name": "removePair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "enum ISynthereumChainlinkPriceFeed.Type", "name": "_kind", "type": "uint8" }, + { "internalType": "bytes32", "name": "_priceIdentifier", "type": "bytes32" }, + { "internalType": "address", "name": "_aggregator", "type": "address" }, + { "internalType": "bytes32[]", "name": "_intermediatePairs", "type": "bytes32[]" } + ], + "name": "setPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "synthereumFinder", + "outputs": [{ "internalType": "contract ISynthereumFinder", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/jarvis/contracts/ethers/JarvisSynth.ts b/src/apps/jarvis/contracts/ethers/JarvisSynth.ts new file mode 100644 index 000000000..ebc841a7b --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/JarvisSynth.ts @@ -0,0 +1,1144 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common'; + +export interface JarvisSynthInterface extends utils.Interface { + functions: { + 'BURNER_ROLE()': FunctionFragment; + 'DEFAULT_ADMIN_ROLE()': FunctionFragment; + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'MINTER_ROLE()': FunctionFragment; + 'addAdmin(address)': FunctionFragment; + 'addAdminAndMinterAndBurner(address)': FunctionFragment; + 'addBurner(address)': FunctionFragment; + 'addMinter(address)': FunctionFragment; + 'allowance(address,address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'burn(uint256)': FunctionFragment; + 'decimals()': FunctionFragment; + 'decreaseAllowance(address,uint256)': FunctionFragment; + 'getAdminMembers()': FunctionFragment; + 'getBurnerMembers()': FunctionFragment; + 'getMinterMembers()': FunctionFragment; + 'getRoleAdmin(bytes32)': FunctionFragment; + 'getRoleMember(bytes32,uint256)': FunctionFragment; + 'getRoleMemberCount(bytes32)': FunctionFragment; + 'grantRole(bytes32,address)': FunctionFragment; + 'hasRole(bytes32,address)': FunctionFragment; + 'increaseAllowance(address,uint256)': FunctionFragment; + 'isAdmin(address)': FunctionFragment; + 'isBurner(address)': FunctionFragment; + 'isMinter(address)': FunctionFragment; + 'mint(address,uint256)': FunctionFragment; + 'name()': FunctionFragment; + 'nonces(address)': FunctionFragment; + 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'renounceAdmin()': FunctionFragment; + 'renounceAdminAndMinterAndBurner()': FunctionFragment; + 'renounceBurner()': FunctionFragment; + 'renounceMinter()': FunctionFragment; + 'renounceRole(bytes32,address)': FunctionFragment; + 'revokeRole(bytes32,address)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'BURNER_ROLE' + | 'DEFAULT_ADMIN_ROLE' + | 'DOMAIN_SEPARATOR' + | 'MINTER_ROLE' + | 'addAdmin' + | 'addAdminAndMinterAndBurner' + | 'addBurner' + | 'addMinter' + | 'allowance' + | 'approve' + | 'balanceOf' + | 'burn' + | 'decimals' + | 'decreaseAllowance' + | 'getAdminMembers' + | 'getBurnerMembers' + | 'getMinterMembers' + | 'getRoleAdmin' + | 'getRoleMember' + | 'getRoleMemberCount' + | 'grantRole' + | 'hasRole' + | 'increaseAllowance' + | 'isAdmin' + | 'isBurner' + | 'isMinter' + | 'mint' + | 'name' + | 'nonces' + | 'permit' + | 'renounceAdmin' + | 'renounceAdminAndMinterAndBurner' + | 'renounceBurner' + | 'renounceMinter' + | 'renounceRole' + | 'revokeRole' + | 'supportsInterface' + | 'symbol' + | 'totalSupply' + | 'transfer' + | 'transferFrom', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'BURNER_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'MINTER_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'addAdmin', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'addAdminAndMinterAndBurner', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'addBurner', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'addMinter', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'allowance', values: [PromiseOrValue, PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'approve', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'burn', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData( + functionFragment: 'decreaseAllowance', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'getAdminMembers', values?: undefined): string; + encodeFunctionData(functionFragment: 'getBurnerMembers', values?: undefined): string; + encodeFunctionData(functionFragment: 'getMinterMembers', values?: undefined): string; + encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'getRoleMember', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'getRoleMemberCount', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'grantRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue, PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'increaseAllowance', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'isAdmin', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'isBurner', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'isMinter', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'mint', values: [PromiseOrValue, PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'permit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ], + ): string; + encodeFunctionData(functionFragment: 'renounceAdmin', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceAdminAndMinterAndBurner', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceBurner', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceMinter', values?: undefined): string; + encodeFunctionData( + functionFragment: 'renounceRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'revokeRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData( + functionFragment: 'transfer', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'transferFrom', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + + decodeFunctionResult(functionFragment: 'BURNER_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MINTER_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addAdminAndMinterAndBurner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addBurner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addMinter', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getAdminMembers', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getBurnerMembers', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getMinterMembers', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMember', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMemberCount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isBurner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isMinter', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceAdminAndMinterAndBurner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceBurner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceMinter', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment; + 'RoleGranted(bytes32,address,address)': EventFragment; + 'RoleRevoked(bytes32,address,address)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>; + +export type RoleAdminChangedEventFilter = TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface JarvisSynth extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JarvisSynthInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + BURNER_ROLE(overrides?: CallOverrides): Promise<[string]>; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + + MINTER_ROLE(overrides?: CallOverrides): Promise<[string]>; + + addAdmin( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addAdminAndMinterAndBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(account: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + burn( + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getAdminMembers(overrides?: CallOverrides): Promise<[string[]]>; + + getBurnerMembers(overrides?: CallOverrides): Promise<[string[]]>; + + getMinterMembers(overrides?: CallOverrides): Promise<[string[]]>; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string]>; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean]>; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isAdmin(account: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + isBurner(account: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + isMinter(account: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + mint( + recipient: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + nonces(owner: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceAdmin(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceAdminAndMinterAndBurner( + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceBurner(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceMinter(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + BURNER_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MINTER_ROLE(overrides?: CallOverrides): Promise; + + addAdmin( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addAdminAndMinterAndBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + burn( + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getAdminMembers(overrides?: CallOverrides): Promise; + + getBurnerMembers(overrides?: CallOverrides): Promise; + + getMinterMembers(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isAdmin(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isBurner(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isMinter(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + mint( + recipient: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceAdmin(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceAdminAndMinterAndBurner( + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceBurner(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceMinter(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + callStatic: { + BURNER_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MINTER_ROLE(overrides?: CallOverrides): Promise; + + addAdmin(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + addAdminAndMinterAndBurner(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + addBurner(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + addMinter(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + balanceOf(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + burn(value: PromiseOrValue, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getAdminMembers(overrides?: CallOverrides): Promise; + + getBurnerMembers(overrides?: CallOverrides): Promise; + + getMinterMembers(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isAdmin(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isBurner(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isMinter(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + mint( + recipient: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + renounceAdmin(overrides?: CallOverrides): Promise; + + renounceAdminAndMinterAndBurner(overrides?: CallOverrides): Promise; + + renounceBurner(overrides?: CallOverrides): Promise; + + renounceMinter(overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null, + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null, + ): ApprovalEventFilter; + + 'RoleAdminChanged(bytes32,bytes32,bytes32)'( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + + 'RoleGranted(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + RoleGranted( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + + 'RoleRevoked(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + RoleRevoked( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + + 'Transfer(address,address,uint256)'( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null, + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null, + ): TransferEventFilter; + }; + + estimateGas: { + BURNER_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MINTER_ROLE(overrides?: CallOverrides): Promise; + + addAdmin( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addAdminAndMinterAndBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + burn( + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getAdminMembers(overrides?: CallOverrides): Promise; + + getBurnerMembers(overrides?: CallOverrides): Promise; + + getMinterMembers(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isAdmin(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isBurner(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isMinter(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + mint( + recipient: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceAdmin(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceAdminAndMinterAndBurner(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceBurner(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceMinter(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + populateTransaction: { + BURNER_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MINTER_ROLE(overrides?: CallOverrides): Promise; + + addAdmin( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addAdminAndMinterAndBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addBurner( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + burn( + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getAdminMembers(overrides?: CallOverrides): Promise; + + getBurnerMembers(overrides?: CallOverrides): Promise; + + getMinterMembers(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isAdmin(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isBurner(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + isMinter(account: PromiseOrValue, overrides?: CallOverrides): Promise; + + mint( + recipient: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceAdmin(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceAdminAndMinterAndBurner( + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceBurner(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceMinter(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; +} diff --git a/src/apps/jarvis/contracts/ethers/JarvisSynthereumFinder.ts b/src/apps/jarvis/contracts/ethers/JarvisSynthereumFinder.ts new file mode 100644 index 000000000..02fcf0360 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/JarvisSynthereumFinder.ts @@ -0,0 +1,486 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common'; + +export declare namespace SynthereumFinder { + export type RolesStruct = { + admin: PromiseOrValue; + maintainer: PromiseOrValue; + }; + + export type RolesStructOutput = [string, string] & { + admin: string; + maintainer: string; + }; +} + +export interface JarvisSynthereumFinderInterface extends utils.Interface { + functions: { + 'DEFAULT_ADMIN_ROLE()': FunctionFragment; + 'MAINTAINER_ROLE()': FunctionFragment; + 'changeImplementationAddress(bytes32,address)': FunctionFragment; + 'getImplementationAddress(bytes32)': FunctionFragment; + 'getRoleAdmin(bytes32)': FunctionFragment; + 'getRoleMember(bytes32,uint256)': FunctionFragment; + 'getRoleMemberCount(bytes32)': FunctionFragment; + 'grantRole(bytes32,address)': FunctionFragment; + 'hasRole(bytes32,address)': FunctionFragment; + 'interfacesImplemented(bytes32)': FunctionFragment; + 'renounceRole(bytes32,address)': FunctionFragment; + 'revokeRole(bytes32,address)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DEFAULT_ADMIN_ROLE' + | 'MAINTAINER_ROLE' + | 'changeImplementationAddress' + | 'getImplementationAddress' + | 'getRoleAdmin' + | 'getRoleMember' + | 'getRoleMemberCount' + | 'grantRole' + | 'hasRole' + | 'interfacesImplemented' + | 'renounceRole' + | 'revokeRole' + | 'supportsInterface', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'MAINTAINER_ROLE', values?: undefined): string; + encodeFunctionData( + functionFragment: 'changeImplementationAddress', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'getImplementationAddress', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'getRoleMember', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'getRoleMemberCount', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'grantRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue, PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'interfacesImplemented', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'renounceRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'revokeRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue]): string; + + decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MAINTAINER_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'changeImplementationAddress', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getImplementationAddress', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMember', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMemberCount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'interfacesImplemented', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + + events: { + 'InterfaceImplementationChanged(bytes32,address)': EventFragment; + 'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment; + 'RoleGranted(bytes32,address,address)': EventFragment; + 'RoleRevoked(bytes32,address,address)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'InterfaceImplementationChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment; +} + +export interface InterfaceImplementationChangedEventObject { + interfaceName: string; + newImplementationAddress: string; +} +export type InterfaceImplementationChangedEvent = TypedEvent< + [string, string], + InterfaceImplementationChangedEventObject +>; + +export type InterfaceImplementationChangedEventFilter = TypedEventFilter; + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>; + +export type RoleAdminChangedEventFilter = TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface JarvisSynthereumFinder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JarvisSynthereumFinderInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise<[string]>; + + changeImplementationAddress( + interfaceName: PromiseOrValue, + implementationAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getImplementationAddress(interfaceName: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string]>; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean]>; + + interfacesImplemented(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + }; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + changeImplementationAddress( + interfaceName: PromiseOrValue, + implementationAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getImplementationAddress(interfaceName: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + interfacesImplemented(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + callStatic: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + changeImplementationAddress( + interfaceName: PromiseOrValue, + implementationAddress: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getImplementationAddress(interfaceName: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + interfacesImplemented(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + }; + + filters: { + 'InterfaceImplementationChanged(bytes32,address)'( + interfaceName?: PromiseOrValue | null, + newImplementationAddress?: PromiseOrValue | null, + ): InterfaceImplementationChangedEventFilter; + InterfaceImplementationChanged( + interfaceName?: PromiseOrValue | null, + newImplementationAddress?: PromiseOrValue | null, + ): InterfaceImplementationChangedEventFilter; + + 'RoleAdminChanged(bytes32,bytes32,bytes32)'( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + + 'RoleGranted(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + RoleGranted( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + + 'RoleRevoked(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + RoleRevoked( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + }; + + estimateGas: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + changeImplementationAddress( + interfaceName: PromiseOrValue, + implementationAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getImplementationAddress(interfaceName: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + interfacesImplemented(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + changeImplementationAddress( + interfaceName: PromiseOrValue, + implementationAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + getImplementationAddress( + interfaceName: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + interfacesImplemented(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/jarvis/contracts/ethers/JarvisSynthereumLiquidityPool.ts b/src/apps/jarvis/contracts/ethers/JarvisSynthereumLiquidityPool.ts new file mode 100644 index 000000000..0c6582910 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/JarvisSynthereumLiquidityPool.ts @@ -0,0 +1,1682 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common'; + +export declare namespace ISynthereumMultiLpLiquidityPoolEvents { + export type MintValuesStruct = { + totalCollateral: PromiseOrValue; + exchangeAmount: PromiseOrValue; + feeAmount: PromiseOrValue; + numTokens: PromiseOrValue; + }; + + export type MintValuesStructOutput = [BigNumber, BigNumber, BigNumber, BigNumber] & { + totalCollateral: BigNumber; + exchangeAmount: BigNumber; + feeAmount: BigNumber; + numTokens: BigNumber; + }; + + export type RedeemValuesStruct = { + numTokens: PromiseOrValue; + exchangeAmount: PromiseOrValue; + feeAmount: PromiseOrValue; + collateralAmount: PromiseOrValue; + }; + + export type RedeemValuesStructOutput = [BigNumber, BigNumber, BigNumber, BigNumber] & { + numTokens: BigNumber; + exchangeAmount: BigNumber; + feeAmount: BigNumber; + collateralAmount: BigNumber; + }; +} + +export declare namespace ISynthereumMultiLpLiquidityPool { + export type RolesStruct = { + admin: PromiseOrValue; + maintainer: PromiseOrValue; + }; + + export type RolesStructOutput = [string, string] & { + admin: string; + maintainer: string; + }; + + export type InitializationParamsStruct = { + finder: PromiseOrValue; + version: PromiseOrValue; + collateralToken: PromiseOrValue; + syntheticToken: PromiseOrValue; + roles: ISynthereumMultiLpLiquidityPool.RolesStruct; + fee: PromiseOrValue; + priceIdentifier: PromiseOrValue; + overCollateralRequirement: PromiseOrValue; + liquidationReward: PromiseOrValue; + lendingModuleId: PromiseOrValue; + }; + + export type InitializationParamsStructOutput = [ + string, + number, + string, + string, + ISynthereumMultiLpLiquidityPool.RolesStructOutput, + BigNumber, + string, + BigNumber, + BigNumber, + string, + ] & { + finder: string; + version: number; + collateralToken: string; + syntheticToken: string; + roles: ISynthereumMultiLpLiquidityPool.RolesStructOutput; + fee: BigNumber; + priceIdentifier: string; + overCollateralRequirement: BigNumber; + liquidationReward: BigNumber; + lendingModuleId: string; + }; + + export type MintParamsStruct = { + minNumTokens: PromiseOrValue; + collateralAmount: PromiseOrValue; + expiration: PromiseOrValue; + recipient: PromiseOrValue; + }; + + export type MintParamsStructOutput = [BigNumber, BigNumber, BigNumber, string] & { + minNumTokens: BigNumber; + collateralAmount: BigNumber; + expiration: BigNumber; + recipient: string; + }; + + export type LPInfoStruct = { + actualCollateralAmount: PromiseOrValue; + tokensCollateralized: PromiseOrValue; + overCollateralization: PromiseOrValue; + capacity: PromiseOrValue; + utilization: PromiseOrValue; + coverage: PromiseOrValue; + mintShares: PromiseOrValue; + redeemShares: PromiseOrValue; + interestShares: PromiseOrValue; + isOvercollateralized: PromiseOrValue; + }; + + export type LPInfoStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + boolean, + ] & { + actualCollateralAmount: BigNumber; + tokensCollateralized: BigNumber; + overCollateralization: BigNumber; + capacity: BigNumber; + utilization: BigNumber; + coverage: BigNumber; + mintShares: BigNumber; + redeemShares: BigNumber; + interestShares: BigNumber; + isOvercollateralized: boolean; + }; + + export type RedeemParamsStruct = { + numTokens: PromiseOrValue; + minCollateral: PromiseOrValue; + expiration: PromiseOrValue; + recipient: PromiseOrValue; + }; + + export type RedeemParamsStructOutput = [BigNumber, BigNumber, BigNumber, string] & { + numTokens: BigNumber; + minCollateral: BigNumber; + expiration: BigNumber; + recipient: string; + }; +} + +export interface JarvisSynthereumLiquidityPoolInterface extends utils.Interface { + functions: { + 'DEFAULT_ADMIN_ROLE()': FunctionFragment; + 'MAINTAINER_ROLE()': FunctionFragment; + 'activateLP(uint256,uint128)': FunctionFragment; + 'addLiquidity(uint256)': FunctionFragment; + 'collateralRequirement()': FunctionFragment; + 'collateralToken()': FunctionFragment; + 'collateralTokenDecimals()': FunctionFragment; + 'feePercentage()': FunctionFragment; + 'getActiveLPs()': FunctionFragment; + 'getMintTradeInfo(uint256)': FunctionFragment; + 'getRedeemTradeInfo(uint256)': FunctionFragment; + 'getRegisteredLPs()': FunctionFragment; + 'getRoleAdmin(bytes32)': FunctionFragment; + 'getRoleMember(bytes32,uint256)': FunctionFragment; + 'getRoleMemberCount(bytes32)': FunctionFragment; + 'grantRole(bytes32,address)': FunctionFragment; + 'hasRole(bytes32,address)': FunctionFragment; + 'initialize((address,uint8,address,address,(address,address),uint64,bytes32,uint128,uint64,string))': FunctionFragment; + 'isActiveLP(address)': FunctionFragment; + 'isRegisteredLP(address)': FunctionFragment; + 'isTrustedForwarder(address)': FunctionFragment; + 'lendingProtocolInfo()': FunctionFragment; + 'liquidate(address,uint256)': FunctionFragment; + 'liquidationReward()': FunctionFragment; + 'maxTokensCapacity()': FunctionFragment; + 'migrateStorage()': FunctionFragment; + 'migrateTotalFunds(address)': FunctionFragment; + 'mint((uint256,uint256,uint256,address))': FunctionFragment; + 'positionLPInfo(address)': FunctionFragment; + 'priceFeedIdentifier()': FunctionFragment; + 'redeem((uint256,uint256,uint256,address))': FunctionFragment; + 'registerLP(address)': FunctionFragment; + 'removeLiquidity(uint256)': FunctionFragment; + 'renounceRole(bytes32,address)': FunctionFragment; + 'revokeRole(bytes32,address)': FunctionFragment; + 'setFee(uint64)': FunctionFragment; + 'setLiquidationReward(uint64)': FunctionFragment; + 'setMigratedStorage(address,uint8,bytes,uint8,bytes,uint256,uint256,uint256)': FunctionFragment; + 'setOvercollateralization(uint128)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'switchLendingModule(string,address)': FunctionFragment; + 'synthereumFinder()': FunctionFragment; + 'syntheticToken()': FunctionFragment; + 'syntheticTokenSymbol()': FunctionFragment; + 'totalCollateralAmount()': FunctionFragment; + 'totalSyntheticTokens()': FunctionFragment; + 'transferToLendingManager(uint256)': FunctionFragment; + 'typology()': FunctionFragment; + 'updatePositions()': FunctionFragment; + 'version()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DEFAULT_ADMIN_ROLE' + | 'MAINTAINER_ROLE' + | 'activateLP' + | 'addLiquidity' + | 'collateralRequirement' + | 'collateralToken' + | 'collateralTokenDecimals' + | 'feePercentage' + | 'getActiveLPs' + | 'getMintTradeInfo' + | 'getRedeemTradeInfo' + | 'getRegisteredLPs' + | 'getRoleAdmin' + | 'getRoleMember' + | 'getRoleMemberCount' + | 'grantRole' + | 'hasRole' + | 'initialize' + | 'isActiveLP' + | 'isRegisteredLP' + | 'isTrustedForwarder' + | 'lendingProtocolInfo' + | 'liquidate' + | 'liquidationReward' + | 'maxTokensCapacity' + | 'migrateStorage' + | 'migrateTotalFunds' + | 'mint' + | 'positionLPInfo' + | 'priceFeedIdentifier' + | 'redeem' + | 'registerLP' + | 'removeLiquidity' + | 'renounceRole' + | 'revokeRole' + | 'setFee' + | 'setLiquidationReward' + | 'setMigratedStorage' + | 'setOvercollateralization' + | 'supportsInterface' + | 'switchLendingModule' + | 'synthereumFinder' + | 'syntheticToken' + | 'syntheticTokenSymbol' + | 'totalCollateralAmount' + | 'totalSyntheticTokens' + | 'transferToLendingManager' + | 'typology' + | 'updatePositions' + | 'version', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'MAINTAINER_ROLE', values?: undefined): string; + encodeFunctionData( + functionFragment: 'activateLP', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'addLiquidity', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'collateralRequirement', values?: undefined): string; + encodeFunctionData(functionFragment: 'collateralToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'collateralTokenDecimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'feePercentage', values?: undefined): string; + encodeFunctionData(functionFragment: 'getActiveLPs', values?: undefined): string; + encodeFunctionData(functionFragment: 'getMintTradeInfo', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'getRedeemTradeInfo', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'getRegisteredLPs', values?: undefined): string; + encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'getRoleMember', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'getRoleMemberCount', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'grantRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue, PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'initialize', + values: [ISynthereumMultiLpLiquidityPool.InitializationParamsStruct], + ): string; + encodeFunctionData(functionFragment: 'isActiveLP', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'isRegisteredLP', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'isTrustedForwarder', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'lendingProtocolInfo', values?: undefined): string; + encodeFunctionData( + functionFragment: 'liquidate', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'liquidationReward', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxTokensCapacity', values?: undefined): string; + encodeFunctionData(functionFragment: 'migrateStorage', values?: undefined): string; + encodeFunctionData(functionFragment: 'migrateTotalFunds', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'mint', values: [ISynthereumMultiLpLiquidityPool.MintParamsStruct]): string; + encodeFunctionData(functionFragment: 'positionLPInfo', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'priceFeedIdentifier', values?: undefined): string; + encodeFunctionData(functionFragment: 'redeem', values: [ISynthereumMultiLpLiquidityPool.RedeemParamsStruct]): string; + encodeFunctionData(functionFragment: 'registerLP', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'removeLiquidity', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'renounceRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'revokeRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'setFee', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'setLiquidationReward', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'setMigratedStorage', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ], + ): string; + encodeFunctionData(functionFragment: 'setOvercollateralization', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'switchLendingModule', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'synthereumFinder', values?: undefined): string; + encodeFunctionData(functionFragment: 'syntheticToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'syntheticTokenSymbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalCollateralAmount', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSyntheticTokens', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferToLendingManager', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'typology', values?: undefined): string; + encodeFunctionData(functionFragment: 'updatePositions', values?: undefined): string; + encodeFunctionData(functionFragment: 'version', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MAINTAINER_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'activateLP', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addLiquidity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralRequirement', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'collateralTokenDecimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'feePercentage', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getActiveLPs', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getMintTradeInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRedeemTradeInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRegisteredLPs', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMember', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMemberCount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isActiveLP', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isRegisteredLP', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isTrustedForwarder', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lendingProtocolInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'liquidationReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxTokensCapacity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'migrateStorage', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'migrateTotalFunds', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'positionLPInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'priceFeedIdentifier', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'registerLP', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'removeLiquidity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setFee', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setLiquidationReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setMigratedStorage', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setOvercollateralization', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'switchLendingModule', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'synthereumFinder', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'syntheticToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'syntheticTokenSymbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalCollateralAmount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSyntheticTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferToLendingManager', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'typology', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updatePositions', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'version', data: BytesLike): Result; + + events: { + 'ActivatedLP(address)': EventFragment; + 'DepositedLiquidity(address,uint256,uint256)': EventFragment; + 'Liquidated(address,address,uint256,uint256,uint256,uint256)': EventFragment; + 'Minted(address,tuple,address)': EventFragment; + 'NewLendingModule(string)': EventFragment; + 'Redeemed(address,tuple,address)': EventFragment; + 'RegisteredLp(address)': EventFragment; + 'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment; + 'RoleGranted(bytes32,address,address)': EventFragment; + 'RoleRevoked(bytes32,address,address)': EventFragment; + 'SetFeePercentage(uint256)': EventFragment; + 'SetLiquidationReward(uint256)': EventFragment; + 'SetOvercollateralization(address,uint256)': EventFragment; + 'WithdrawnLiquidity(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'ActivatedLP'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DepositedLiquidity'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Liquidated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Minted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'NewLendingModule'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Redeemed'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RegisteredLp'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SetFeePercentage'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SetLiquidationReward'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SetOvercollateralization'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'WithdrawnLiquidity'): EventFragment; +} + +export interface ActivatedLPEventObject { + lp: string; +} +export type ActivatedLPEvent = TypedEvent<[string], ActivatedLPEventObject>; + +export type ActivatedLPEventFilter = TypedEventFilter; + +export interface DepositedLiquidityEventObject { + lp: string; + collateralSent: BigNumber; + collateralDeposited: BigNumber; +} +export type DepositedLiquidityEvent = TypedEvent<[string, BigNumber, BigNumber], DepositedLiquidityEventObject>; + +export type DepositedLiquidityEventFilter = TypedEventFilter; + +export interface LiquidatedEventObject { + user: string; + lp: string; + synthTokensInLiquidation: BigNumber; + collateralAmount: BigNumber; + bonusAmount: BigNumber; + collateralReceived: BigNumber; +} +export type LiquidatedEvent = TypedEvent< + [string, string, BigNumber, BigNumber, BigNumber, BigNumber], + LiquidatedEventObject +>; + +export type LiquidatedEventFilter = TypedEventFilter; + +export interface MintedEventObject { + user: string; + mintvalues: ISynthereumMultiLpLiquidityPoolEvents.MintValuesStructOutput; + recipient: string; +} +export type MintedEvent = TypedEvent< + [string, ISynthereumMultiLpLiquidityPoolEvents.MintValuesStructOutput, string], + MintedEventObject +>; + +export type MintedEventFilter = TypedEventFilter; + +export interface NewLendingModuleEventObject { + lendingModuleId: string; +} +export type NewLendingModuleEvent = TypedEvent<[string], NewLendingModuleEventObject>; + +export type NewLendingModuleEventFilter = TypedEventFilter; + +export interface RedeemedEventObject { + user: string; + redeemvalues: ISynthereumMultiLpLiquidityPoolEvents.RedeemValuesStructOutput; + recipient: string; +} +export type RedeemedEvent = TypedEvent< + [string, ISynthereumMultiLpLiquidityPoolEvents.RedeemValuesStructOutput, string], + RedeemedEventObject +>; + +export type RedeemedEventFilter = TypedEventFilter; + +export interface RegisteredLpEventObject { + lp: string; +} +export type RegisteredLpEvent = TypedEvent<[string], RegisteredLpEventObject>; + +export type RegisteredLpEventFilter = TypedEventFilter; + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>; + +export type RoleAdminChangedEventFilter = TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface SetFeePercentageEventObject { + newFee: BigNumber; +} +export type SetFeePercentageEvent = TypedEvent<[BigNumber], SetFeePercentageEventObject>; + +export type SetFeePercentageEventFilter = TypedEventFilter; + +export interface SetLiquidationRewardEventObject { + newLiquidationReward: BigNumber; +} +export type SetLiquidationRewardEvent = TypedEvent<[BigNumber], SetLiquidationRewardEventObject>; + +export type SetLiquidationRewardEventFilter = TypedEventFilter; + +export interface SetOvercollateralizationEventObject { + lp: string; + overCollateralization: BigNumber; +} +export type SetOvercollateralizationEvent = TypedEvent<[string, BigNumber], SetOvercollateralizationEventObject>; + +export type SetOvercollateralizationEventFilter = TypedEventFilter; + +export interface WithdrawnLiquidityEventObject { + lp: string; + collateralWithdrawn: BigNumber; + collateralReceived: BigNumber; +} +export type WithdrawnLiquidityEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawnLiquidityEventObject>; + +export type WithdrawnLiquidityEventFilter = TypedEventFilter; + +export interface JarvisSynthereumLiquidityPool extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JarvisSynthereumLiquidityPoolInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise<[string]>; + + activateLP( + _collateralAmount: PromiseOrValue, + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralRequirement(overrides?: CallOverrides): Promise<[BigNumber]>; + + collateralToken(overrides?: CallOverrides): Promise<[string]>; + + collateralTokenDecimals(overrides?: CallOverrides): Promise<[number]>; + + feePercentage(overrides?: CallOverrides): Promise<[BigNumber]>; + + getActiveLPs(overrides?: CallOverrides): Promise<[string[]]>; + + getMintTradeInfo( + _collateralAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + synthTokensReceived: BigNumber; + feePaid: BigNumber; + } + >; + + getRedeemTradeInfo( + _syntTokensAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + collateralAmountReceived: BigNumber; + feePaid: BigNumber; + } + >; + + getRegisteredLPs(overrides?: CallOverrides): Promise<[string[]]>; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string]>; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean]>; + + initialize( + _params: ISynthereumMultiLpLiquidityPool.InitializationParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isActiveLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + isRegisteredLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + isTrustedForwarder(forwarder: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + lendingProtocolInfo( + overrides?: CallOverrides, + ): Promise<[string, string] & { lendingId: string; bearingToken: string }>; + + liquidate( + _lp: PromiseOrValue, + _numSynthTokens: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidationReward(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxTokensCapacity(overrides?: CallOverrides): Promise<[BigNumber] & { maxCapacity: BigNumber }>; + + migrateStorage(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + migrateTotalFunds( + _recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + mint( + _mintParams: ISynthereumMultiLpLiquidityPool.MintParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + positionLPInfo( + _lp: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [ISynthereumMultiLpLiquidityPool.LPInfoStructOutput] & { + info: ISynthereumMultiLpLiquidityPool.LPInfoStructOutput; + } + >; + + priceFeedIdentifier(overrides?: CallOverrides): Promise<[string]>; + + redeem( + _redeemParams: ISynthereumMultiLpLiquidityPool.RedeemParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + registerLP( + _lp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + removeLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setFee( + _newFee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setLiquidationReward( + _newLiquidationReward: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMigratedStorage( + _finder: PromiseOrValue, + _oldVersion: PromiseOrValue, + _storageBytes: PromiseOrValue, + _newVersion: PromiseOrValue, + _extraInputParams: PromiseOrValue, + _sourceCollateralAmount: PromiseOrValue, + _actualCollateralAmount: PromiseOrValue, + _price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setOvercollateralization( + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + switchLendingModule( + _lendingId: PromiseOrValue, + _bearingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise<[string]>; + + syntheticToken(overrides?: CallOverrides): Promise<[string]>; + + syntheticTokenSymbol(overrides?: CallOverrides): Promise<[string]>; + + totalCollateralAmount(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber, BigNumber] & { + usersCollateral: BigNumber; + lpsCollateral: BigNumber; + totalCollateral: BigNumber; + } + >; + + totalSyntheticTokens(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferToLendingManager( + _bearingAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + typology(overrides?: CallOverrides): Promise<[string]>; + + updatePositions(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + version(overrides?: CallOverrides): Promise<[number]>; + }; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + activateLP( + _collateralAmount: PromiseOrValue, + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralRequirement(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralTokenDecimals(overrides?: CallOverrides): Promise; + + feePercentage(overrides?: CallOverrides): Promise; + + getActiveLPs(overrides?: CallOverrides): Promise; + + getMintTradeInfo( + _collateralAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + synthTokensReceived: BigNumber; + feePaid: BigNumber; + } + >; + + getRedeemTradeInfo( + _syntTokensAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + collateralAmountReceived: BigNumber; + feePaid: BigNumber; + } + >; + + getRegisteredLPs(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + initialize( + _params: ISynthereumMultiLpLiquidityPool.InitializationParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isActiveLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isRegisteredLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isTrustedForwarder(forwarder: PromiseOrValue, overrides?: CallOverrides): Promise; + + lendingProtocolInfo( + overrides?: CallOverrides, + ): Promise<[string, string] & { lendingId: string; bearingToken: string }>; + + liquidate( + _lp: PromiseOrValue, + _numSynthTokens: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidationReward(overrides?: CallOverrides): Promise; + + maxTokensCapacity(overrides?: CallOverrides): Promise; + + migrateStorage(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + migrateTotalFunds( + _recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + mint( + _mintParams: ISynthereumMultiLpLiquidityPool.MintParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + positionLPInfo( + _lp: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + priceFeedIdentifier(overrides?: CallOverrides): Promise; + + redeem( + _redeemParams: ISynthereumMultiLpLiquidityPool.RedeemParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + registerLP( + _lp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + removeLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setFee( + _newFee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setLiquidationReward( + _newLiquidationReward: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMigratedStorage( + _finder: PromiseOrValue, + _oldVersion: PromiseOrValue, + _storageBytes: PromiseOrValue, + _newVersion: PromiseOrValue, + _extraInputParams: PromiseOrValue, + _sourceCollateralAmount: PromiseOrValue, + _actualCollateralAmount: PromiseOrValue, + _price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setOvercollateralization( + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + switchLendingModule( + _lendingId: PromiseOrValue, + _bearingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + + syntheticToken(overrides?: CallOverrides): Promise; + + syntheticTokenSymbol(overrides?: CallOverrides): Promise; + + totalCollateralAmount(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber, BigNumber] & { + usersCollateral: BigNumber; + lpsCollateral: BigNumber; + totalCollateral: BigNumber; + } + >; + + totalSyntheticTokens(overrides?: CallOverrides): Promise; + + transferToLendingManager( + _bearingAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + typology(overrides?: CallOverrides): Promise; + + updatePositions(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + version(overrides?: CallOverrides): Promise; + + callStatic: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + activateLP( + _collateralAmount: PromiseOrValue, + _overCollateralization: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + addLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + collateralDeposited: BigNumber; + newLpCollateralAmount: BigNumber; + } + >; + + collateralRequirement(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralTokenDecimals(overrides?: CallOverrides): Promise; + + feePercentage(overrides?: CallOverrides): Promise; + + getActiveLPs(overrides?: CallOverrides): Promise; + + getMintTradeInfo( + _collateralAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + synthTokensReceived: BigNumber; + feePaid: BigNumber; + } + >; + + getRedeemTradeInfo( + _syntTokensAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + collateralAmountReceived: BigNumber; + feePaid: BigNumber; + } + >; + + getRegisteredLPs(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + initialize( + _params: ISynthereumMultiLpLiquidityPool.InitializationParamsStruct, + overrides?: CallOverrides, + ): Promise; + + isActiveLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isRegisteredLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isTrustedForwarder(forwarder: PromiseOrValue, overrides?: CallOverrides): Promise; + + lendingProtocolInfo( + overrides?: CallOverrides, + ): Promise<[string, string] & { lendingId: string; bearingToken: string }>; + + liquidate( + _lp: PromiseOrValue, + _numSynthTokens: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + liquidationReward(overrides?: CallOverrides): Promise; + + maxTokensCapacity(overrides?: CallOverrides): Promise; + + migrateStorage(overrides?: CallOverrides): Promise< + [number, BigNumber, string] & { + poolVersion: number; + price: BigNumber; + storageBytes: string; + } + >; + + migrateTotalFunds(_recipient: PromiseOrValue, overrides?: CallOverrides): Promise; + + mint( + _mintParams: ISynthereumMultiLpLiquidityPool.MintParamsStruct, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber]>; + + positionLPInfo( + _lp: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + priceFeedIdentifier(overrides?: CallOverrides): Promise; + + redeem( + _redeemParams: ISynthereumMultiLpLiquidityPool.RedeemParamsStruct, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber]>; + + registerLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + removeLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + collateralRemoved: BigNumber; + collateralReceived: BigNumber; + newLpCollateralAmount: BigNumber; + } + >; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + setFee(_newFee: PromiseOrValue, overrides?: CallOverrides): Promise; + + setLiquidationReward(_newLiquidationReward: PromiseOrValue, overrides?: CallOverrides): Promise; + + setMigratedStorage( + _finder: PromiseOrValue, + _oldVersion: PromiseOrValue, + _storageBytes: PromiseOrValue, + _newVersion: PromiseOrValue, + _extraInputParams: PromiseOrValue, + _sourceCollateralAmount: PromiseOrValue, + _actualCollateralAmount: PromiseOrValue, + _price: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + setOvercollateralization( + _overCollateralization: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + switchLendingModule( + _lendingId: PromiseOrValue, + _bearingToken: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + + syntheticToken(overrides?: CallOverrides): Promise; + + syntheticTokenSymbol(overrides?: CallOverrides): Promise; + + totalCollateralAmount(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber, BigNumber] & { + usersCollateral: BigNumber; + lpsCollateral: BigNumber; + totalCollateral: BigNumber; + } + >; + + totalSyntheticTokens(overrides?: CallOverrides): Promise; + + transferToLendingManager( + _bearingAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + typology(overrides?: CallOverrides): Promise; + + updatePositions(overrides?: CallOverrides): Promise; + + version(overrides?: CallOverrides): Promise; + }; + + filters: { + 'ActivatedLP(address)'(lp?: PromiseOrValue | null): ActivatedLPEventFilter; + ActivatedLP(lp?: PromiseOrValue | null): ActivatedLPEventFilter; + + 'DepositedLiquidity(address,uint256,uint256)'( + lp?: PromiseOrValue | null, + collateralSent?: null, + collateralDeposited?: null, + ): DepositedLiquidityEventFilter; + DepositedLiquidity( + lp?: PromiseOrValue | null, + collateralSent?: null, + collateralDeposited?: null, + ): DepositedLiquidityEventFilter; + + 'Liquidated(address,address,uint256,uint256,uint256,uint256)'( + user?: PromiseOrValue | null, + lp?: PromiseOrValue | null, + synthTokensInLiquidation?: null, + collateralAmount?: null, + bonusAmount?: null, + collateralReceived?: null, + ): LiquidatedEventFilter; + Liquidated( + user?: PromiseOrValue | null, + lp?: PromiseOrValue | null, + synthTokensInLiquidation?: null, + collateralAmount?: null, + bonusAmount?: null, + collateralReceived?: null, + ): LiquidatedEventFilter; + + 'Minted(address,tuple,address)'( + user?: PromiseOrValue | null, + mintvalues?: null, + recipient?: null, + ): MintedEventFilter; + Minted(user?: PromiseOrValue | null, mintvalues?: null, recipient?: null): MintedEventFilter; + + 'NewLendingModule(string)'(lendingModuleId?: null): NewLendingModuleEventFilter; + NewLendingModule(lendingModuleId?: null): NewLendingModuleEventFilter; + + 'Redeemed(address,tuple,address)'( + user?: PromiseOrValue | null, + redeemvalues?: null, + recipient?: null, + ): RedeemedEventFilter; + Redeemed(user?: PromiseOrValue | null, redeemvalues?: null, recipient?: null): RedeemedEventFilter; + + 'RegisteredLp(address)'(lp?: PromiseOrValue | null): RegisteredLpEventFilter; + RegisteredLp(lp?: PromiseOrValue | null): RegisteredLpEventFilter; + + 'RoleAdminChanged(bytes32,bytes32,bytes32)'( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + + 'RoleGranted(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + RoleGranted( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + + 'RoleRevoked(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + RoleRevoked( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + + 'SetFeePercentage(uint256)'(newFee?: null): SetFeePercentageEventFilter; + SetFeePercentage(newFee?: null): SetFeePercentageEventFilter; + + 'SetLiquidationReward(uint256)'(newLiquidationReward?: null): SetLiquidationRewardEventFilter; + SetLiquidationReward(newLiquidationReward?: null): SetLiquidationRewardEventFilter; + + 'SetOvercollateralization(address,uint256)'( + lp?: PromiseOrValue | null, + overCollateralization?: null, + ): SetOvercollateralizationEventFilter; + SetOvercollateralization( + lp?: PromiseOrValue | null, + overCollateralization?: null, + ): SetOvercollateralizationEventFilter; + + 'WithdrawnLiquidity(address,uint256,uint256)'( + lp?: PromiseOrValue | null, + collateralWithdrawn?: null, + collateralReceived?: null, + ): WithdrawnLiquidityEventFilter; + WithdrawnLiquidity( + lp?: PromiseOrValue | null, + collateralWithdrawn?: null, + collateralReceived?: null, + ): WithdrawnLiquidityEventFilter; + }; + + estimateGas: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + activateLP( + _collateralAmount: PromiseOrValue, + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralRequirement(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralTokenDecimals(overrides?: CallOverrides): Promise; + + feePercentage(overrides?: CallOverrides): Promise; + + getActiveLPs(overrides?: CallOverrides): Promise; + + getMintTradeInfo(_collateralAmount: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRedeemTradeInfo(_syntTokensAmount: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRegisteredLPs(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + initialize( + _params: ISynthereumMultiLpLiquidityPool.InitializationParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isActiveLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isRegisteredLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isTrustedForwarder(forwarder: PromiseOrValue, overrides?: CallOverrides): Promise; + + lendingProtocolInfo(overrides?: CallOverrides): Promise; + + liquidate( + _lp: PromiseOrValue, + _numSynthTokens: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidationReward(overrides?: CallOverrides): Promise; + + maxTokensCapacity(overrides?: CallOverrides): Promise; + + migrateStorage(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + migrateTotalFunds( + _recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + mint( + _mintParams: ISynthereumMultiLpLiquidityPool.MintParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + positionLPInfo(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + priceFeedIdentifier(overrides?: CallOverrides): Promise; + + redeem( + _redeemParams: ISynthereumMultiLpLiquidityPool.RedeemParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + registerLP( + _lp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + removeLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setFee( + _newFee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setLiquidationReward( + _newLiquidationReward: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMigratedStorage( + _finder: PromiseOrValue, + _oldVersion: PromiseOrValue, + _storageBytes: PromiseOrValue, + _newVersion: PromiseOrValue, + _extraInputParams: PromiseOrValue, + _sourceCollateralAmount: PromiseOrValue, + _actualCollateralAmount: PromiseOrValue, + _price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setOvercollateralization( + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + switchLendingModule( + _lendingId: PromiseOrValue, + _bearingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + + syntheticToken(overrides?: CallOverrides): Promise; + + syntheticTokenSymbol(overrides?: CallOverrides): Promise; + + totalCollateralAmount(overrides?: CallOverrides): Promise; + + totalSyntheticTokens(overrides?: CallOverrides): Promise; + + transferToLendingManager( + _bearingAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + typology(overrides?: CallOverrides): Promise; + + updatePositions(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + version(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + activateLP( + _collateralAmount: PromiseOrValue, + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + addLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + collateralRequirement(overrides?: CallOverrides): Promise; + + collateralToken(overrides?: CallOverrides): Promise; + + collateralTokenDecimals(overrides?: CallOverrides): Promise; + + feePercentage(overrides?: CallOverrides): Promise; + + getActiveLPs(overrides?: CallOverrides): Promise; + + getMintTradeInfo( + _collateralAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRedeemTradeInfo( + _syntTokensAmount: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRegisteredLPs(overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + initialize( + _params: ISynthereumMultiLpLiquidityPool.InitializationParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isActiveLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isRegisteredLP(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + isTrustedForwarder(forwarder: PromiseOrValue, overrides?: CallOverrides): Promise; + + lendingProtocolInfo(overrides?: CallOverrides): Promise; + + liquidate( + _lp: PromiseOrValue, + _numSynthTokens: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + liquidationReward(overrides?: CallOverrides): Promise; + + maxTokensCapacity(overrides?: CallOverrides): Promise; + + migrateStorage(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + migrateTotalFunds( + _recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + mint( + _mintParams: ISynthereumMultiLpLiquidityPool.MintParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + positionLPInfo(_lp: PromiseOrValue, overrides?: CallOverrides): Promise; + + priceFeedIdentifier(overrides?: CallOverrides): Promise; + + redeem( + _redeemParams: ISynthereumMultiLpLiquidityPool.RedeemParamsStruct, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + registerLP( + _lp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + removeLiquidity( + _collateralAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setFee( + _newFee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setLiquidationReward( + _newLiquidationReward: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMigratedStorage( + _finder: PromiseOrValue, + _oldVersion: PromiseOrValue, + _storageBytes: PromiseOrValue, + _newVersion: PromiseOrValue, + _extraInputParams: PromiseOrValue, + _sourceCollateralAmount: PromiseOrValue, + _actualCollateralAmount: PromiseOrValue, + _price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setOvercollateralization( + _overCollateralization: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + switchLendingModule( + _lendingId: PromiseOrValue, + _bearingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + + syntheticToken(overrides?: CallOverrides): Promise; + + syntheticTokenSymbol(overrides?: CallOverrides): Promise; + + totalCollateralAmount(overrides?: CallOverrides): Promise; + + totalSyntheticTokens(overrides?: CallOverrides): Promise; + + transferToLendingManager( + _bearingAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + typology(overrides?: CallOverrides): Promise; + + updatePositions(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + version(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/jarvis/contracts/ethers/JarvisSynthereumPriceFeed.ts b/src/apps/jarvis/contracts/ethers/JarvisSynthereumPriceFeed.ts new file mode 100644 index 000000000..c92a9f78a --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/JarvisSynthereumPriceFeed.ts @@ -0,0 +1,683 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common'; + +export declare namespace SynthereumChainlinkPriceFeed { + export type RolesStruct = { + admin: PromiseOrValue; + maintainer: PromiseOrValue; + }; + + export type RolesStructOutput = [string, string] & { + admin: string; + maintainer: string; + }; +} + +export interface JarvisSynthereumPriceFeedInterface extends utils.Interface { + functions: { + 'DEFAULT_ADMIN_ROLE()': FunctionFragment; + 'MAINTAINER_ROLE()': FunctionFragment; + 'getAggregator(bytes32)': FunctionFragment; + 'getLatestPrice(bytes32)': FunctionFragment; + 'getLatestPrices(bytes32[])': FunctionFragment; + 'getRoleAdmin(bytes32)': FunctionFragment; + 'getRoleMember(bytes32,uint256)': FunctionFragment; + 'getRoleMemberCount(bytes32)': FunctionFragment; + 'getRoundPrice(bytes32,uint80)': FunctionFragment; + 'grantRole(bytes32,address)': FunctionFragment; + 'hasRole(bytes32,address)': FunctionFragment; + 'isPriceSupported(bytes32)': FunctionFragment; + 'pairs(bytes32)': FunctionFragment; + 'removePair(bytes32)': FunctionFragment; + 'renounceRole(bytes32,address)': FunctionFragment; + 'revokeRole(bytes32,address)': FunctionFragment; + 'setPair(uint8,bytes32,address,bytes32[])': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'synthereumFinder()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DEFAULT_ADMIN_ROLE' + | 'MAINTAINER_ROLE' + | 'getAggregator' + | 'getLatestPrice' + | 'getLatestPrices' + | 'getRoleAdmin' + | 'getRoleMember' + | 'getRoleMemberCount' + | 'getRoundPrice' + | 'grantRole' + | 'hasRole' + | 'isPriceSupported' + | 'pairs' + | 'removePair' + | 'renounceRole' + | 'revokeRole' + | 'setPair' + | 'supportsInterface' + | 'synthereumFinder', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'MAINTAINER_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'getAggregator', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'getLatestPrice', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'getLatestPrices', values: [PromiseOrValue[]]): string; + encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'getRoleMember', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'getRoleMemberCount', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'getRoundPrice', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'grantRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue, PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'isPriceSupported', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'pairs', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'removePair', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'renounceRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'revokeRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'setPair', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + ], + ): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'synthereumFinder', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MAINTAINER_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getAggregator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getLatestPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getLatestPrices', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMember', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleMemberCount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoundPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isPriceSupported', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pairs', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'removePair', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPair', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'synthereumFinder', data: BytesLike): Result; + + events: { + 'RemovePair(bytes32)': EventFragment; + 'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment; + 'RoleGranted(bytes32,address,address)': EventFragment; + 'RoleRevoked(bytes32,address,address)': EventFragment; + 'SetPair(bytes32,uint8,address,bytes32[])': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'RemovePair'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SetPair'): EventFragment; +} + +export interface RemovePairEventObject { + priceIdentifier: string; +} +export type RemovePairEvent = TypedEvent<[string], RemovePairEventObject>; + +export type RemovePairEventFilter = TypedEventFilter; + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>; + +export type RoleAdminChangedEventFilter = TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface SetPairEventObject { + priceIdentifier: string; + kind: number; + aggregator: string; + intermediatePairs: string[]; +} +export type SetPairEvent = TypedEvent<[string, number, string, string[]], SetPairEventObject>; + +export type SetPairEventFilter = TypedEventFilter; + +export interface JarvisSynthereumPriceFeed extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JarvisSynthereumPriceFeedInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise<[string]>; + + getAggregator( + _priceIdentifier: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string] & { aggregator: string }>; + + getLatestPrice( + _priceIdentifier: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { price: BigNumber }>; + + getLatestPrices( + _priceIdentifiers: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise<[BigNumber[]] & { prices: BigNumber[] }>; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string]>; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + getRoundPrice( + _priceIdentifier: PromiseOrValue, + _roundId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { price: BigNumber }>; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean]>; + + isPriceSupported( + _priceIdentifier: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean] & { isSupported: boolean }>; + + pairs( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [boolean, number, string] & { + isSupported: boolean; + priceType: number; + aggregator: string; + } + >; + + removePair( + _priceIdentifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setPair( + _kind: PromiseOrValue, + _priceIdentifier: PromiseOrValue, + _aggregator: PromiseOrValue, + _intermediatePairs: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + synthereumFinder(overrides?: CallOverrides): Promise<[string]>; + }; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + getAggregator(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLatestPrice(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLatestPrices(_priceIdentifiers: PromiseOrValue[], overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoundPrice( + _priceIdentifier: PromiseOrValue, + _roundId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isPriceSupported(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + pairs( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [boolean, number, string] & { + isSupported: boolean; + priceType: number; + aggregator: string; + } + >; + + removePair( + _priceIdentifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setPair( + _kind: PromiseOrValue, + _priceIdentifier: PromiseOrValue, + _aggregator: PromiseOrValue, + _intermediatePairs: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + + callStatic: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + getAggregator(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLatestPrice(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLatestPrices(_priceIdentifiers: PromiseOrValue[], overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoundPrice( + _priceIdentifier: PromiseOrValue, + _roundId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isPriceSupported(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + pairs( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [boolean, number, string] & { + isSupported: boolean; + priceType: number; + aggregator: string; + } + >; + + removePair(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + setPair( + _kind: PromiseOrValue, + _priceIdentifier: PromiseOrValue, + _aggregator: PromiseOrValue, + _intermediatePairs: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + }; + + filters: { + 'RemovePair(bytes32)'(priceIdentifier?: PromiseOrValue | null): RemovePairEventFilter; + RemovePair(priceIdentifier?: PromiseOrValue | null): RemovePairEventFilter; + + 'RoleAdminChanged(bytes32,bytes32,bytes32)'( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + + 'RoleGranted(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + RoleGranted( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + + 'RoleRevoked(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + RoleRevoked( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + + 'SetPair(bytes32,uint8,address,bytes32[])'( + priceIdentifier?: PromiseOrValue | null, + kind?: null, + aggregator?: null, + intermediatePairs?: null, + ): SetPairEventFilter; + SetPair( + priceIdentifier?: PromiseOrValue | null, + kind?: null, + aggregator?: null, + intermediatePairs?: null, + ): SetPairEventFilter; + }; + + estimateGas: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + getAggregator(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLatestPrice(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLatestPrices(_priceIdentifiers: PromiseOrValue[], overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoundPrice( + _priceIdentifier: PromiseOrValue, + _roundId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isPriceSupported(_priceIdentifier: PromiseOrValue, overrides?: CallOverrides): Promise; + + pairs(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + removePair( + _priceIdentifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setPair( + _kind: PromiseOrValue, + _priceIdentifier: PromiseOrValue, + _aggregator: PromiseOrValue, + _intermediatePairs: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MAINTAINER_ROLE(overrides?: CallOverrides): Promise; + + getAggregator( + _priceIdentifier: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getLatestPrice( + _priceIdentifier: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getLatestPrices( + _priceIdentifiers: PromiseOrValue[], + overrides?: CallOverrides, + ): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleMember( + role: PromiseOrValue, + index: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + getRoleMemberCount(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoundPrice( + _priceIdentifier: PromiseOrValue, + _roundId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isPriceSupported( + _priceIdentifier: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + pairs(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + removePair( + _priceIdentifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setPair( + _kind: PromiseOrValue, + _priceIdentifier: PromiseOrValue, + _aggregator: PromiseOrValue, + _intermediatePairs: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + supportsInterface(interfaceId: PromiseOrValue, overrides?: CallOverrides): Promise; + + synthereumFinder(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/jarvis/contracts/ethers/common.ts b/src/apps/jarvis/contracts/ethers/common.ts new file mode 100644 index 000000000..35f31be99 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/common.ts @@ -0,0 +1,32 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from '@ethersproject/providers'; +import type { Event, EventFilter } from 'ethers'; + +export interface TypedEvent = any, TArgsObject = any> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + (eventFilter: TypedEventFilter, listener: TypedListener): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory ? C : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never; + +export type PromiseOrValue = T | Promise; diff --git a/src/apps/jarvis/contracts/ethers/factories/JarvisSynth__factory.ts b/src/apps/jarvis/contracts/ethers/factories/JarvisSynth__factory.ts new file mode 100644 index 000000000..6ac610a84 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/factories/JarvisSynth__factory.ts @@ -0,0 +1,872 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { JarvisSynth, JarvisSynthInterface } from '../JarvisSynth'; + +const _abi = [ + { + inputs: [ + { + internalType: 'string', + name: 'tokenName', + type: 'string', + }, + { + internalType: 'string', + name: 'tokenSymbol', + type: 'string', + }, + { + internalType: 'uint8', + name: 'tokenDecimals', + type: 'uint8', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'previousAdminRole', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'newAdminRole', + type: 'bytes32', + }, + ], + name: 'RoleAdminChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleGranted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleRevoked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + inputs: [], + name: 'BURNER_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'DEFAULT_ADMIN_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MINTER_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'addAdmin', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'addAdminAndMinterAndBurner', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'addBurner', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'addMinter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + ], + name: 'allowance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'burn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'subtractedValue', + type: 'uint256', + }, + ], + name: 'decreaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'getAdminMembers', + outputs: [ + { + internalType: 'address[]', + name: '', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getBurnerMembers', + outputs: [ + { + internalType: 'address[]', + name: '', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getMinterMembers', + outputs: [ + { + internalType: 'address[]', + name: '', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleAdmin', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'getRoleMember', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleMemberCount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'grantRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'hasRole', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'addedValue', + type: 'uint256', + }, + ], + name: 'increaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'isAdmin', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'isBurner', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'isMinter', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'mint', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'renounceAdmin', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'renounceAdminAndMinterAndBurner', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'renounceBurner', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'renounceMinter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'renounceRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'revokeRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class JarvisSynth__factory { + static readonly abi = _abi; + static createInterface(): JarvisSynthInterface { + return new utils.Interface(_abi) as JarvisSynthInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): JarvisSynth { + return new Contract(address, _abi, signerOrProvider) as JarvisSynth; + } +} diff --git a/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumFinder__factory.ts b/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumFinder__factory.ts new file mode 100644 index 000000000..994036d25 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumFinder__factory.ts @@ -0,0 +1,382 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { + JarvisSynthereumFinder, + JarvisSynthereumFinderInterface, + SynthereumFinder, +} from '../JarvisSynthereumFinder'; + +const _abi = [ + { + inputs: [ + { + components: [ + { + internalType: 'address', + name: 'admin', + type: 'address', + }, + { + internalType: 'address', + name: 'maintainer', + type: 'address', + }, + ], + internalType: 'struct SynthereumFinder.Roles', + name: '_roles', + type: 'tuple', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'interfaceName', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'newImplementationAddress', + type: 'address', + }, + ], + name: 'InterfaceImplementationChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'previousAdminRole', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'newAdminRole', + type: 'bytes32', + }, + ], + name: 'RoleAdminChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleGranted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleRevoked', + type: 'event', + }, + { + inputs: [], + name: 'DEFAULT_ADMIN_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MAINTAINER_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'interfaceName', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'implementationAddress', + type: 'address', + }, + ], + name: 'changeImplementationAddress', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'interfaceName', + type: 'bytes32', + }, + ], + name: 'getImplementationAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleAdmin', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'getRoleMember', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleMemberCount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'grantRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'hasRole', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + name: 'interfacesImplemented', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'renounceRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'revokeRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class JarvisSynthereumFinder__factory { + static readonly abi = _abi; + static createInterface(): JarvisSynthereumFinderInterface { + return new utils.Interface(_abi) as JarvisSynthereumFinderInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): JarvisSynthereumFinder { + return new Contract(address, _abi, signerOrProvider) as JarvisSynthereumFinder; + } +} diff --git a/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumLiquidityPool__factory.ts b/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumLiquidityPool__factory.ts new file mode 100644 index 000000000..a765d84e1 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumLiquidityPool__factory.ts @@ -0,0 +1,1422 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { + JarvisSynthereumLiquidityPool, + JarvisSynthereumLiquidityPoolInterface, +} from '../JarvisSynthereumLiquidityPool'; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'lp', + type: 'address', + }, + ], + name: 'ActivatedLP', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'lp', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'collateralSent', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'collateralDeposited', + type: 'uint256', + }, + ], + name: 'DepositedLiquidity', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'lp', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'synthTokensInLiquidation', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'collateralAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'bonusAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'collateralReceived', + type: 'uint256', + }, + ], + name: 'Liquidated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + components: [ + { + internalType: 'uint256', + name: 'totalCollateral', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'exchangeAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'feeAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'numTokens', + type: 'uint256', + }, + ], + indexed: false, + internalType: 'struct ISynthereumMultiLpLiquidityPoolEvents.MintValues', + name: 'mintvalues', + type: 'tuple', + }, + { + indexed: false, + internalType: 'address', + name: 'recipient', + type: 'address', + }, + ], + name: 'Minted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'lendingModuleId', + type: 'string', + }, + ], + name: 'NewLendingModule', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + components: [ + { + internalType: 'uint256', + name: 'numTokens', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'exchangeAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'feeAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'collateralAmount', + type: 'uint256', + }, + ], + indexed: false, + internalType: 'struct ISynthereumMultiLpLiquidityPoolEvents.RedeemValues', + name: 'redeemvalues', + type: 'tuple', + }, + { + indexed: false, + internalType: 'address', + name: 'recipient', + type: 'address', + }, + ], + name: 'Redeemed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'lp', + type: 'address', + }, + ], + name: 'RegisteredLp', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'previousAdminRole', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'newAdminRole', + type: 'bytes32', + }, + ], + name: 'RoleAdminChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleGranted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleRevoked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'newFee', + type: 'uint256', + }, + ], + name: 'SetFeePercentage', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'newLiquidationReward', + type: 'uint256', + }, + ], + name: 'SetLiquidationReward', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'lp', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'overCollateralization', + type: 'uint256', + }, + ], + name: 'SetOvercollateralization', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'lp', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'collateralWithdrawn', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'collateralReceived', + type: 'uint256', + }, + ], + name: 'WithdrawnLiquidity', + type: 'event', + }, + { + inputs: [], + name: 'DEFAULT_ADMIN_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MAINTAINER_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_collateralAmount', + type: 'uint256', + }, + { + internalType: 'uint128', + name: '_overCollateralization', + type: 'uint128', + }, + ], + name: 'activateLP', + outputs: [ + { + internalType: 'uint256', + name: 'collateralDeposited', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_collateralAmount', + type: 'uint256', + }, + ], + name: 'addLiquidity', + outputs: [ + { + internalType: 'uint256', + name: 'collateralDeposited', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'newLpCollateralAmount', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'collateralRequirement', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'collateralToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'collateralTokenDecimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'feePercentage', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getActiveLPs', + outputs: [ + { + internalType: 'address[]', + name: '', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_collateralAmount', + type: 'uint256', + }, + ], + name: 'getMintTradeInfo', + outputs: [ + { + internalType: 'uint256', + name: 'synthTokensReceived', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'feePaid', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_syntTokensAmount', + type: 'uint256', + }, + ], + name: 'getRedeemTradeInfo', + outputs: [ + { + internalType: 'uint256', + name: 'collateralAmountReceived', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'feePaid', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getRegisteredLPs', + outputs: [ + { + internalType: 'address[]', + name: '', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleAdmin', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'getRoleMember', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleMemberCount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'grantRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'hasRole', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'contract ISynthereumFinder', + name: 'finder', + type: 'address', + }, + { + internalType: 'uint8', + name: 'version', + type: 'uint8', + }, + { + internalType: 'contract IStandardERC20', + name: 'collateralToken', + type: 'address', + }, + { + internalType: 'contract IMintableBurnableERC20', + name: 'syntheticToken', + type: 'address', + }, + { + components: [ + { + internalType: 'address', + name: 'admin', + type: 'address', + }, + { + internalType: 'address', + name: 'maintainer', + type: 'address', + }, + ], + internalType: 'struct ISynthereumMultiLpLiquidityPool.Roles', + name: 'roles', + type: 'tuple', + }, + { + internalType: 'uint64', + name: 'fee', + type: 'uint64', + }, + { + internalType: 'bytes32', + name: 'priceIdentifier', + type: 'bytes32', + }, + { + internalType: 'uint128', + name: 'overCollateralRequirement', + type: 'uint128', + }, + { + internalType: 'uint64', + name: 'liquidationReward', + type: 'uint64', + }, + { + internalType: 'string', + name: 'lendingModuleId', + type: 'string', + }, + ], + internalType: 'struct ISynthereumMultiLpLiquidityPool.InitializationParams', + name: '_params', + type: 'tuple', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_lp', + type: 'address', + }, + ], + name: 'isActiveLP', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_lp', + type: 'address', + }, + ], + name: 'isRegisteredLP', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'forwarder', + type: 'address', + }, + ], + name: 'isTrustedForwarder', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lendingProtocolInfo', + outputs: [ + { + internalType: 'string', + name: 'lendingId', + type: 'string', + }, + { + internalType: 'address', + name: 'bearingToken', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_lp', + type: 'address', + }, + { + internalType: 'uint256', + name: '_numSynthTokens', + type: 'uint256', + }, + ], + name: 'liquidate', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'liquidationReward', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'maxTokensCapacity', + outputs: [ + { + internalType: 'uint256', + name: 'maxCapacity', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'migrateStorage', + outputs: [ + { + internalType: 'uint8', + name: 'poolVersion', + type: 'uint8', + }, + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + { + internalType: 'bytes', + name: 'storageBytes', + type: 'bytes', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_recipient', + type: 'address', + }, + ], + name: 'migrateTotalFunds', + outputs: [ + { + internalType: 'uint256', + name: 'migrationAmount', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'minNumTokens', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'collateralAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'expiration', + type: 'uint256', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + ], + internalType: 'struct ISynthereumMultiLpLiquidityPool.MintParams', + name: '_mintParams', + type: 'tuple', + }, + ], + name: 'mint', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_lp', + type: 'address', + }, + ], + name: 'positionLPInfo', + outputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'actualCollateralAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokensCollateralized', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'overCollateralization', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'capacity', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'utilization', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'coverage', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'mintShares', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'redeemShares', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'interestShares', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'isOvercollateralized', + type: 'bool', + }, + ], + internalType: 'struct ISynthereumMultiLpLiquidityPool.LPInfo', + name: 'info', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'priceFeedIdentifier', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'numTokens', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minCollateral', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'expiration', + type: 'uint256', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + ], + internalType: 'struct ISynthereumMultiLpLiquidityPool.RedeemParams', + name: '_redeemParams', + type: 'tuple', + }, + ], + name: 'redeem', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_lp', + type: 'address', + }, + ], + name: 'registerLP', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_collateralAmount', + type: 'uint256', + }, + ], + name: 'removeLiquidity', + outputs: [ + { + internalType: 'uint256', + name: 'collateralRemoved', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'collateralReceived', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'newLpCollateralAmount', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'renounceRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'revokeRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint64', + name: '_newFee', + type: 'uint64', + }, + ], + name: 'setFee', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint64', + name: '_newLiquidationReward', + type: 'uint64', + }, + ], + name: 'setLiquidationReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract ISynthereumFinder', + name: '_finder', + type: 'address', + }, + { + internalType: 'uint8', + name: '_oldVersion', + type: 'uint8', + }, + { + internalType: 'bytes', + name: '_storageBytes', + type: 'bytes', + }, + { + internalType: 'uint8', + name: '_newVersion', + type: 'uint8', + }, + { + internalType: 'bytes', + name: '_extraInputParams', + type: 'bytes', + }, + { + internalType: 'uint256', + name: '_sourceCollateralAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_actualCollateralAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_price', + type: 'uint256', + }, + ], + name: 'setMigratedStorage', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint128', + name: '_overCollateralization', + type: 'uint128', + }, + ], + name: 'setOvercollateralization', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: '_lendingId', + type: 'string', + }, + { + internalType: 'address', + name: '_bearingToken', + type: 'address', + }, + ], + name: 'switchLendingModule', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'synthereumFinder', + outputs: [ + { + internalType: 'contract ISynthereumFinder', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'syntheticToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'syntheticTokenSymbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalCollateralAmount', + outputs: [ + { + internalType: 'uint256', + name: 'usersCollateral', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'lpsCollateral', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'totalCollateral', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSyntheticTokens', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_bearingAmount', + type: 'uint256', + }, + ], + name: 'transferToLendingManager', + outputs: [ + { + internalType: 'uint256', + name: 'bearingAmountOut', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'typology', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'updatePositions', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'version', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class JarvisSynthereumLiquidityPool__factory { + static readonly abi = _abi; + static createInterface(): JarvisSynthereumLiquidityPoolInterface { + return new utils.Interface(_abi) as JarvisSynthereumLiquidityPoolInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): JarvisSynthereumLiquidityPool { + return new Contract(address, _abi, signerOrProvider) as JarvisSynthereumLiquidityPool; + } +} diff --git a/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumPriceFeed__factory.ts b/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumPriceFeed__factory.ts new file mode 100644 index 000000000..ff15156b4 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/factories/JarvisSynthereumPriceFeed__factory.ts @@ -0,0 +1,539 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { + JarvisSynthereumPriceFeed, + JarvisSynthereumPriceFeedInterface, + SynthereumChainlinkPriceFeed, +} from '../JarvisSynthereumPriceFeed'; + +const _abi = [ + { + inputs: [ + { + internalType: 'contract ISynthereumFinder', + name: '_synthereumFinder', + type: 'address', + }, + { + components: [ + { + internalType: 'address', + name: 'admin', + type: 'address', + }, + { + internalType: 'address', + name: 'maintainer', + type: 'address', + }, + ], + internalType: 'struct SynthereumChainlinkPriceFeed.Roles', + name: '_roles', + type: 'tuple', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'priceIdentifier', + type: 'bytes32', + }, + ], + name: 'RemovePair', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'previousAdminRole', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'newAdminRole', + type: 'bytes32', + }, + ], + name: 'RoleAdminChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleGranted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleRevoked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'priceIdentifier', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'enum ISynthereumChainlinkPriceFeed.Type', + name: 'kind', + type: 'uint8', + }, + { + indexed: false, + internalType: 'address', + name: 'aggregator', + type: 'address', + }, + { + indexed: false, + internalType: 'bytes32[]', + name: 'intermediatePairs', + type: 'bytes32[]', + }, + ], + name: 'SetPair', + type: 'event', + }, + { + inputs: [], + name: 'DEFAULT_ADMIN_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MAINTAINER_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_priceIdentifier', + type: 'bytes32', + }, + ], + name: 'getAggregator', + outputs: [ + { + internalType: 'contract AggregatorV3Interface', + name: 'aggregator', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_priceIdentifier', + type: 'bytes32', + }, + ], + name: 'getLatestPrice', + outputs: [ + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32[]', + name: '_priceIdentifiers', + type: 'bytes32[]', + }, + ], + name: 'getLatestPrices', + outputs: [ + { + internalType: 'uint256[]', + name: 'prices', + type: 'uint256[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleAdmin', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'getRoleMember', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleMemberCount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_priceIdentifier', + type: 'bytes32', + }, + { + internalType: 'uint80', + name: '_roundId', + type: 'uint80', + }, + ], + name: 'getRoundPrice', + outputs: [ + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'grantRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'hasRole', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_priceIdentifier', + type: 'bytes32', + }, + ], + name: 'isPriceSupported', + outputs: [ + { + internalType: 'bool', + name: 'isSupported', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + name: 'pairs', + outputs: [ + { + internalType: 'bool', + name: 'isSupported', + type: 'bool', + }, + { + internalType: 'enum ISynthereumChainlinkPriceFeed.Type', + name: 'priceType', + type: 'uint8', + }, + { + internalType: 'contract AggregatorV3Interface', + name: 'aggregator', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_priceIdentifier', + type: 'bytes32', + }, + ], + name: 'removePair', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'renounceRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'revokeRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'enum ISynthereumChainlinkPriceFeed.Type', + name: '_kind', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: '_priceIdentifier', + type: 'bytes32', + }, + { + internalType: 'address', + name: '_aggregator', + type: 'address', + }, + { + internalType: 'bytes32[]', + name: '_intermediatePairs', + type: 'bytes32[]', + }, + ], + name: 'setPair', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'synthereumFinder', + outputs: [ + { + internalType: 'contract ISynthereumFinder', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class JarvisSynthereumPriceFeed__factory { + static readonly abi = _abi; + static createInterface(): JarvisSynthereumPriceFeedInterface { + return new utils.Interface(_abi) as JarvisSynthereumPriceFeedInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): JarvisSynthereumPriceFeed { + return new Contract(address, _abi, signerOrProvider) as JarvisSynthereumPriceFeed; + } +} diff --git a/src/apps/jarvis/contracts/ethers/factories/index.ts b/src/apps/jarvis/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..2572f35f7 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/factories/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { JarvisSynth__factory } from './JarvisSynth__factory'; +export { JarvisSynthereumFinder__factory } from './JarvisSynthereumFinder__factory'; +export { JarvisSynthereumLiquidityPool__factory } from './JarvisSynthereumLiquidityPool__factory'; +export { JarvisSynthereumPriceFeed__factory } from './JarvisSynthereumPriceFeed__factory'; diff --git a/src/apps/jarvis/contracts/ethers/index.ts b/src/apps/jarvis/contracts/ethers/index.ts new file mode 100644 index 000000000..7092d0e32 --- /dev/null +++ b/src/apps/jarvis/contracts/ethers/index.ts @@ -0,0 +1,12 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { JarvisSynth } from './JarvisSynth'; +export type { JarvisSynthereumFinder } from './JarvisSynthereumFinder'; +export type { JarvisSynthereumLiquidityPool } from './JarvisSynthereumLiquidityPool'; +export type { JarvisSynthereumPriceFeed } from './JarvisSynthereumPriceFeed'; +export * as factories from './factories'; +export { JarvisSynth__factory } from './factories/JarvisSynth__factory'; +export { JarvisSynthereumFinder__factory } from './factories/JarvisSynthereumFinder__factory'; +export { JarvisSynthereumLiquidityPool__factory } from './factories/JarvisSynthereumLiquidityPool__factory'; +export { JarvisSynthereumPriceFeed__factory } from './factories/JarvisSynthereumPriceFeed__factory'; diff --git a/src/apps/jarvis/contracts/index.ts b/src/apps/jarvis/contracts/index.ts new file mode 100644 index 000000000..825cb810f --- /dev/null +++ b/src/apps/jarvis/contracts/index.ts @@ -0,0 +1,40 @@ +import { Injectable, Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { ContractFactory } from '~contract/contracts'; +import { Network } from '~types/network.interface'; + +import { + JarvisSynth__factory, + JarvisSynthereumFinder__factory, + JarvisSynthereumLiquidityPool__factory, + JarvisSynthereumPriceFeed__factory, +} from './ethers'; + +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class JarvisContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + jarvisSynth({ address, network }: ContractOpts) { + return JarvisSynth__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + jarvisSynthereumFinder({ address, network }: ContractOpts) { + return JarvisSynthereumFinder__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + jarvisSynthereumLiquidityPool({ address, network }: ContractOpts) { + return JarvisSynthereumLiquidityPool__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + jarvisSynthereumPriceFeed({ address, network }: ContractOpts) { + return JarvisSynthereumPriceFeed__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { JarvisSynth } from './ethers'; +export type { JarvisSynthereumFinder } from './ethers'; +export type { JarvisSynthereumLiquidityPool } from './ethers'; +export type { JarvisSynthereumPriceFeed } from './ethers'; diff --git a/src/apps/jarvis/jarvis.definition.ts b/src/apps/jarvis/jarvis.definition.ts new file mode 100644 index 000000000..5785b3a82 --- /dev/null +++ b/src/apps/jarvis/jarvis.definition.ts @@ -0,0 +1,38 @@ +import { Register } from '~app-toolkit/decorators'; +import { AppDefinition, appDefinition } from '~app/app.definition'; +import { AppAction, AppTag, GroupType } from '~app/app.interface'; +import { Network } from '~types/network.interface'; + +export const JARVIS_DEFINITION = appDefinition({ + id: 'jarvis', + name: 'Jarvis', + description: `Using stable and liquid on-chain fiat currencies to increase financial inclusion and facilitate the access to liquidity and yield to everyone.`, + url: 'https://jarvis.network/', + tags: [AppTag.SYNTHETICS], + + links: { + discord: 'https://discord.com/invite/2GbKwERXDc', + medium: 'https://medium.com/jarvis-network', + github: 'https://gitlab.com/jarvis-network', + twitter: 'https://twitter.com/jarvis_network', + }, + + groups: { + synth: { + id: 'synth', + type: GroupType.TOKEN, + label: 'Synths', + }, + }, + + supportedNetworks: { + [Network.POLYGON_MAINNET]: [AppAction.VIEW], + }, +}); + +@Register.AppDefinition(JARVIS_DEFINITION.id) +export class JarvisAppDefinition extends AppDefinition { + constructor() { + super(JARVIS_DEFINITION); + } +} diff --git a/src/apps/jarvis/jarvis.module.ts b/src/apps/jarvis/jarvis.module.ts new file mode 100644 index 000000000..2759cdfab --- /dev/null +++ b/src/apps/jarvis/jarvis.module.ts @@ -0,0 +1,12 @@ +import { Register } from '~app-toolkit/decorators'; +import { AbstractApp } from '~app/app.dynamic-module'; + +import { JarvisContractFactory } from './contracts'; +import { JarvisAppDefinition, JARVIS_DEFINITION } from './jarvis.definition'; +import { PolygonJarvisSynthTokenFetcher } from './polygon/jarvis.synth.token-fetcher'; + +@Register.AppModule({ + appId: JARVIS_DEFINITION.id, + providers: [JarvisAppDefinition, JarvisContractFactory, PolygonJarvisSynthTokenFetcher], +}) +export class JarvisAppModule extends AbstractApp() {} diff --git a/src/apps/jarvis/polygon/jarvis.synth.token-fetcher.ts b/src/apps/jarvis/polygon/jarvis.synth.token-fetcher.ts new file mode 100644 index 000000000..0bda72b26 --- /dev/null +++ b/src/apps/jarvis/polygon/jarvis.synth.token-fetcher.ts @@ -0,0 +1,28 @@ +import { PositionTemplate } from '~app-toolkit/decorators/position-template.decorator'; + +import { JarvisSynthTokenFetcher } from '../common/jarvis.synth.token-fetcher'; + +@PositionTemplate() +export class PolygonJarvisSynthTokenFetcher extends JarvisSynthTokenFetcher { + groupLabel = 'Synths'; + poolAddresses = [ + '0x36572797cc569a74731e0738ef56e3b8ce3f309c', + '0x30e97dc680ee97ff65b5188d34fb4ea20b38d710', + '0x06440a2da257233790b5355322dad82c10f0389a', + '0x8734cf40a402d4191bd4d7a64beef12e4c452def', + '0x72e7da7c0dd3c082dfe8f22343d6ad70286e07bd', + '0x65a7b4ff684c2d08c115d55a4b089bf4e92f5003', + '0x36d6d1d6249fbc6ebd0fc28fd46c846fb69b9074', + '0xaec757bf73cc1f4609a1459205835dd40b4e3f29', + '0x7ac6515f4772fcb6eeef978f60d996b21c56089d', + '0x25e9f976f5020f6bf2d417b231e5f414b7700e31', + '0x63b5891895a57c31d5ec2a8a5521b6ee67700f9f', + '0x8ae34663b4622336818e334dc42f92c41efbfa35', + '0x166e4b3ec3f81f32f0863b9cd63621181d6bfed5', + '0xc8442072cf1e131506eac7df33ea8910e1d5cfdd', + '0xbe813590e1b191120f5df3343368f8a2f579514c', + '0x874b8d8e818c79166f00b64fb161925e3e95921f', + '0x44a56d2b0fd2f6c480587f854970918e0ddc53cd', + '0x9db17967f2c14beea791a2fd4654f8ddc11d990b', + ]; +}