diff --git a/cadence/tests/forked_rebalance_scenario1_test.cdc b/cadence/tests/forked_rebalance_scenario1_test.cdc new file mode 100644 index 00000000..d54db4b3 --- /dev/null +++ b/cadence/tests/forked_rebalance_scenario1_test.cdc @@ -0,0 +1,214 @@ +#test_fork(network: "mainnet", height: nil) + +import Test +import BlockchainHelpers + +import "test_helpers.cdc" + +// standards +import "EVM" +// FlowYieldVaults platform +import "FlowYieldVaults" +// vm bridge +import "FlowEVMBridgeConfig" +// live oracles +import "ERC4626PriceOracles" +// mocks +import "MockOracle" +import "MockSwapper" +// other +import "FlowToken" +import "MOET" +import "YieldToken" +import "FlowYieldVaultsStrategies" +import "FlowCreditMarket" + + +// check (and update) flow.json for correct addresses +// testnet addresses +// access(all) let flowYieldVaultsAccount = Test.getAccount(0xd2580caf2ef07c2f) +// access(all) let yieldTokenAccount = Test.getAccount(0xd2580caf2ef07c2f) +// access(all) let flowCreditMarketAccount = Test.getAccount(0x426f0458ced60037) +// access(all) let bandOracleAccount = Test.getAccount(0x9fb6606c300b5051) + +// mainnet addresses +access(all) let flowYieldVaultsAccount = Test.getAccount(0xb1d63873c3cc9f79) +access(all) let yieldTokenAccount = Test.getAccount(0xb1d63873c3cc9f79) +access(all) let flowCreditMarketAccount = Test.getAccount(0x6b00ff876c299c61) +access(all) let bandOracleAccount = Test.getAccount(0x6801a6222ebf784a) +access(all) let whaleFlowAccount = Test.getAccount(0x92674150c9213fc9) + +access(all) var strategyIdentifier = Type<@FlowYieldVaultsStrategies.mUSDCStrategy>().identifier +access(all) var flowTokenIdentifier = Type<@FlowToken.Vault>().identifier +access(all) var moetTokenIdentifier = Type<@MOET.Vault>().identifier + +access(all) let collateralFactor = 0.8 +access(all) let targetHealthFactor = 1.3 + +access(all) var snapshot: UInt64 = 0 + +access(all) +fun setup() { + // testnet/mainnet pool uses BandOracle + // set all prices to 1.0 for testing + let symbolPrices: {String: UFix64} = { + "ETH": 1.0, + "FLOW": 1.0, + "PYUSD": 1.0, + "USDC": 1.0, + "USDT": 1.0, + "WBTC": 1.0, + "USD": 1.0 + } + setBandOraclePrices(signer: bandOracleAccount, symbolPrices: symbolPrices) + + let reserveAmount = 100_000_00.0 + // service account does not have enough flow to "mint" + // var mintFlowResult = mintFlow(to: flowCreditMarketAccount, amount: reserveAmount) + // Test.expect(mintFlowResult, Test.beSucceeded()) + transferFlow(signer: whaleFlowAccount, recipient: flowCreditMarketAccount.address, amount: reserveAmount) + + mintMoet(signer: flowCreditMarketAccount, to: flowCreditMarketAccount.address, amount: reserveAmount, beFailed: false) + // TODO: mint evm yield token? + + // on mainnet, we don't use MockFlowCreditMarketConsumer + // the pool already has MOET liquidity + // the following code would be necessary for testnet + // var err = Test.deployContract( + // name: "MockFlowCreditMarketConsumer", + // path: "../../lib/FlowCreditMarket/cadence/contracts/mocks/MockFlowCreditMarketConsumer.cdc", + // arguments: [] + // ) + // Test.expect(err, Test.beNil()) + + // // open wrapped position (pushToDrawDownSink) + // // the equivalent of depositing reserves - this provides MOET liquidity to the pool + // let openRes = executeTransaction( + // "../../lib/FlowCreditMarket/cadence/tests/transactions/mock-flow-credit-market-consumer/create_wrapped_position.cdc", + // [reserveAmount/2.0, /storage/flowTokenVault, true], + // flowCreditMarketAccount + // ) + // Test.expect(openRes, Test.beSucceeded()) + + // Fund FlowYieldVaults account for scheduling fees (atomic initial scheduling) + // service account does not have enough flow to "mint" + // mintFlowResult = mintFlow(to: flowYieldVaultsAccount, amount: 100.0) + // Test.expect(mintFlowResult, Test.beSucceeded()) + transferFlow(signer: whaleFlowAccount, recipient: flowYieldVaultsAccount.address, amount: 100.0) + +} + +access(all) var testSnapshot: UInt64 = 0 +access(all) +fun test_ForkedRebalanceYieldVaultScenario1() { + let fundingAmount = 1000.0 + + let user = Test.createAccount() + + let flowPrices = [0.5, 0.8, 1.0, 1.2, 1.5, 2.0, 3.0, 5.0] + + // Expected values from Google sheet calculations + let expectedYieldTokenValues: {UFix64: UFix64} = { + 0.5: 307.69230769, + 0.8: 492.30769231, + 1.0: 615.38461538, + 1.2: 738.46153846, + 1.5: 923.07692308, + 2.0: 1230.76923077, + 3.0: 1846.15384615, + 5.0: 3076.92307692 + } + + // Likely 0.0 + let flowBalanceBefore = getBalance(address: user.address, vaultPublicPath: /public/flowTokenReceiver)! + // service account does not have enough flow to "mint" + // let mintFlowResult =The code snippet `mintFlow(to: user, amount: fundingAmount)` is a function call that mints a specified amount of a token (in this case, Flow tokens) to a specific user account. + // mintFlow(to: user, amount: fundingAmount) + // Test.expect(mintFlowResult, Test.beSucceeded()) + transferFlow(signer: whaleFlowAccount, recipient: user.address, amount: fundingAmount) + grantBeta(flowYieldVaultsAccount, user) + + createYieldVault( + signer: user, + strategyIdentifier: strategyIdentifier, + vaultIdentifier: flowTokenIdentifier, + amount: fundingAmount, + beFailed: false + ) + + // Capture the actual position ID from the FlowCreditMarket.Opened event + var pid = (getLastPositionOpenedEvent(Test.eventsOfType(Type())) as! FlowCreditMarket.Opened).pid + log("[TEST] Captured Position ID from event: \(pid)") + + var yieldVaultIDs = getYieldVaultIDs(address: user.address) + log("[TEST] YieldVault ID: \(yieldVaultIDs![0])") + Test.assert(yieldVaultIDs != nil, message: "Expected user's YieldVault IDs to be non-nil but encountered nil") + Test.assertEqual(1, yieldVaultIDs!.length) + + var yieldVaultBalance = getYieldVaultBalance(address: user.address, yieldVaultID: yieldVaultIDs![0]) + + log("[TEST] Initial yield vault balance: \(yieldVaultBalance ?? 0.0)") + + rebalanceYieldVault(signer: flowYieldVaultsAccount, id: yieldVaultIDs![0], force: true, beFailed: false) + rebalancePosition(signer: flowCreditMarketAccount, pid: pid, force: true, beFailed: false) + + testSnapshot = getCurrentBlockHeight() + + for flowPrice in flowPrices { + if (getCurrentBlockHeight() > testSnapshot) { + Test.reset(to: testSnapshot) + } + yieldVaultBalance = getYieldVaultBalance(address: user.address, yieldVaultID: yieldVaultIDs![0]) + + log("[TEST] YieldVault balance before flow price \(flowPrice) \(yieldVaultBalance ?? 0.0)") + + setBandOraclePrice(signer: bandOracleAccount, symbol: "FLOW", price: flowPrice) + + yieldVaultBalance = getYieldVaultBalance(address: user.address, yieldVaultID: yieldVaultIDs![0]) + + log("[TEST] YieldVault balance before flow price \(flowPrice) rebalance: \(yieldVaultBalance ?? 0.0)") + + // Get yield token balance before rebalance + let yieldTokensBefore = getAutoBalancerBalance(id: yieldVaultIDs![0]) ?? 0.0 + let currentValueBefore = getAutoBalancerCurrentValue(id: yieldVaultIDs![0]) ?? 0.0 + + rebalanceYieldVault(signer: flowYieldVaultsAccount, id: yieldVaultIDs![0], force: false, beFailed: false) + rebalancePosition(signer: flowCreditMarketAccount, pid: pid, force: false, beFailed: false) + + yieldVaultBalance = getYieldVaultBalance(address: user.address, yieldVaultID: yieldVaultIDs![0]) + + log("[TEST] YieldVault balance after flow before \(flowPrice): \(yieldVaultBalance ?? 0.0)") + + // Get yield token balance after rebalance + let yieldTokensAfter = getAutoBalancerBalance(id: yieldVaultIDs![0]) ?? 0.0 + let currentValueAfter = getAutoBalancerCurrentValue(id: yieldVaultIDs![0]) ?? 0.0 + + // Get expected yield tokens from Google sheet calculations + let expectedYieldTokens = expectedYieldTokenValues[flowPrice] ?? 0.0 + + log("\n=== SCENARIO 1 DETAILS for Flow Price \(flowPrice) ===") + log("YieldVault Balance: \(yieldVaultBalance ?? 0.0)") + log("Yield Tokens Before: \(yieldTokensBefore)") + log("Yield Tokens After: \(yieldTokensAfter)") + log("Expected Yield Tokens: \(expectedYieldTokens)") + let precisionDiff = yieldTokensAfter > expectedYieldTokens ? yieldTokensAfter - expectedYieldTokens : expectedYieldTokens - yieldTokensAfter + let precisionSign = yieldTokensAfter > expectedYieldTokens ? "+" : "-" + log("Precision Difference: \(precisionSign)\(precisionDiff)") + let percentDiff = expectedYieldTokens > 0.0 ? (precisionDiff / expectedYieldTokens) * 100.0 : 0.0 + log("Percent Difference: \(precisionSign)\(percentDiff)%") + let yieldChange = yieldTokensAfter > yieldTokensBefore ? yieldTokensAfter - yieldTokensBefore : yieldTokensBefore - yieldTokensAfter + let yieldSign = yieldTokensAfter > yieldTokensBefore ? "+" : "-" + log("Yield Token Change: \(yieldSign)\(yieldChange)") + log("Current Value Before: \(currentValueBefore)") + log("Current Value After: \(currentValueAfter)") + let valueChange = currentValueAfter > currentValueBefore ? currentValueAfter - currentValueBefore : currentValueBefore - currentValueAfter + let valueSign = currentValueAfter > currentValueBefore ? "+" : "-" + log("Value Change: \(valueSign)\(valueChange)") + log("=============================================\n") + } + + closeYieldVault(signer: user, id: yieldVaultIDs![0], beFailed: false) + + let flowBalanceAfter = getBalance(address: user.address, vaultPublicPath: /public/flowTokenReceiver)! + log("[TEST] flow balance after \(flowBalanceAfter)") +} diff --git a/cadence/tests/test_helpers.cdc b/cadence/tests/test_helpers.cdc index 0091d81d..3b974291 100644 --- a/cadence/tests/test_helpers.cdc +++ b/cadence/tests/test_helpers.cdc @@ -468,6 +468,16 @@ fun addSupportedTokenSimpleInterestCurve( Test.expect(additionRes, Test.beSucceeded()) } +access(all) +fun setPoolMockOracle(signer: Test.TestAccount) { + let res = _executeTransaction( + "./transactions/set_mock_oracle.cdc", + [], + signer + ) + Test.expect(res, Test.beSucceeded()) +} + access(all) fun rebalancePosition(signer: Test.TestAccount, pid: UInt64, force: Bool, beFailed: Bool) { let rebalanceRes = _executeTransaction( @@ -586,6 +596,50 @@ fun setMockSwapperLiquidityConnector(signer: Test.TestAccount, vaultStoragePath: Test.expect(setRes, Test.beSucceeded()) } +/// Sets the BandOracle price for a given symbol (e.g., "FLOW", "USD") +/// The price is in USD, converted internally to BandOracle's 1e9 format +/// +/// @param signer: The BandOracle admin account that has DataUpdater capability +/// @param symbol: The oracle symbol (e.g., "FLOW", "USD", "stFLOW") +/// @param price: The price in USD (e.g., 0.5 for $0.50, 1.0 for $1.00) +/// +access(all) +fun setBandOraclePrice(signer: Test.TestAccount, symbol: String, price: UFix64) { + // BandOracle uses 1e9 multiplier for prices + // e.g., $1.00 = 1_000_000_000, $0.50 = 500_000_000 + let priceAsUInt64 = UInt64(price * 1_000_000_000.0) + let symbolsRates: {String: UInt64} = { symbol: priceAsUInt64 } + + let setRes = _executeTransaction( + "../../lib/FlowCreditMarket/FlowActions/cadence/tests/transactions/band-oracle/update_data.cdc", + [ symbolsRates ], + signer + ) + Test.expect(setRes, Test.beSucceeded()) +} + +/// Sets multiple BandOracle prices at once +/// +/// @param signer: The BandOracle admin account that has DataUpdater capability +/// @param symbolPrices: A dictionary mapping symbols to prices in USD +/// e.g., { "FLOW": 0.5, "USD": 1.0 } +/// +access(all) +fun setBandOraclePrices(signer: Test.TestAccount, symbolPrices: {String: UFix64}) { + let symbolsRates: {String: UInt64} = {} + for symbol in symbolPrices.keys { + let price = symbolPrices[symbol]! + symbolsRates[symbol] = UInt64(price * 1_000_000_000.0) + } + + let setRes = _executeTransaction( + "../../lib/FlowCreditMarket/FlowActions/cadence/tests/transactions/band-oracle/update_data.cdc", + [ symbolsRates ], + signer + ) + Test.expect(setRes, Test.beSucceeded()) +} + access(all) fun equalAmounts(a: UFix64, b: UFix64, tolerance: UFix64): Bool { if a > b { diff --git a/cadence/tests/transactions/set_mock_oracle.cdc b/cadence/tests/transactions/set_mock_oracle.cdc new file mode 100644 index 00000000..d1e2ed79 --- /dev/null +++ b/cadence/tests/transactions/set_mock_oracle.cdc @@ -0,0 +1,24 @@ +import "FlowCreditMarket" +import "MockOracle" +import "DeFiActions" + +/// Updates the pool's price oracle to use MockOracle +/// This is useful for testing purposes where we want to control token prices +/// +transaction() { + let pool: auth(FlowCreditMarket.EGovernance) &FlowCreditMarket.Pool + let oracle: {DeFiActions.PriceOracle} + + prepare(signer: auth(BorrowValue) &Account) { + self.pool = signer.storage.borrow(from: FlowCreditMarket.PoolStoragePath) + ?? panic("Could not borrow reference to Pool from \(FlowCreditMarket.PoolStoragePath) - ensure a Pool has been configured") + + // Create a MockOracle.PriceOracle - the unitOfAccount will be set based on the pool's default token + self.oracle = MockOracle.PriceOracle() + } + + execute { + self.pool.setPriceOracle(self.oracle) + } +} + diff --git a/flow.json b/flow.json index 255bae1a..1ec071da 100644 --- a/flow.json +++ b/flow.json @@ -1,1077 +1,1246 @@ { - "contracts": { - "BandOracleConnectors": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/band-oracle/BandOracleConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "e36ef556b8b5d955", - "testing": "0000000000000007", - "testnet": "bb76ea2f8aad74a0" - } - }, - "DeFiActions": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/interfaces/DeFiActions.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "6d888f175c158410", - "testing": "0000000000000007", - "testnet": "0b11b1848a8aa2c0" - } - }, - "DeFiActionsUtils": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/utils/DeFiActionsUtils.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "6d888f175c158410", - "testing": "0000000000000007", - "testnet": "0b11b1848a8aa2c0" - } - }, - "DummyConnectors": { - "source": "./lib/FlowCreditMarket/cadence/contracts/mocks/DummyConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "testing": "0000000000000008", - "testnet": "d2580caf2ef07c2f" - } - }, - "ERC4626PriceOracles": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/ERC4626PriceOracles.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "04f5ae6bef48c1fc", - "testing": "0000000000000009", - "testnet": "7014dcffa1f14186" - } - }, - "ERC4626SinkConnectors": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/ERC4626SinkConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "04f5ae6bef48c1fc", - "testing": "0000000000000009", - "testnet": "7014dcffa1f14186" - } - }, - "ERC4626SwapConnectors": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/ERC4626SwapConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "04f5ae6bef48c1fc", - "testing": "0000000000000009", - "testnet": "7014dcffa1f14186" - } - }, - "ERC4626Utils": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/utils/ERC4626Utils.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "04f5ae6bef48c1fc", - "testing": "0000000000000009", - "testnet": "7014dcffa1f14186" - } - }, - "EVMAbiHelpers": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/utils/EVMAbiHelpers.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "a7825d405ac89518", - "testing": "0000000000000007", - "testnet": "3ebb7d2595e97cd2" - } - }, - "EVMTokenConnectors": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/EVMTokenConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "1a771b21fcceadc2", - "testing": "0000000000000009", - "testnet": "b88ba0e976146cd1" - } - }, - "FlowCreditMarket": { - "source": "./lib/FlowCreditMarket/cadence/contracts/FlowCreditMarket.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "6b00ff876c299c61", - "testing": "0000000000000008", - "testnet": "426f0458ced60037" - } - }, - "FlowCreditMarketMath": { - "source": "./lib/FlowCreditMarket/cadence/lib/FlowCreditMarketMath.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "6b00ff876c299c61", - "testing": "0000000000000007", - "testnet": "426f0458ced60037" - } - }, - "FlowYieldVaults": { - "source": "cadence/contracts/FlowYieldVaults.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "b1d63873c3cc9f79", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "FlowYieldVaultsAutoBalancers": { - "source": "cadence/contracts/FlowYieldVaultsAutoBalancers.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "b1d63873c3cc9f79", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "FlowYieldVaultsClosedBeta": { - "source": "cadence/contracts/FlowYieldVaultsClosedBeta.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "b1d63873c3cc9f79", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "FlowYieldVaultsSchedulerRegistry": { - "source": "cadence/contracts/FlowYieldVaultsSchedulerRegistry.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "b1d63873c3cc9f79", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "FlowYieldVaultsSchedulerV1": { - "source": "cadence/contracts/FlowYieldVaultsSchedulerV1.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "b1d63873c3cc9f79", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "FlowYieldVaultsStrategies": { - "source": "cadence/contracts/FlowYieldVaultsStrategies.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "b1d63873c3cc9f79", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "FungibleTokenConnectors": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/FungibleTokenConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "0c237e1265caa7a3", - "testing": "0000000000000007", - "testnet": "4cd02f8de4122c84" - } - }, - "MOET": { - "source": "./lib/FlowCreditMarket/cadence/contracts/MOET.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "6b00ff876c299c61", - "testing": "0000000000000008", - "testnet": "426f0458ced60037" - } - }, - "MockFlowCreditMarketConsumer": { - "source": "./lib/FlowCreditMarket/cadence/contracts/mocks/MockFlowCreditMarketConsumer.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "testing": "0000000000000008", - "testnet": "d2580caf2ef07c2f" - } - }, - "MockOracle": { - "source": "cadence/contracts/mocks/MockOracle.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "MockStrategy": { - "source": "cadence/contracts/mocks/MockStrategy.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "MockSwapper": { - "source": "cadence/contracts/mocks/MockSwapper.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "testing": "0000000000000009", - "testnet": "d2580caf2ef07c2f" - } - }, - "PMStrategiesV1": { - "source": "cadence/contracts/PMStrategiesV1.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "testing": "0000000000000009" - } - }, - "SwapConnectors": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/SwapConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "e1a479f0cb911df9", - "testing": "0000000000000007", - "testnet": "ad228f1c13a97ec1" - } - }, - "UniswapV3SwapConnectors": { - "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/UniswapV3SwapConnectors.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "a7825d405ac89518", - "testing": "0000000000000007", - "testnet": "3ebb7d2595e97cd2" - } - }, - "YieldToken": { - "source": "cadence/contracts/mocks/YieldToken.cdc", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "b1d63873c3cc9f79", - "testing": "0000000000000010", - "testnet": "d2580caf2ef07c2f" - } - } - }, - "dependencies": { - "ArrayUtils": { - "source": "mainnet://1e4aa0b87d10b141.ArrayUtils", - "hash": "e70ddc2f0c7c72158a3f6c68de3a131e1f49e2908ad83eac0308f9e2953957d5", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000007" - } - }, - "BandOracle": { - "source": "mainnet://6801a6222ebf784a.BandOracle", - "hash": "ababa195ef50b63d71520022aa2468656a9703b924c0f5228cfaa51a71db094d", - "aliases": { - "emulator": "045a1763c93006ca", - "mainnet": "6801a6222ebf784a", - "testing": "0000000000000007", - "testnet": "9fb6606c300b5051" - } - }, - "Burner": { - "source": "mainnet://f233dcee88fe0abe.Burner", - "hash": "71af18e227984cd434a3ad00bb2f3618b76482842bae920ee55662c37c8bf331", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "f233dcee88fe0abe", - "testnet": "9a0766d93b6608b7" - } - }, - "CrossVMMetadataViews": { - "source": "mainnet://1d7e57aa55817448.CrossVMMetadataViews", - "hash": "7e79b77b87c750de5b126ebd6fca517c2b905ac7f01c0428e9f3f82838c7f524", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1d7e57aa55817448", - "testnet": "631e88ae7f1d7c20" - } - }, - "CrossVMNFT": { - "source": "mainnet://1e4aa0b87d10b141.CrossVMNFT", - "hash": "8fe69f487164caffedab68b52a584fa7aa4d54a0061f4f211998c73a619fbea5", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001" - } - }, - "CrossVMToken": { - "source": "mainnet://1e4aa0b87d10b141.CrossVMToken", - "hash": "9f055ad902e7de5619a2b0f2dc91826ac9c4f007afcd6df9f5b8229c0ca94531", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "EVM": { - "source": "mainnet://e467b9dd11fa00df.EVM", - "hash": "2a4782c7459dc5b72c034f67c8dd1beac6bb9b29104772a3e6eb6850718bb3b4", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "e467b9dd11fa00df", - "testnet": "8c5303eaa26202d6" - } - }, - "FlowEVMBridge": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridge", - "hash": "9cd0f897b19c0394e9042225e5758d6ae529a0cce19b19ae05bde8e0f14aa10b", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeAccessor": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeAccessor", - "hash": "888ba0aab5e961924c47b819f4a9f410449c39745e0d3eab20738bf10ef2ed0f", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeConfig": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeConfig", - "hash": "3c09f74467f22dac7bc02b2fdf462213b2f8ddfb513cd890ad0c2a7016507be3", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeCustomAssociationTypes": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeCustomAssociationTypes", - "hash": "4651183c3f04f8c5faaa35106b3ab66060ce9868590adb33f3be1900c12ea196", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeCustomAssociations": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeCustomAssociations", - "hash": "14d1f4ddd347f45d331e543830b94701e1aa1513c56d55c0019c7fac46d8a572", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeHandlerInterfaces": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeHandlerInterfaces", - "hash": "e32154f2a556e53328a0fce75f1e98b57eefd2a8cb626e803b7d39d452691444", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeHandlers": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeHandlers", - "hash": "7e8adff1dca0ea1d2e361c17de9eca020f82cabc00a52679078752bf85adb004", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeNFTEscrow": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeNFTEscrow", - "hash": "30257592838edfd4b72700f43bf0326f6903e879f82ac5ca549561d9863c6fe6", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeResolver": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeResolver", - "hash": "c1ac18e92828616771df5ff5d6de87866f2742ca4ce196601c11e977e4f63bb3", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeTemplates": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeTemplates", - "hash": "78b8115eb0ef2be4583acbe655f0c5128c39712084ec23ce47820ea154141898", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeTokenEscrow": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeTokenEscrow", - "hash": "49df9c8e5d0dd45abd5bf94376d3b9045299b3c2a5ba6caf48092c916362358d", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowEVMBridgeUtils": { - "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeUtils", - "hash": "634ed6dde03eb8f027368aa7861889ce1f5099160903493a7a39a86c9afea14b", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "FlowFees": { - "source": "mainnet://f919ee77447b7497.FlowFees", - "hash": "341cc0f3cc847d6b787c390133f6a5e6c867c111784f09c5c0083c47f2f1df64", - "aliases": { - "emulator": "e5a8b7f23e8b548f", - "mainnet": "f919ee77447b7497", - "testnet": "912d5440f7e3769e" - } - }, - "FlowStorageFees": { - "source": "mainnet://e467b9dd11fa00df.FlowStorageFees", - "hash": "a92c26fb2ea59725441fa703aa4cd811e0fc56ac73d649a8e12c1e72b67a8473", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "e467b9dd11fa00df", - "testnet": "8c5303eaa26202d6" - } - }, - "FlowToken": { - "source": "mainnet://1654653399040a61.FlowToken", - "hash": "f82389e2412624ffa439836b00b42e6605b0c00802a4e485bc95b8930a7eac38", - "aliases": { - "emulator": "0ae53cb6e3f42a79", - "mainnet": "1654653399040a61", - "testnet": "7e60df042a9c0868" - } - }, - "FlowTransactionScheduler": { - "source": "mainnet://e467b9dd11fa00df.FlowTransactionScheduler", - "hash": "c701f26f6a8e993b2573ec8700142f61c9ca936b199af8cc75dee7d9b19c9e95", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "e467b9dd11fa00df", - "testnet": "8c5303eaa26202d6" - } - }, - "FlowTransactionSchedulerUtils": { - "source": "mainnet://e467b9dd11fa00df.FlowTransactionSchedulerUtils", - "hash": "b5d6f06dd43e4cee907e08a5bc46df0bb9c2338d806d9d253789aee4c4ac01ad", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "e467b9dd11fa00df", - "testnet": "8c5303eaa26202d6" - } - }, - "FungibleToken": { - "source": "mainnet://f233dcee88fe0abe.FungibleToken", - "hash": "4b74edfe7d7ddfa70b703c14aa731a0b2e7ce016ce54d998bfd861ada4d240f6", - "aliases": { - "emulator": "ee82856bf20e2aa6", - "mainnet": "f233dcee88fe0abe", - "testnet": "9a0766d93b6608b7" - } - }, - "FungibleTokenMetadataViews": { - "source": "mainnet://f233dcee88fe0abe.FungibleTokenMetadataViews", - "hash": "70477f80fd7678466c224507e9689f68f72a9e697128d5ea54d19961ec856b3c", - "aliases": { - "emulator": "ee82856bf20e2aa6", - "mainnet": "f233dcee88fe0abe", - "testnet": "9a0766d93b6608b7" - } - }, - "IBridgePermissions": { - "source": "mainnet://1e4aa0b87d10b141.IBridgePermissions", - "hash": "431a51a6cca87773596f79832520b19499fe614297eaef347e49383f2ae809af", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testnet": "dfc20aee650fcbdf" - } - }, - "ICrossVM": { - "source": "mainnet://1e4aa0b87d10b141.ICrossVM", - "hash": "b95c36eef516da7cd4d2f507cd48288cc16b1d6605ff03b6fcd18161ff2d82e7", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "ICrossVMAsset": { - "source": "mainnet://1e4aa0b87d10b141.ICrossVMAsset", - "hash": "d9c7b2bd9fdcc454180c33b3509a5a060a7fe4bd49bce38818f22fd08acb8ba0", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "IEVMBridgeNFTMinter": { - "source": "mainnet://1e4aa0b87d10b141.IEVMBridgeNFTMinter", - "hash": "e2ad15c495ad7fbf4ab744bccaf8c4334dfb843b50f09e9681ce9a5067dbf049", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "IEVMBridgeTokenMinter": { - "source": "mainnet://1e4aa0b87d10b141.IEVMBridgeTokenMinter", - "hash": "0ef39c6cb476f0eea2c835900b6a5a83c1ed5f4dbaaeb29cb68ad52c355a40e6", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "IFlowEVMNFTBridge": { - "source": "mainnet://1e4aa0b87d10b141.IFlowEVMNFTBridge", - "hash": "2d495e896510a10bbc7307739aca9341633cac4c7fe7dad32488a81f90a39dd9", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "IFlowEVMTokenBridge": { - "source": "mainnet://1e4aa0b87d10b141.IFlowEVMTokenBridge", - "hash": "87f7d752da8446e73acd3bf4aa17fe5c279d9641b7976c56561af01bc5240ea4", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "MetadataViews": { - "source": "mainnet://1d7e57aa55817448.MetadataViews", - "hash": "b290b7906d901882b4b62e596225fb2f10defb5eaaab4a09368f3aee0e9c18b1", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1d7e57aa55817448", - "testnet": "631e88ae7f1d7c20" - } - }, - "NonFungibleToken": { - "source": "mainnet://1d7e57aa55817448.NonFungibleToken", - "hash": "a258de1abddcdb50afc929e74aca87161d0083588f6abf2b369672e64cf4a403", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1d7e57aa55817448", - "testnet": "631e88ae7f1d7c20" - } - }, - "ScopedFTProviders": { - "source": "mainnet://1e4aa0b87d10b141.ScopedFTProviders", - "hash": "77213f9588ec9862d07c4706689424ad7c1d8f043d5970d96bf18764bb936fc3", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001", - "testnet": "dfc20aee650fcbdf" - } - }, - "Serialize": { - "source": "mainnet://1e4aa0b87d10b141.Serialize", - "hash": "064bb0d7b6c24ee1ed370cbbe9e0cda2a4e0955247de5e3e81f2f3a8a8cabfb7", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001" - } - }, - "SerializeMetadata": { - "source": "mainnet://1e4aa0b87d10b141.SerializeMetadata", - "hash": "e9f84ea07e29cae05ee0d9264596eb281c291fc1090a10ce3de1a042b4d671da", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001" - } - }, - "StableSwapFactory": { - "source": "mainnet://b063c16cac85dbd1.StableSwapFactory", - "hash": "a63b57a5cc91085016abc34c1b49622b385a8f976ac2ba0e646f7a3f780d344e", - "aliases": { - "emulator": "f3fcd2c1a78f5eee", - "mainnet": "b063c16cac85dbd1", - "testing": "0000000000000007" - } - }, - "StringUtils": { - "source": "mainnet://1e4aa0b87d10b141.StringUtils", - "hash": "28ac1a744ac7fb97253cba007a520a9ec1c2e14458d1bd1add1424fa19282c03", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1e4aa0b87d10b141", - "testing": "0000000000000001" - } - }, - "SwapConfig": { - "source": "mainnet://b78ef7afa52ff906.SwapConfig", - "hash": "111f3caa0ab506bed100225a1481f77687f6ac8493d97e49f149fa26a174ef99", - "aliases": { - "emulator": "f3fcd2c1a78f5eee", - "mainnet": "b78ef7afa52ff906", - "testing": "0000000000000007" - } - }, - "SwapError": { - "source": "mainnet://b78ef7afa52ff906.SwapError", - "hash": "7d13a652a1308af387513e35c08b4f9a7389a927bddf08431687a846e4c67f21", - "aliases": { - "emulator": "f3fcd2c1a78f5eee", - "mainnet": "b78ef7afa52ff906", - "testing": "0000000000000007" - } - }, - "SwapFactory": { - "source": "mainnet://b063c16cac85dbd1.SwapFactory", - "hash": "deea03edbb49877c8c72276e1911cf87bdba4052ae9c3ac54c0d4ac62f3ef511", - "aliases": { - "emulator": "f3fcd2c1a78f5eee", - "mainnet": "b063c16cac85dbd1", - "testing": "0000000000000007" - } - }, - "SwapInterfaces": { - "source": "mainnet://b78ef7afa52ff906.SwapInterfaces", - "hash": "e559dff4d914fa12fff7ba482f30d3c575dc3d31587833fd628763d1a4ee96b2", - "aliases": { - "emulator": "f3fcd2c1a78f5eee", - "mainnet": "b78ef7afa52ff906", - "testing": "0000000000000007" - } - }, - "SwapRouter": { - "source": "mainnet://a6850776a94e6551.SwapRouter", - "hash": "c0365c01978ca32af94602bfddd0796cfe6375e60a05b927b5de539e608baec5", - "aliases": { - "emulator": "f3fcd2c1a78f5eee", - "mainnet": "a6850776a94e6551", - "testing": "0000000000000007" - } - }, - "USDCFlow": { - "source": "mainnet://f1ab99c82dee3526.USDCFlow", - "hash": "da7c21064dc73c06499f0b652caea447233465b49787605ce0f679beca48dee7", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "f1ab99c82dee3526", - "testing": "0000000000000007" - } - }, - "ViewResolver": { - "source": "mainnet://1d7e57aa55817448.ViewResolver", - "hash": "374a1994046bac9f6228b4843cb32393ef40554df9bd9907a702d098a2987bde", - "aliases": { - "emulator": "f8d6e0586b0a20c7", - "mainnet": "1d7e57aa55817448", - "testnet": "631e88ae7f1d7c20" - } - } - }, - "networks": { - "emulator": "127.0.0.1:3569", - "mainnet": "access.mainnet.nodes.onflow.org:9000", - "testing": "127.0.0.1:3569", - "testnet": "access.devnet.nodes.onflow.org:9000" - }, - "accounts": { - "emulator-account": { - "address": "f8d6e0586b0a20c7", - "key": { - "type": "file", - "location": "local/emulator-account.pkey" - } - }, - "emulator-flow-yield-vaults": { - "address": "045a1763c93006ca", - "key": { - "type": "file", - "location": "local/emulator-flow-yield-vaults.pkey" - } - }, - "evm-gateway": { - "address": "e03daebed8ca0615", - "key": { - "type": "file", - "location": "local/evm-gateway.pkey" - } - }, - "mainnet-admin": { - "address": "b1d63873c3cc9f79", - "key": { - "type": "google-kms", - "hashAlgorithm": "SHA2_256", - "resourceID": "projects/dl-flow-devex-production/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" - } - }, - "mainnet-flow-credit-market-deployer": { - "address": "6b00ff876c299c61", - "key": { - "type": "google-kms", - "hashAlgorithm": "SHA2_256", - "resourceID": "projects/dl-flow-devex-production/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" - } - }, - "mock-incrementfi": { - "address": "f3fcd2c1a78f5eee", - "key": { - "type": "file", - "location": "local/mock-incrementfi.pkey" - } - }, - "mock-strategy-deployer": { - "address": "a176eb9f47426b96", - "key": { - "type": "file", - "location": "mock-strategy-deployer.pkey" - } - }, - "test-user": { - "address": "179b6b1cb6755e31", - "key": { - "type": "file", - "location": "local/test-user.pkey" - } - }, - "testnet-admin": { - "address": "d2580caf2ef07c2f", - "key": { - "type": "google-kms", - "hashAlgorithm": "SHA2_256", - "resourceID": "projects/dl-flow-devex-staging/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" - } - }, - "testnet-flow-credit-market-deployer": { - "address": "426f0458ced60037", - "key": { - "type": "google-kms", - "hashAlgorithm": "SHA2_256", - "resourceID": "projects/dl-flow-devex-staging/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" - } - } - }, - "deployments": { - "emulator": { - "emulator-flow-yield-vaults": [ - { - "name": "MOET", - "args": [ - { - "value": "1000000.00000000", - "type": "UFix64" - } - ] - }, - "DeFiActionsUtils", - "DeFiActions", - "FlowCreditMarketMath", - "FungibleTokenConnectors", - "SwapConnectors", - "DummyConnectors", - "FlowCreditMarket", - { - "name": "YieldToken", - "args": [ - { - "value": "1000000.00000000", - "type": "UFix64" - } - ] - }, - { - "name": "MockOracle", - "args": [ - { - "value": "A.045a1763c93006ca.MOET.Vault", - "type": "String" - } - ] - }, - "BandOracle", - "BandOracleConnectors", - "MockSwapper", - "EVMAbiHelpers", - "EVMTokenConnectors", - "ERC4626Utils", - "ERC4626PriceOracles", - "ERC4626SinkConnectors", - "ERC4626SwapConnectors", - "FlowYieldVaultsSchedulerRegistry", - "FlowYieldVaultsAutoBalancers", - "FlowYieldVaultsSchedulerV1", - "FlowYieldVaultsClosedBeta", - "FlowYieldVaults", - "UniswapV3SwapConnectors", - { - "name": "FlowYieldVaultsStrategies", - "args": [ - { - "value": "0x986Cb42b0557159431d48fE0A40073296414d410", - "type": "String" - }, - { - "value": "0x92657b195e22b69E4779BBD09Fa3CD46F0CF8e39", - "type": "String" - }, - { - "value": "0x8dd92c8d0C3b304255fF9D98ae59c3385F88360C", - "type": "String" - }, - { - "value": "0x102A7ed67858cF757CBBeA3390eaB72fcc60237E", - "type": "String" - }, - { - "value": [], - "type": "Array" - }, - { - "value": [], - "type": "Array" - } - ] - }, - { - "name": "PMStrategiesV1", - "args": [ - { - "value": "0x0000000000000000000000000000000000000000", - "type": "String" - }, - { - "value": "0x0000000000000000000000000000000000000000", - "type": "String" - }, - { - "value": "0x0000000000000000000000000000000000000000", - "type": "String" - } - ] - } - ], - "mock-incrementfi": [ - "SwapConfig", - "SwapInterfaces", - "SwapError", - { - "name": "SwapFactory", - "args": [ - { - "value": "0xf3fcd2c1a78f5eee", - "type": "Address" - } - ] - }, - "StableSwapFactory", - "SwapRouter" - ] - }, - "mainnet": { - "mainnet-admin": [ - { - "name": "MockOracle", - "args": [ - { - "value": "A.6b00ff876c299c61.MOET.Vault", - "type": "String" - } - ] - }, - "MockSwapper", - "FlowYieldVaultsSchedulerRegistry", - "FlowYieldVaultsAutoBalancers", - "FlowYieldVaultsSchedulerV1", - "FlowYieldVaultsClosedBeta", - "FlowYieldVaults", - { - "name": "FlowYieldVaultsStrategies", - "args": [ - { - "value": "0xca6d7Bb03334bBf135902e1d919a5feccb461632", - "type": "String" - }, - { - "value": "0xeEDC6Ff75e1b10B903D9013c358e446a73d35341", - "type": "String" - }, - { - "value": "0x370A8DF17742867a44e56223EC20D82092242C85", - "type": "String" - }, - { - "value": "0xc52E820d2D6207D18667a97e2c6Ac22eB26E803c", - "type": "String" - }, - { - "value": [ - { - "value": "0xc52E820d2D6207D18667a97e2c6Ac22eB26E803c", - "type": "String" - }, - { - "value": "0x213979bB8A9A86966999b3AA797C1fcf3B967ae2", - "type": "String" - }, - { - "value": "0x2aaBea2058b5aC2D339b163C6Ab6f2b6d53aabED", - "type": "String" - }, - { - "value": "0xd3bF53DAC106A0290B0483EcBC89d40FcC961f3e", - "type": "String" - } - ], - "type": "Array" - }, - { - "value": [ - { - "value": "100", - "type": "UInt32" - }, - { - "value": "100", - "type": "UInt32" - }, - { - "value": "3000", - "type": "UInt32" - } - ], - "type": "Array" - } - ] - }, - { - "name": "PMStrategiesV1", - "args": [ - { - "value": "0xca6d7Bb03334bBf135902e1d919a5feccb461632", - "type": "String" - }, - { - "value": "0xeEDC6Ff75e1b10B903D9013c358e446a73d35341", - "type": "String" - }, - { - "value": "0x370A8DF17742867a44e56223EC20D82092242C85", - "type": "String" - } - ] - } - ] - }, - "testnet": { - "testnet-admin": [ - { - "name": "YieldToken", - "args": [ - { - "value": "1000000.00000000", - "type": "UFix64" - } - ] - }, - { - "name": "MockOracle", - "args": [ - { - "value": "A.426f0458ced60037.MOET.Vault", - "type": "String" - } - ] - }, - "MockSwapper", - "FlowYieldVaultsSchedulerRegistry", - "FlowYieldVaultsAutoBalancers", - "FlowYieldVaultsSchedulerV1", - "FlowYieldVaultsClosedBeta", - "FlowYieldVaults", - { - "name": "FlowYieldVaultsStrategies", - "args": [ - { - "value": "0x92657b195e22b69E4779BBD09Fa3CD46F0CF8e39", - "type": "String" - }, - { - "value": "0x2Db6468229F6fB1a77d248Dbb1c386760C257804", - "type": "String" - }, - { - "value": "0xA1e0E4CCACA34a738f03cFB1EAbAb16331FA3E2c", - "type": "String" - }, - { - "value": "0x4154d5B0E2931a0A1E5b733f19161aa7D2fc4b95", - "type": "String" - }, - { - "value": [ - { - "value": "0x4154d5B0E2931a0A1E5b733f19161aa7D2fc4b95", - "type": "String" - }, - { - "value": "0xd3bF53DAC106A0290B0483EcBC89d40FcC961f3e", - "type": "String" - } - ], - "type": "Array" - }, - { - "value": [ - { - "value": "3000", - "type": "UInt32" - } - ], - "type": "Array" - } - ] - }, - { - "name": "PMStrategiesV1", - "args": [ - { - "value": "0x92657b195e22b69E4779BBD09Fa3CD46F0CF8e39", - "type": "String" - }, - { - "value": "0x2Db6468229F6fB1a77d248Dbb1c386760C257804", - "type": "String" - }, - { - "value": "0xA1e0E4CCACA34a738f03cFB1EAbAb16331FA3E2c", - "type": "String" - } - ] - } - ] - } - } -} + "contracts": { + "BandOracleConnectors": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/band-oracle/BandOracleConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "e36ef556b8b5d955", + "testing": "0000000000000007", + "testnet": "bb76ea2f8aad74a0" + } + }, + "DeFiActions": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/interfaces/DeFiActions.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "6d888f175c158410", + "testing": "0000000000000007", + "testnet": "0b11b1848a8aa2c0" + } + }, + "DeFiActionsUtils": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/utils/DeFiActionsUtils.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "6d888f175c158410", + "testing": "0000000000000007", + "testnet": "0b11b1848a8aa2c0" + } + }, + "DummyConnectors": { + "source": "./lib/FlowCreditMarket/cadence/contracts/mocks/DummyConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "testing": "0000000000000008", + "testnet": "d2580caf2ef07c2f" + } + }, + "ERC4626PriceOracles": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/ERC4626PriceOracles.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "04f5ae6bef48c1fc", + "testing": "0000000000000009", + "testnet": "7014dcffa1f14186" + } + }, + "ERC4626SinkConnectors": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/ERC4626SinkConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "04f5ae6bef48c1fc", + "testing": "0000000000000009", + "testnet": "7014dcffa1f14186" + } + }, + "ERC4626SwapConnectors": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/ERC4626SwapConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "04f5ae6bef48c1fc", + "testing": "0000000000000009", + "testnet": "7014dcffa1f14186" + } + }, + "ERC4626Utils": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/utils/ERC4626Utils.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "04f5ae6bef48c1fc", + "testing": "0000000000000009", + "testnet": "7014dcffa1f14186" + } + }, + "EVMAbiHelpers": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/utils/EVMAbiHelpers.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "a7825d405ac89518", + "testing": "0000000000000007", + "testnet": "3ebb7d2595e97cd2" + } + }, + "EVMTokenConnectors": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/EVMTokenConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "1a771b21fcceadc2", + "testing": "0000000000000009", + "testnet": "b88ba0e976146cd1" + } + }, + "FlowCreditMarket": { + "source": "./lib/FlowCreditMarket/cadence/contracts/FlowCreditMarket.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "6b00ff876c299c61", + "testing": "0000000000000008", + "testnet": "426f0458ced60037" + } + }, + "FlowCreditMarketMath": { + "source": "./lib/FlowCreditMarket/cadence/lib/FlowCreditMarketMath.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "6b00ff876c299c61", + "testing": "0000000000000007", + "testnet": "426f0458ced60037" + } + }, + "FlowYieldVaults": { + "source": "cadence/contracts/FlowYieldVaults.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "FlowYieldVaultsAutoBalancers": { + "source": "cadence/contracts/FlowYieldVaultsAutoBalancers.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "FlowYieldVaultsClosedBeta": { + "source": "cadence/contracts/FlowYieldVaultsClosedBeta.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "FlowYieldVaultsSchedulerRegistry": { + "source": "cadence/contracts/FlowYieldVaultsSchedulerRegistry.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "FlowYieldVaultsSchedulerV1": { + "source": "cadence/contracts/FlowYieldVaultsSchedulerV1.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "FlowYieldVaultsStrategies": { + "source": "cadence/contracts/FlowYieldVaultsStrategies.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "FungibleTokenConnectors": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/FungibleTokenConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "0c237e1265caa7a3", + "testing": "0000000000000007", + "testnet": "4cd02f8de4122c84" + } + }, + "MOET": { + "source": "./lib/FlowCreditMarket/cadence/contracts/MOET.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "6b00ff876c299c61", + "testing": "0000000000000008", + "testnet": "426f0458ced60037" + } + }, + "MockFlowCreditMarketConsumer": { + "source": "./lib/FlowCreditMarket/cadence/contracts/mocks/MockFlowCreditMarketConsumer.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "testing": "0000000000000008", + "testnet": "d2580caf2ef07c2f", + "mainnet": "6b00ff876c299c61" + } + }, + "MockOracle": { + "source": "cadence/contracts/mocks/MockOracle.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "MockStrategy": { + "source": "cadence/contracts/mocks/MockStrategy.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "MockSwapper": { + "source": "cadence/contracts/mocks/MockSwapper.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000009", + "testnet": "d2580caf2ef07c2f" + } + }, + "PMStrategiesV1": { + "source": "cadence/contracts/PMStrategiesV1.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "testing": "0000000000000009" + } + }, + "SwapConnectors": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/SwapConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "e1a479f0cb911df9", + "testing": "0000000000000007", + "testnet": "ad228f1c13a97ec1" + } + }, + "UniswapV3SwapConnectors": { + "source": "./lib/FlowCreditMarket/FlowActions/cadence/contracts/connectors/evm/UniswapV3SwapConnectors.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "a7825d405ac89518", + "testing": "0000000000000007", + "testnet": "3ebb7d2595e97cd2" + } + }, + "YieldToken": { + "source": "cadence/contracts/mocks/YieldToken.cdc", + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "b1d63873c3cc9f79", + "testing": "0000000000000010", + "testnet": "d2580caf2ef07c2f" + } + } + }, + "dependencies": { + "ArrayUtils": { + "source": "mainnet://1e4aa0b87d10b141.ArrayUtils", + "hash": "e70ddc2f0c7c72158a3f6c68de3a131e1f49e2908ad83eac0308f9e2953957d5", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000007" + } + }, + "BandOracle": { + "source": "mainnet://6801a6222ebf784a.BandOracle", + "hash": "ababa195ef50b63d71520022aa2468656a9703b924c0f5228cfaa51a71db094d", + "block_height": 138886139, + "aliases": { + "emulator": "045a1763c93006ca", + "mainnet": "6801a6222ebf784a", + "testing": "0000000000000007", + "testnet": "9fb6606c300b5051" + } + }, + "Burner": { + "source": "mainnet://f233dcee88fe0abe.Burner", + "hash": "71af18e227984cd434a3ad00bb2f3618b76482842bae920ee55662c37c8bf331", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "f233dcee88fe0abe", + "testnet": "9a0766d93b6608b7" + } + }, + "CrossVMMetadataViews": { + "source": "mainnet://1d7e57aa55817448.CrossVMMetadataViews", + "hash": "7e79b77b87c750de5b126ebd6fca517c2b905ac7f01c0428e9f3f82838c7f524", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1d7e57aa55817448", + "testnet": "631e88ae7f1d7c20" + } + }, + "CrossVMNFT": { + "source": "mainnet://1e4aa0b87d10b141.CrossVMNFT", + "hash": "8fe69f487164caffedab68b52a584fa7aa4d54a0061f4f211998c73a619fbea5", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001" + } + }, + "CrossVMToken": { + "source": "mainnet://1e4aa0b87d10b141.CrossVMToken", + "hash": "9f055ad902e7de5619a2b0f2dc91826ac9c4f007afcd6df9f5b8229c0ca94531", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "DeFiActions": { + "source": "mainnet://6d888f175c158410.DeFiActions", + "hash": "64404731e3384f8d41ae1b312c46d5e50b7da77b5ae40ce6d42a354bbc83569b", + "block_height": 138886179, + "aliases": {} + }, + "DeFiActionsUtils": { + "source": "mainnet://6d888f175c158410.DeFiActionsUtils", + "hash": "f3ee7f02ec7373742172f08302471f7b16c44fc0e8deba1efeb50b4367610224", + "block_height": 138886179, + "aliases": {} + }, + "ERC4626PriceOracles": { + "source": "mainnet://04f5ae6bef48c1fc.ERC4626PriceOracles", + "hash": "a5127c0eb22c9ba79c53409513c1392d6e89dc0f7ad44ace06f56d93eef30714", + "block_height": 138886179, + "aliases": {} + }, + "ERC4626SinkConnectors": { + "source": "mainnet://04f5ae6bef48c1fc.ERC4626SinkConnectors", + "hash": "d1d2a5539364b0cff50c75524e6d6396deda0729e93a07560c742e44458ab425", + "block_height": 138886179, + "aliases": {} + }, + "ERC4626SwapConnectors": { + "source": "mainnet://04f5ae6bef48c1fc.ERC4626SwapConnectors", + "hash": "ef32f2a4aa98ea1ba6c71660887cd0d11278943eeb5f3231cc0a2baee8231eba", + "block_height": 138886179, + "aliases": {} + }, + "ERC4626Utils": { + "source": "mainnet://04f5ae6bef48c1fc.ERC4626Utils", + "hash": "7d9cf545308240b2398a9b8274a2755efa67f49e6358e44f0ae34502ea417ca7", + "block_height": 138886179, + "aliases": {} + }, + "EVM": { + "source": "mainnet://e467b9dd11fa00df.EVM", + "hash": "960b0c7df7ee536956af196fba8c8d5dd4f7a89a4ecc61467e31287c4617b0dd", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "e467b9dd11fa00df", + "testnet": "8c5303eaa26202d6" + } + }, + "EVMAbiHelpers": { + "source": "mainnet://a7825d405ac89518.EVMAbiHelpers", + "hash": "eac566b430f69b652b6b3f7518022c0bbb3ae2d977b6b7da04bd26e0e4c96e77", + "block_height": 138886179, + "aliases": {} + }, + "EVMTokenConnectors": { + "source": "mainnet://1a771b21fcceadc2.EVMTokenConnectors", + "hash": "7b0d3ef5a46456e995073e5aa0e019dbed87ad63f588075b938c4ed3e587639a", + "block_height": 138886179, + "aliases": {} + }, + "FlowCreditMarket": { + "source": "mainnet://6b00ff876c299c61.FlowCreditMarket", + "hash": "4cb4ef5a825e6ada9b96d36f006d70d60a5aafcd6342a1a0ab63c678009addd1", + "block_height": 138886179, + "aliases": {} + }, + "FlowCreditMarketMath": { + "source": "mainnet://6b00ff876c299c61.FlowCreditMarketMath", + "hash": "1a4094a4a85a1cc1cce6b25fd6c0c74de64917113eb3b923b023ff893178bdaa", + "block_height": 138886179, + "aliases": {} + }, + "FlowEVMBridge": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridge", + "hash": "9cd0f897b19c0394e9042225e5758d6ae529a0cce19b19ae05bde8e0f14aa10b", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeAccessor": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeAccessor", + "hash": "888ba0aab5e961924c47b819f4a9f410449c39745e0d3eab20738bf10ef2ed0f", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeConfig": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeConfig", + "hash": "3c09f74467f22dac7bc02b2fdf462213b2f8ddfb513cd890ad0c2a7016507be3", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeCustomAssociationTypes": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeCustomAssociationTypes", + "hash": "4651183c3f04f8c5faaa35106b3ab66060ce9868590adb33f3be1900c12ea196", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeCustomAssociations": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeCustomAssociations", + "hash": "14d1f4ddd347f45d331e543830b94701e1aa1513c56d55c0019c7fac46d8a572", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeHandlerInterfaces": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeHandlerInterfaces", + "hash": "e32154f2a556e53328a0fce75f1e98b57eefd2a8cb626e803b7d39d452691444", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeHandlers": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeHandlers", + "hash": "7e8adff1dca0ea1d2e361c17de9eca020f82cabc00a52679078752bf85adb004", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeNFTEscrow": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeNFTEscrow", + "hash": "30257592838edfd4b72700f43bf0326f6903e879f82ac5ca549561d9863c6fe6", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeResolver": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeResolver", + "hash": "c1ac18e92828616771df5ff5d6de87866f2742ca4ce196601c11e977e4f63bb3", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeTemplates": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeTemplates", + "hash": "78b8115eb0ef2be4583acbe655f0c5128c39712084ec23ce47820ea154141898", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeTokenEscrow": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeTokenEscrow", + "hash": "49df9c8e5d0dd45abd5bf94376d3b9045299b3c2a5ba6caf48092c916362358d", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowEVMBridgeUtils": { + "source": "mainnet://1e4aa0b87d10b141.FlowEVMBridgeUtils", + "hash": "634ed6dde03eb8f027368aa7861889ce1f5099160903493a7a39a86c9afea14b", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "FlowFees": { + "source": "mainnet://f919ee77447b7497.FlowFees", + "hash": "341cc0f3cc847d6b787c390133f6a5e6c867c111784f09c5c0083c47f2f1df64", + "block_height": 138886139, + "aliases": { + "emulator": "e5a8b7f23e8b548f", + "mainnet": "f919ee77447b7497", + "testnet": "912d5440f7e3769e" + } + }, + "FlowStorageFees": { + "source": "mainnet://e467b9dd11fa00df.FlowStorageFees", + "hash": "a92c26fb2ea59725441fa703aa4cd811e0fc56ac73d649a8e12c1e72b67a8473", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "e467b9dd11fa00df", + "testnet": "8c5303eaa26202d6" + } + }, + "FlowToken": { + "source": "mainnet://1654653399040a61.FlowToken", + "hash": "f82389e2412624ffa439836b00b42e6605b0c00802a4e485bc95b8930a7eac38", + "block_height": 138886139, + "aliases": { + "emulator": "0ae53cb6e3f42a79", + "mainnet": "1654653399040a61", + "testnet": "7e60df042a9c0868" + } + }, + "FlowTransactionScheduler": { + "source": "mainnet://e467b9dd11fa00df.FlowTransactionScheduler", + "hash": "23157cf7d70534e45b0ab729133232d0ffb3cdae52661df1744747cb1f8c0495", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "e467b9dd11fa00df", + "testnet": "8c5303eaa26202d6" + } + }, + "FlowTransactionSchedulerUtils": { + "source": "mainnet://e467b9dd11fa00df.FlowTransactionSchedulerUtils", + "hash": "71a1febab6b9ba76abec36dab1e61b1c377e44fbe627e5fac649deb71b727877", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "e467b9dd11fa00df", + "testnet": "8c5303eaa26202d6" + } + }, + "FlowYieldVaults": { + "source": "mainnet://b1d63873c3cc9f79.FlowYieldVaults", + "hash": "191825dfb710b4bd5f833c234e5e6ba44ed1613cc97f060020435c0546183deb", + "block_height": 138886179, + "aliases": {} + }, + "FlowYieldVaultsAutoBalancers": { + "source": "mainnet://b1d63873c3cc9f79.FlowYieldVaultsAutoBalancers", + "hash": "724410e64631fd6c48f8dfed6ef88b81102a1e9938b6220ff83c663da3e8551c", + "block_height": 138886179, + "aliases": {} + }, + "FlowYieldVaultsClosedBeta": { + "source": "mainnet://b1d63873c3cc9f79.FlowYieldVaultsClosedBeta", + "hash": "74b3bd64023539d31963169d1968393cbaa6d230f7a93b62d2b5d1dc099eaedb", + "block_height": 138886179, + "aliases": {} + }, + "FlowYieldVaultsSchedulerRegistry": { + "source": "mainnet://b1d63873c3cc9f79.FlowYieldVaultsSchedulerRegistry", + "hash": "17b9e9da01dfd418359cbe80a788967a7ec9f5ad20232e5bb15e3125b907930d", + "block_height": 138886179, + "aliases": {} + }, + "FlowYieldVaultsStrategiesV1_1": { + "source": "mainnet://b1d63873c3cc9f79.FlowYieldVaultsStrategiesV1_1", + "hash": "9401c1ca36da27c2c7aeb26a7b70e053b19f590e5a3a364df60b4ad0a37af425", + "block_height": 138975225, + "aliases": { + "mainnet": "b1d63873c3cc9f79", + "testnet": "d2580caf2ef07c2f" + } + }, + "FungibleToken": { + "source": "mainnet://f233dcee88fe0abe.FungibleToken", + "hash": "4b74edfe7d7ddfa70b703c14aa731a0b2e7ce016ce54d998bfd861ada4d240f6", + "block_height": 138886139, + "aliases": { + "emulator": "ee82856bf20e2aa6", + "mainnet": "f233dcee88fe0abe", + "testnet": "9a0766d93b6608b7" + } + }, + "FungibleTokenConnectors": { + "source": "mainnet://0c237e1265caa7a3.FungibleTokenConnectors", + "hash": "6a962e36d5ad90ed8fbf531486e6159421debc8b0f90cc6e8ccd51e42ddb444b", + "block_height": 138886179, + "aliases": {} + }, + "FungibleTokenMetadataViews": { + "source": "mainnet://f233dcee88fe0abe.FungibleTokenMetadataViews", + "hash": "70477f80fd7678466c224507e9689f68f72a9e697128d5ea54d19961ec856b3c", + "block_height": 138886139, + "aliases": { + "emulator": "ee82856bf20e2aa6", + "mainnet": "f233dcee88fe0abe", + "testnet": "9a0766d93b6608b7" + } + }, + "IBridgePermissions": { + "source": "mainnet://1e4aa0b87d10b141.IBridgePermissions", + "hash": "431a51a6cca87773596f79832520b19499fe614297eaef347e49383f2ae809af", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testnet": "dfc20aee650fcbdf" + } + }, + "ICrossVM": { + "source": "mainnet://1e4aa0b87d10b141.ICrossVM", + "hash": "b95c36eef516da7cd4d2f507cd48288cc16b1d6605ff03b6fcd18161ff2d82e7", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "ICrossVMAsset": { + "source": "mainnet://1e4aa0b87d10b141.ICrossVMAsset", + "hash": "d9c7b2bd9fdcc454180c33b3509a5a060a7fe4bd49bce38818f22fd08acb8ba0", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "IEVMBridgeNFTMinter": { + "source": "mainnet://1e4aa0b87d10b141.IEVMBridgeNFTMinter", + "hash": "e2ad15c495ad7fbf4ab744bccaf8c4334dfb843b50f09e9681ce9a5067dbf049", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "IEVMBridgeTokenMinter": { + "source": "mainnet://1e4aa0b87d10b141.IEVMBridgeTokenMinter", + "hash": "0ef39c6cb476f0eea2c835900b6a5a83c1ed5f4dbaaeb29cb68ad52c355a40e6", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "IFlowEVMNFTBridge": { + "source": "mainnet://1e4aa0b87d10b141.IFlowEVMNFTBridge", + "hash": "2d495e896510a10bbc7307739aca9341633cac4c7fe7dad32488a81f90a39dd9", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "IFlowEVMTokenBridge": { + "source": "mainnet://1e4aa0b87d10b141.IFlowEVMTokenBridge", + "hash": "87f7d752da8446e73acd3bf4aa17fe5c279d9641b7976c56561af01bc5240ea4", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "MOET": { + "source": "mainnet://6b00ff876c299c61.MOET", + "hash": "0ced52610f27f6656a6b81bcbc4a707d4e4e8711cf7f45aaad59c872405443a2", + "block_height": 138886179, + "aliases": {} + }, + "MetadataViews": { + "source": "mainnet://1d7e57aa55817448.MetadataViews", + "hash": "b290b7906d901882b4b62e596225fb2f10defb5eaaab4a09368f3aee0e9c18b1", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1d7e57aa55817448", + "testnet": "631e88ae7f1d7c20" + } + }, + "NonFungibleToken": { + "source": "mainnet://1d7e57aa55817448.NonFungibleToken", + "hash": "a258de1abddcdb50afc929e74aca87161d0083588f6abf2b369672e64cf4a403", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1d7e57aa55817448", + "testnet": "631e88ae7f1d7c20" + } + }, + "ScopedFTProviders": { + "source": "mainnet://1e4aa0b87d10b141.ScopedFTProviders", + "hash": "77213f9588ec9862d07c4706689424ad7c1d8f043d5970d96bf18764bb936fc3", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "Serialize": { + "source": "mainnet://1e4aa0b87d10b141.Serialize", + "hash": "064bb0d7b6c24ee1ed370cbbe9e0cda2a4e0955247de5e3e81f2f3a8a8cabfb7", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "SerializeMetadata": { + "source": "mainnet://1e4aa0b87d10b141.SerializeMetadata", + "hash": "e9f84ea07e29cae05ee0d9264596eb281c291fc1090a10ce3de1a042b4d671da", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001", + "testnet": "dfc20aee650fcbdf" + } + }, + "StableSwapFactory": { + "source": "mainnet://b063c16cac85dbd1.StableSwapFactory", + "hash": "a63b57a5cc91085016abc34c1b49622b385a8f976ac2ba0e646f7a3f780d344e", + "block_height": 138886139, + "aliases": { + "emulator": "f3fcd2c1a78f5eee", + "mainnet": "b063c16cac85dbd1", + "testing": "0000000000000007" + } + }, + "StringUtils": { + "source": "mainnet://1e4aa0b87d10b141.StringUtils", + "hash": "28ac1a744ac7fb97253cba007a520a9ec1c2e14458d1bd1add1424fa19282c03", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1e4aa0b87d10b141", + "testing": "0000000000000001" + } + }, + "SwapConfig": { + "source": "mainnet://b78ef7afa52ff906.SwapConfig", + "hash": "111f3caa0ab506bed100225a1481f77687f6ac8493d97e49f149fa26a174ef99", + "block_height": 138886139, + "aliases": { + "emulator": "f3fcd2c1a78f5eee", + "mainnet": "b78ef7afa52ff906", + "testing": "0000000000000007" + } + }, + "SwapConnectors": { + "source": "mainnet://e1a479f0cb911df9.SwapConnectors", + "hash": "174f7283637da097bec6d322f9449a5c68e94ce10288150f9bac3f0b87c3e9bb", + "block_height": 138886179, + "aliases": {} + }, + "SwapError": { + "source": "mainnet://b78ef7afa52ff906.SwapError", + "hash": "7d13a652a1308af387513e35c08b4f9a7389a927bddf08431687a846e4c67f21", + "block_height": 138886139, + "aliases": { + "emulator": "f3fcd2c1a78f5eee", + "mainnet": "b78ef7afa52ff906", + "testing": "0000000000000007" + } + }, + "SwapFactory": { + "source": "mainnet://b063c16cac85dbd1.SwapFactory", + "hash": "deea03edbb49877c8c72276e1911cf87bdba4052ae9c3ac54c0d4ac62f3ef511", + "block_height": 138886139, + "aliases": { + "emulator": "f3fcd2c1a78f5eee", + "mainnet": "b063c16cac85dbd1", + "testing": "0000000000000007" + } + }, + "SwapInterfaces": { + "source": "mainnet://b78ef7afa52ff906.SwapInterfaces", + "hash": "e559dff4d914fa12fff7ba482f30d3c575dc3d31587833fd628763d1a4ee96b2", + "block_height": 138886139, + "aliases": { + "emulator": "f3fcd2c1a78f5eee", + "mainnet": "b78ef7afa52ff906", + "testing": "0000000000000007" + } + }, + "SwapRouter": { + "source": "mainnet://a6850776a94e6551.SwapRouter", + "hash": "c0365c01978ca32af94602bfddd0796cfe6375e60a05b927b5de539e608baec5", + "block_height": 138886139, + "aliases": { + "emulator": "f3fcd2c1a78f5eee", + "mainnet": "a6850776a94e6551", + "testing": "0000000000000007" + } + }, + "USDCFlow": { + "source": "mainnet://f1ab99c82dee3526.USDCFlow", + "hash": "da7c21064dc73c06499f0b652caea447233465b49787605ce0f679beca48dee7", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "f1ab99c82dee3526", + "testing": "0000000000000007" + } + }, + "UniswapV3SwapConnectors": { + "source": "mainnet://a7825d405ac89518.UniswapV3SwapConnectors", + "hash": "64280d304a5c42412592f0974b5b03316946747d2a9fe044bca769a0ab3e06ad", + "block_height": 138886179, + "aliases": {} + }, + "ViewResolver": { + "source": "mainnet://1d7e57aa55817448.ViewResolver", + "hash": "374a1994046bac9f6228b4843cb32393ef40554df9bd9907a702d098a2987bde", + "block_height": 138886139, + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1d7e57aa55817448", + "testnet": "631e88ae7f1d7c20" + } + } + }, + "networks": { + "emulator": "127.0.0.1:3569", + "mainnet": "access.mainnet.nodes.onflow.org:9000", + "testing": "127.0.0.1:3569", + "testnet": "access.devnet.nodes.onflow.org:9000" + }, + "accounts": { + "emulator-account": { + "address": "f8d6e0586b0a20c7", + "key": { + "type": "file", + "location": "local/emulator-account.pkey" + } + }, + "emulator-flow-yield-vaults": { + "address": "045a1763c93006ca", + "key": { + "type": "file", + "location": "local/emulator-flow-yield-vaults.pkey" + } + }, + "evm-gateway": { + "address": "e03daebed8ca0615", + "key": { + "type": "file", + "location": "local/evm-gateway.pkey" + } + }, + "mainnet-admin": { + "address": "b1d63873c3cc9f79", + "key": { + "type": "google-kms", + "hashAlgorithm": "SHA2_256", + "resourceID": "projects/dl-flow-devex-production/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" + } + }, + "mainnet-flow-credit-market-deployer": { + "address": "6b00ff876c299c61", + "key": { + "type": "google-kms", + "hashAlgorithm": "SHA2_256", + "resourceID": "projects/dl-flow-devex-production/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" + } + }, + "mock-incrementfi": { + "address": "f3fcd2c1a78f5eee", + "key": { + "type": "file", + "location": "local/mock-incrementfi.pkey" + } + }, + "mock-strategy-deployer": { + "address": "a176eb9f47426b96", + "key": { + "type": "file", + "location": "mock-strategy-deployer.pkey" + } + }, + "test-user": { + "address": "179b6b1cb6755e31", + "key": { + "type": "file", + "location": "local/test-user.pkey" + } + }, + "testnet-admin": { + "address": "d2580caf2ef07c2f", + "key": { + "type": "google-kms", + "hashAlgorithm": "SHA2_256", + "resourceID": "projects/dl-flow-devex-staging/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" + } + }, + "testnet-flow-credit-market-deployer": { + "address": "426f0458ced60037", + "key": { + "type": "google-kms", + "hashAlgorithm": "SHA2_256", + "resourceID": "projects/dl-flow-devex-staging/locations/us-central1/keyRings/tidal-keyring/cryptoKeys/tidal_admin_pk/cryptoKeyVersions/1" + } + } + }, + "deployments": { + "emulator": { + "emulator-flow-yield-vaults": [ + { + "name": "MOET", + "args": [ + { + "value": "1000000.00000000", + "type": "UFix64" + } + ] + }, + "DeFiActionsUtils", + "DeFiActions", + "FlowCreditMarketMath", + "FungibleTokenConnectors", + "SwapConnectors", + "DummyConnectors", + "FlowCreditMarket", + { + "name": "YieldToken", + "args": [ + { + "value": "1000000.00000000", + "type": "UFix64" + } + ] + }, + { + "name": "MockOracle", + "args": [ + { + "value": "A.045a1763c93006ca.MOET.Vault", + "type": "String" + } + ] + }, + "BandOracle", + "BandOracleConnectors", + "MockSwapper", + "EVMAbiHelpers", + "EVMTokenConnectors", + "ERC4626Utils", + "ERC4626PriceOracles", + "ERC4626SinkConnectors", + "ERC4626SwapConnectors", + "FlowYieldVaultsSchedulerRegistry", + "FlowYieldVaultsAutoBalancers", + "FlowYieldVaultsSchedulerV1", + "FlowYieldVaultsClosedBeta", + "FlowYieldVaults", + "UniswapV3SwapConnectors", + { + "name": "FlowYieldVaultsStrategies", + "args": [ + { + "value": "0x986Cb42b0557159431d48fE0A40073296414d410", + "type": "String" + }, + { + "value": "0x92657b195e22b69E4779BBD09Fa3CD46F0CF8e39", + "type": "String" + }, + { + "value": "0x8dd92c8d0C3b304255fF9D98ae59c3385F88360C", + "type": "String" + }, + { + "value": "0x102A7ed67858cF757CBBeA3390eaB72fcc60237E", + "type": "String" + }, + { + "value": [], + "type": "Array" + }, + { + "value": [], + "type": "Array" + } + ] + }, + { + "name": "PMStrategiesV1", + "args": [ + { + "value": "0x0000000000000000000000000000000000000000", + "type": "String" + }, + { + "value": "0x0000000000000000000000000000000000000000", + "type": "String" + }, + { + "value": "0x0000000000000000000000000000000000000000", + "type": "String" + } + ] + } + ], + "mock-incrementfi": [ + "SwapConfig", + "SwapInterfaces", + "SwapError", + { + "name": "SwapFactory", + "args": [ + { + "value": "0xf3fcd2c1a78f5eee", + "type": "Address" + } + ] + }, + "StableSwapFactory", + "SwapRouter" + ] + }, + "mainnet": { + "mainnet-admin": [ + { + "name": "MockOracle", + "args": [ + { + "value": "A.6b00ff876c299c61.MOET.Vault", + "type": "String" + } + ] + }, + "MockSwapper", + "FlowYieldVaultsSchedulerRegistry", + "FlowYieldVaultsAutoBalancers", + "FlowYieldVaultsSchedulerV1", + "FlowYieldVaultsClosedBeta", + "FlowYieldVaults", + { + "name": "FlowYieldVaultsStrategies", + "args": [ + { + "value": "0xca6d7Bb03334bBf135902e1d919a5feccb461632", + "type": "String" + }, + { + "value": "0xeEDC6Ff75e1b10B903D9013c358e446a73d35341", + "type": "String" + }, + { + "value": "0x370A8DF17742867a44e56223EC20D82092242C85", + "type": "String" + }, + { + "value": "0xc52E820d2D6207D18667a97e2c6Ac22eB26E803c", + "type": "String" + }, + { + "value": [ + { + "value": "0xc52E820d2D6207D18667a97e2c6Ac22eB26E803c", + "type": "String" + }, + { + "value": "0x213979bB8A9A86966999b3AA797C1fcf3B967ae2", + "type": "String" + }, + { + "value": "0x2aaBea2058b5aC2D339b163C6Ab6f2b6d53aabED", + "type": "String" + }, + { + "value": "0xd3bF53DAC106A0290B0483EcBC89d40FcC961f3e", + "type": "String" + } + ], + "type": "Array" + }, + { + "value": [ + { + "value": "100", + "type": "UInt32" + }, + { + "value": "100", + "type": "UInt32" + }, + { + "value": "3000", + "type": "UInt32" + } + ], + "type": "Array" + } + ] + }, + { + "name": "PMStrategiesV1", + "args": [ + { + "value": "0xca6d7Bb03334bBf135902e1d919a5feccb461632", + "type": "String" + }, + { + "value": "0xeEDC6Ff75e1b10B903D9013c358e446a73d35341", + "type": "String" + }, + { + "value": "0x370A8DF17742867a44e56223EC20D82092242C85", + "type": "String" + } + ] + } + ] + }, + "testnet": { + "testnet-admin": [ + { + "name": "YieldToken", + "args": [ + { + "value": "1000000.00000000", + "type": "UFix64" + } + ] + }, + { + "name": "MockOracle", + "args": [ + { + "value": "A.426f0458ced60037.MOET.Vault", + "type": "String" + } + ] + }, + "MockSwapper", + "FlowYieldVaultsSchedulerRegistry", + "FlowYieldVaultsAutoBalancers", + "FlowYieldVaultsSchedulerV1", + "FlowYieldVaultsClosedBeta", + "FlowYieldVaults", + { + "name": "FlowYieldVaultsStrategies", + "args": [ + { + "value": "0x92657b195e22b69E4779BBD09Fa3CD46F0CF8e39", + "type": "String" + }, + { + "value": "0x2Db6468229F6fB1a77d248Dbb1c386760C257804", + "type": "String" + }, + { + "value": "0xA1e0E4CCACA34a738f03cFB1EAbAb16331FA3E2c", + "type": "String" + }, + { + "value": "0x4154d5B0E2931a0A1E5b733f19161aa7D2fc4b95", + "type": "String" + }, + { + "value": [ + { + "value": "0x4154d5B0E2931a0A1E5b733f19161aa7D2fc4b95", + "type": "String" + }, + { + "value": "0xd3bF53DAC106A0290B0483EcBC89d40FcC961f3e", + "type": "String" + } + ], + "type": "Array" + }, + { + "value": [ + { + "value": "3000", + "type": "UInt32" + } + ], + "type": "Array" + } + ] + }, + { + "name": "PMStrategiesV1", + "args": [ + { + "value": "0x92657b195e22b69E4779BBD09Fa3CD46F0CF8e39", + "type": "String" + }, + { + "value": "0x2Db6468229F6fB1a77d248Dbb1c386760C257804", + "type": "String" + }, + { + "value": "0xA1e0E4CCACA34a738f03cFB1EAbAb16331FA3E2c", + "type": "String" + } + ] + } + ] + } + } +} \ No newline at end of file