diff --git a/scripts/actions/createMarketAndDeposit.ts b/scripts/actions/createMarketAndDeposit.ts index 47fbd7f1..5147fe2f 100644 --- a/scripts/actions/createMarketAndDeposit.ts +++ b/scripts/actions/createMarketAndDeposit.ts @@ -14,306 +14,323 @@ async function create_market() { const account0 = new Account(provider, account0Address!, privateKey0!) console.log("Interacting with Account: " + account0Address) - let eth = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7" - - const dataStoreAddress = process.env.DATA_STORE as string - const compiledDataStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_DataStore.contract_class.json").toString( "ascii")) - const dataStoreContract = new Contract(compiledDataStoreSierra.abi, dataStoreAddress, provider) - dataStoreContract.connect(account0); - const dataCall = dataStoreContract.populate( - "set_address", - [ec.starkCurve.poseidonHashMany([BigInt(shortString.encodeShortString("FEE_TOKEN"))]), process.env.FEE_TOKEN as string]) - const setAddressTx = await dataStoreContract.set_address(dataCall.calldata) - await provider.waitForTransaction(setAddressTx.transaction_hash) - const dataCall2 = dataStoreContract.populate( - "set_u256", - [ec.starkCurve.poseidonHashMany([BigInt(shortString.encodeShortString("MAX_SWAP_PATH_LENGTH"))]), 5n]) - const setAddressTx2 = await dataStoreContract.set_u256(dataCall2.calldata) - await provider.waitForTransaction(setAddressTx2.transaction_hash) - - const dataCall3 = dataStoreContract.populate( - "set_u256", - [ec.starkCurve.poseidonHashMany([BigInt(shortString.encodeShortString("MAX_ORACLE_PRICE_AGE"))]), 1000000000000n]) - const setAddressTx3 = await dataStoreContract.set_u256(dataCall3.calldata) - await provider.waitForTransaction(setAddressTx3.transaction_hash) + // let eth = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7" + + // const dataStoreAddress = process.env.DATA_STORE as string + // const compiledDataStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_DataStore.contract_class.json").toString( "ascii")) + // const dataStoreContract = new Contract(compiledDataStoreSierra.abi, dataStoreAddress, provider) + // dataStoreContract.connect(account0); + // const dataCall = dataStoreContract.populate( + // "set_address", + // [ec.starkCurve.poseidonHashMany([BigInt(shortString.encodeShortString("FEE_TOKEN"))]), process.env.FEE_TOKEN as string]) + // const setAddressTx = await dataStoreContract.set_address(dataCall.calldata) + // await provider.waitForTransaction(setAddressTx.transaction_hash) + // const dataCall2 = dataStoreContract.populate( + // "set_u256", + // [ec.starkCurve.poseidonHashMany([BigInt(shortString.encodeShortString("MAX_SWAP_PATH_LENGTH"))]), 5n]) + // const setAddressTx2 = await dataStoreContract.set_u256(dataCall2.calldata) + // await provider.waitForTransaction(setAddressTx2.transaction_hash) + + // const dataCall3 = dataStoreContract.populate( + // "set_u256", + // [ec.starkCurve.poseidonHashMany([BigInt(shortString.encodeShortString("MAX_ORACLE_PRICE_AGE"))]), 1000000000000n]) + // const setAddressTx3 = await dataStoreContract.set_u256(dataCall3.calldata) + // await provider.waitForTransaction(setAddressTx3.transaction_hash) - const compiledERC20Casm = json.parse(fs.readFileSync( "./target/dev/satoru_ERC20.compiled_contract_class.json").toString( "ascii")) - const compiledERC20Sierra = json.parse(fs.readFileSync( "./target/dev/satoru_ERC20.contract_class.json").toString( "ascii")) - const erc20CallData: CallData = new CallData(compiledERC20Sierra.abi) - const erc20Constructor: Calldata = erc20CallData.compile("constructor", { - name: "USDC", - symbol: "USDC", - initial_supply: "10000000000000000000", - recipient: account0Address - }) - const deployERC20Response = await account0.declareAndDeploy({ - contract: compiledERC20Sierra, - casm: compiledERC20Casm, - constructorCalldata: erc20Constructor, - }) - console.log("USDC Deployed at: " + deployERC20Response.deploy.contract_address) - - const zETHCallData: CallData = new CallData(compiledERC20Sierra.abi) - const zETHConstructor: Calldata = zETHCallData.compile("constructor", { - name: "zEthereum", - symbol: "zETH", - initial_supply: "50000000000000000000000", - recipient: account0Address - }) - const deployzETHResponse = await account0.declareAndDeploy({ - contract: compiledERC20Sierra, - casm: compiledERC20Casm, - constructorCalldata: zETHConstructor, - }) - console.log("zETH Deployed at: " + deployzETHResponse.deploy.contract_address) - - const marketFactoryAddress = process.env.MARKET_FACTORY as string - const compiledMarketFactorySierra = json.parse(fs.readFileSync( "./target/dev/satoru_MarketFactory.contract_class.json").toString( "ascii")) + // const compiledERC20Casm = json.parse(fs.readFileSync( "./target/dev/satoru_ERC20.compiled_contract_class.json").toString( "ascii")) + // const compiledERC20Sierra = json.parse(fs.readFileSync( "./target/dev/satoru_ERC20.contract_class.json").toString( "ascii")) + // const erc20CallData: CallData = new CallData(compiledERC20Sierra.abi) + // const erc20Constructor: Calldata = erc20CallData.compile("constructor", { + // name: "USDC", + // symbol: "USDC", + // initial_supply: "10000000000000000000", + // recipient: account0Address + // }) + // const deployERC20Response = await account0.declareAndDeploy({ + // contract: compiledERC20Sierra, + // casm: compiledERC20Casm, + // constructorCalldata: erc20Constructor, + // }) + // console.log("USDC Deployed at: " + deployERC20Response.deploy.contract_address) + + // const zETHCallData: CallData = new CallData(compiledERC20Sierra.abi) + // const zETHConstructor: Calldata = zETHCallData.compile("constructor", { + // name: "zEthereum", + // symbol: "zETH", + // initial_supply: "50000000000000000000000", + // recipient: account0Address + // }) + // const deployzETHResponse = await account0.declareAndDeploy({ + // contract: compiledERC20Sierra, + // casm: compiledERC20Casm, + // constructorCalldata: zETHConstructor, + // }) + // console.log("zETH Deployed at: " + deployzETHResponse.deploy.contract_address) + + // const marketFactoryAddress = process.env.MARKET_FACTORY as string + // const compiledMarketFactorySierra = json.parse(fs.readFileSync( "./target/dev/satoru_MarketFactory.contract_class.json").toString( "ascii")) const roleStoreAddress = process.env.ROLE_STORE as string const compiledRoleStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_RoleStore.contract_class.json").toString( "ascii")) const roleStoreContract = new Contract(compiledRoleStoreSierra.abi, roleStoreAddress, provider) roleStoreContract.connect(account0) - const roleCall = roleStoreContract.populate("grant_role", [marketFactoryAddress, shortString.encodeShortString("CONTROLLER")]) + const roleCall = roleStoreContract.populate("grant_role", ["0x04219D87E41d0eA40746f05DaB73659f5176cD328C5bE466027f93305089E166", shortString.encodeShortString("FROZEN_ORDER_KEEPER")]) const grant_role_tx = await roleStoreContract.grant_role(roleCall.calldata) await provider.waitForTransaction(grant_role_tx.transaction_hash) - const abi = compiledMarketFactorySierra.abi - const marketFactoryContract = new Contract(abi, marketFactoryAddress, provider); - console.log("Connected to MarketFactory: " + marketFactoryAddress) - marketFactoryContract.connect(account0) - - console.log("Granting roles...") - const roleCall2 = roleStoreContract.populate("grant_role", [process.env.MARKET_FACTORY as string, shortString.encodeShortString("MARKET_KEEPER")]) - const grant_role_tx2 = await roleStoreContract.grant_role(roleCall2.calldata) - await provider.waitForTransaction(grant_role_tx2.transaction_hash) - - const roleCall3 = roleStoreContract.populate("grant_role", [process.env.DEPOSIT_HANDLER as string, shortString.encodeShortString("CONTROLLER")]) - const grant_role_tx3 = await roleStoreContract.grant_role(roleCall3.calldata) - await provider.waitForTransaction(grant_role_tx3.transaction_hash) - - const roleCall4 = roleStoreContract.populate("grant_role", [process.env.ORDER_HANDLER as string, shortString.encodeShortString("CONTROLLER")]) - const grant_role_tx4 = await roleStoreContract.grant_role(roleCall4.calldata) - await provider.waitForTransaction(grant_role_tx4.transaction_hash) - console.log("Roles granted.") - - console.log("Creating Market...") - const myCall = marketFactoryContract.populate("create_market", [ - deployzETHResponse.deploy.contract_address, - deployzETHResponse.deploy.contract_address, - deployERC20Response.deploy.contract_address, - "market_type" - ]); - const res = await marketFactoryContract.create_market(myCall.calldata); - const marketTokenAddress = (await provider.waitForTransaction(res.transaction_hash) as any).events[0].data[1]; - console.log("Market created: " + marketTokenAddress) - - // Set constants for trade - dataStoreContract.connect(account0); - const dataCall5 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pool_amount_key(marketTokenAddress, deployzETHResponse.deploy.contract_address), - 2500000000000000000000000000000000000000000000n - ] - ) - const setAddressTx5 = await dataStoreContract.set_u256(dataCall5.calldata) - await provider.waitForTransaction(setAddressTx5.transaction_hash) - - const dataCall6 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pool_amount_key(marketTokenAddress, deployERC20Response.deploy.contract_address), - 2500000000000000000000000000000000000000000000n - ] - ) - const setAddressTx6 = await dataStoreContract.set_u256(dataCall6.calldata) - await provider.waitForTransaction(setAddressTx6.transaction_hash) - - // Set Constants for long - const dataCall7 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pnl_factor_key( - "0x4896bc14d7c67b49131baf26724d3f29032ddd7539a3a8d88324140ea2de9b4", - marketTokenAddress, - true - ), - 50000000000000000000000000000000000000000000000n - ] - ) - const setAddressTx7 = await dataStoreContract.set_u256(dataCall7.calldata) - await provider.waitForTransaction(setAddressTx7.transaction_hash) - - const dataCall9 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pnl_factor_key( - "0x425655404757d831905ce0c7aeb290f47c630d959038f3d087a009ba1236dbe", - marketTokenAddress, - true - ), - 50000000000000000000000000000000000000000000000n - ] - ) - const setAddressTx9 = await dataStoreContract.set_u256(dataCall9.calldata) - await provider.waitForTransaction(setAddressTx9.transaction_hash) - - const dataCall10 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_reserve_factor_key( - marketTokenAddress, - true - ), - 1000000000000000000n - ] - ) - const setAddressTx10 = await dataStoreContract.set_u256(dataCall10.calldata) - await provider.waitForTransaction(setAddressTx10.transaction_hash) - - const dataCall11 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_open_interest_reserve_factor_key( - marketTokenAddress, - true - ), - 1000000000000000000n - ] - ) - const setAddressTx11 = await dataStoreContract.set_u256(dataCall11.calldata) - await provider.waitForTransaction(setAddressTx11.transaction_hash) - - const dataCall12 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_open_interest_key( - marketTokenAddress, - deployzETHResponse.deploy.contract_address, - true - ), - 1n - ] - ) - const setAddressTx12 = await dataStoreContract.set_u256(dataCall12.calldata) - await provider.waitForTransaction(setAddressTx12.transaction_hash) - - const dataCall8 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_open_interest_key( - marketTokenAddress, - true - ), - 1000000000000000000000000000000000000000000000000000n - ] - ) - const setAddressTx8 = await dataStoreContract.set_u256(dataCall8.calldata) - await provider.waitForTransaction(setAddressTx8.transaction_hash) - - // Set constants for short - const dataCall13 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pnl_factor_key( - "0x4896bc14d7c67b49131baf26724d3f29032ddd7539a3a8d88324140ea2de9b4", - marketTokenAddress, - false - ), - 50000000000000000000000000000000000000000000000n - ] - ) - const setAddressTx13 = await dataStoreContract.set_u256(dataCall13.calldata) - await provider.waitForTransaction(setAddressTx13.transaction_hash) - - const dataCall14 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pnl_factor_key( - "0x425655404757d831905ce0c7aeb290f47c630d959038f3d087a009ba1236dbe", - marketTokenAddress, - false - ), - 50000000000000000000000000000000000000000000000n - ] - ) - const setAddressTx14 = await dataStoreContract.set_u256(dataCall14.calldata) - await provider.waitForTransaction(setAddressTx14.transaction_hash) - - const dataCall15 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_reserve_factor_key( - marketTokenAddress, - false - ), - 1000000000000000000n - ] - ) - const setAddressTx15 = await dataStoreContract.set_u256(dataCall15.calldata) - await provider.waitForTransaction(setAddressTx15.transaction_hash) - - const dataCall16 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_open_interest_reserve_factor_key( - marketTokenAddress, - false - ), - 1000000000000000000n - ] - ) - const setAddressTx16 = await dataStoreContract.set_u256(dataCall16.calldata) - await provider.waitForTransaction(setAddressTx16.transaction_hash) - - const dataCall17 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_open_interest_key( - marketTokenAddress, - deployERC20Response.deploy.contract_address, - false - ), - 1n - ] - ) - const setAddressTx17 = await dataStoreContract.set_u256(dataCall17.calldata) - await provider.waitForTransaction(setAddressTx17.transaction_hash) - - const dataCall18 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_open_interest_key( - marketTokenAddress, - false - ), - 1000000000000000000000000000000000000000000000000000n - ] - ) - const setAddressTx18 = await dataStoreContract.set_u256(dataCall18.calldata) - await provider.waitForTransaction(setAddressTx18.transaction_hash) - - - const usdcContract = new Contract(compiledERC20Sierra.abi, deployERC20Response.deploy.contract_address, provider) - usdcContract.connect(account0) - - const depositVaultAddress = process.env.DEPOSIT_VAULT as string - const zEthContract = new Contract(compiledERC20Sierra.abi, deployzETHResponse.deploy.contract_address, provider) - zEthContract.connect(account0) - - const transferCall2 = zEthContract.populate("mint", [marketTokenAddress, uint256.bnToUint256(50000000000000000000000000000000000000n)]) - const transferTx2 = await zEthContract.mint(transferCall2.calldata) - await provider.waitForTransaction(transferTx2.transaction_hash) - const transferUSDCCall = usdcContract.populate("mint", [marketTokenAddress, uint256.bnToUint256(25000000000000000000000000000000000000000n)]) - const transferUSDCTx = await usdcContract.mint(transferUSDCCall.calldata) - await provider.waitForTransaction(transferUSDCTx.transaction_hash) - - console.log("All pre-settings done.") + // const abi = compiledMarketFactorySierra.abi + // const marketFactoryContract = new Contract(abi, marketFactoryAddress, provider); + // console.log("Connected to MarketFactory: " + marketFactoryAddress) + // marketFactoryContract.connect(account0) + + // console.log("Granting roles...") + // const roleCall2 = roleStoreContract.populate("grant_role", [process.env.MARKET_FACTORY as string, shortString.encodeShortString("MARKET_KEEPER")]) + // const grant_role_tx2 = await roleStoreContract.grant_role(roleCall2.calldata) + // await provider.waitForTransaction(grant_role_tx2.transaction_hash) + + // const roleCall3 = roleStoreContract.populate("grant_role", [process.env.DEPOSIT_HANDLER as string, shortString.encodeShortString("CONTROLLER")]) + // const grant_role_tx3 = await roleStoreContract.grant_role(roleCall3.calldata) + // await provider.waitForTransaction(grant_role_tx3.transaction_hash) + + // const roleCall4 = roleStoreContract.populate("grant_role", [process.env.ORDER_HANDLER as string, shortString.encodeShortString("CONTROLLER")]) + // const grant_role_tx4 = await roleStoreContract.grant_role(roleCall4.calldata) + // await provider.waitForTransaction(grant_role_tx4.transaction_hash) + // console.log("Roles granted.") + + // console.log("Creating Market...") + // const myCall = marketFactoryContract.populate("create_market", [ + // deployzETHResponse.deploy.contract_address, + // deployzETHResponse.deploy.contract_address, + // deployERC20Response.deploy.contract_address, + // "market_type" + // ]); + // const res = await marketFactoryContract.create_market(myCall.calldata); + // const marketTokenAddress = (await provider.waitForTransaction(res.transaction_hash) as any).events[0].data[1]; + // console.log("Market created: " + marketTokenAddress) + + // // Set constants for trade + // dataStoreContract.connect(account0); + // const dataCall5 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_pool_amount_key(marketTokenAddress, deployzETHResponse.deploy.contract_address), + // 2500000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx5 = await dataStoreContract.set_u256(dataCall5.calldata) + // await provider.waitForTransaction(setAddressTx5.transaction_hash) + + // const dataCall6 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_pool_amount_key(marketTokenAddress, deployERC20Response.deploy.contract_address), + // 2500000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx6 = await dataStoreContract.set_u256(dataCall6.calldata) + // await provider.waitForTransaction(setAddressTx6.transaction_hash) + + // // Set Constants for long + // const dataCall7 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_pnl_factor_key( + // "0x4896bc14d7c67b49131baf26724d3f29032ddd7539a3a8d88324140ea2de9b4", + // marketTokenAddress, + // true + // ), + // 50000000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx7 = await dataStoreContract.set_u256(dataCall7.calldata) + // await provider.waitForTransaction(setAddressTx7.transaction_hash) + + // const dataCall9 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_pnl_factor_key( + // "0x425655404757d831905ce0c7aeb290f47c630d959038f3d087a009ba1236dbe", + // marketTokenAddress, + // true + // ), + // 50000000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx9 = await dataStoreContract.set_u256(dataCall9.calldata) + // await provider.waitForTransaction(setAddressTx9.transaction_hash) + + // const dataCall10 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_reserve_factor_key( + // marketTokenAddress, + // true + // ), + // 1000000000000000000n + // ] + // ) + // const setAddressTx10 = await dataStoreContract.set_u256(dataCall10.calldata) + // await provider.waitForTransaction(setAddressTx10.transaction_hash) + + // const dataCall11 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_open_interest_reserve_factor_key( + // marketTokenAddress, + // true + // ), + // 1000000000000000000n + // ] + // ) + // const setAddressTx11 = await dataStoreContract.set_u256(dataCall11.calldata) + // await provider.waitForTransaction(setAddressTx11.transaction_hash) + + // const dataCall12 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_open_interest_key( + // marketTokenAddress, + // deployzETHResponse.deploy.contract_address, + // true + // ), + // 1n + // ] + // ) + // const setAddressTx12 = await dataStoreContract.set_u256(dataCall12.calldata) + // await provider.waitForTransaction(setAddressTx12.transaction_hash) + + // const dataCall8 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_open_interest_key( + // marketTokenAddress, + // true + // ), + // 1000000000000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx8 = await dataStoreContract.set_u256(dataCall8.calldata) + // await provider.waitForTransaction(setAddressTx8.transaction_hash) + + // // Set constants for short + // const dataCall13 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_pnl_factor_key( + // "0x4896bc14d7c67b49131baf26724d3f29032ddd7539a3a8d88324140ea2de9b4", + // marketTokenAddress, + // false + // ), + // 50000000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx13 = await dataStoreContract.set_u256(dataCall13.calldata) + // await provider.waitForTransaction(setAddressTx13.transaction_hash) + + // const dataCall14 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_pnl_factor_key( + // "0x425655404757d831905ce0c7aeb290f47c630d959038f3d087a009ba1236dbe", + // marketTokenAddress, + // false + // ), + // 50000000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx14 = await dataStoreContract.set_u256(dataCall14.calldata) + // await provider.waitForTransaction(setAddressTx14.transaction_hash) + + // const dataCall15 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_reserve_factor_key( + // marketTokenAddress, + // false + // ), + // 1000000000000000000n + // ] + // ) + // const setAddressTx15 = await dataStoreContract.set_u256(dataCall15.calldata) + // await provider.waitForTransaction(setAddressTx15.transaction_hash) + + // const dataCall16 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_open_interest_reserve_factor_key( + // marketTokenAddress, + // false + // ), + // 1000000000000000000n + // ] + // ) + // const setAddressTx16 = await dataStoreContract.set_u256(dataCall16.calldata) + // await provider.waitForTransaction(setAddressTx16.transaction_hash) + + // const dataCall17 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_open_interest_key( + // marketTokenAddress, + // deployERC20Response.deploy.contract_address, + // false + // ), + // 1n + // ] + // ) + // const setAddressTx17 = await dataStoreContract.set_u256(dataCall17.calldata) + // await provider.waitForTransaction(setAddressTx17.transaction_hash) + + // const dataCall18 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_max_open_interest_key( + // marketTokenAddress, + // false + // ), + // 1000000000000000000000000000000000000000000000000000n + // ] + // ) + // const setAddressTx18 = await dataStoreContract.set_u256(dataCall18.calldata) + // await provider.waitForTransaction(setAddressTx18.transaction_hash) + + + // const usdcContract = new Contract(compiledERC20Sierra.abi, deployERC20Response.deploy.contract_address, provider) + // usdcContract.connect(account0) + + // const depositVaultAddress = process.env.DEPOSIT_VAULT as string + // const zEthContract = new Contract(compiledERC20Sierra.abi, deployzETHResponse.deploy.contract_address, provider) + // zEthContract.connect(account0) + + // const transferCall2 = zEthContract.populate("mint", [marketTokenAddress, uint256.bnToUint256(50000000000000000000000000000000000000n)]) + // const transferTx2 = await zEthContract.mint(transferCall2.calldata) + // await provider.waitForTransaction(transferTx2.transaction_hash) + // const transferUSDCCall = usdcContract.populate("mint", [marketTokenAddress, uint256.bnToUint256(25000000000000000000000000000000000000000n)]) + // const transferUSDCTx = await usdcContract.mint(transferUSDCCall.calldata) + // await provider.waitForTransaction(transferUSDCTx.transaction_hash) + + // console.log("All pre-settings done.") // NOT NEEDED NOW + // const compiledERC20Casm = json.parse(fs.readFileSync( "./target/dev/satoru_ERC20.compiled_contract_class.json").toString( "ascii")) + // const compiledERC20Sierra = json.parse(fs.readFileSync( "./target/dev/satoru_ERC20.contract_class.json").toString( "ascii")) + // const erc20CallData: CallData = new CallData(compiledERC20Sierra.abi) + + // let USDCAddress = "0x6f82b80bfead3a249ee4352b27075dfa327de91e8e6df9755eb4f31de406d98"; + // let ETHaddress = "0x369c220f2a4699495bfe73ffe8a522f1bf1570c903c0d8fcf3767a252f7ae9a"; + // let MarketTokenAddress = "0x122cd6989d2429f580a0bff5e70cdb84b2bff4f8d19cee6b30a15d08c447e85"; + + // const usdcContract = new Contract(compiledERC20Sierra.abi, USDCAddress, provider) + // usdcContract.connect(account0) + + // const zEthContract = new Contract(compiledERC20Sierra.abi, ETHaddress, provider) + // zEthContract.connect(account0) + + // let depositVaultAddress = "0xad087c985ff7655d26eeaa496510a0590dd73b23d7e15beb53c79045ee4b6b"; + // let depositHandlerAddress = "0x7d82433606ef19a1f8a2d7e9be45c02677e214b83d2a079c930bc379ee246ef"; + // const transferCall = zEthContract.populate("mint", [depositVaultAddress, uint256.bnToUint256(50000000000000000000000000000n)]) // const transferTx = await zEthContract.mint(transferCall.calldata) // await provider.waitForTransaction(transferTx.transaction_hash) @@ -321,35 +338,21 @@ async function create_market() { // const transferUSDCTx2 = await usdcContract.mint(transferUSDCCall2.calldata) // await provider.waitForTransaction(transferUSDCTx2.transaction_hash) - // const compiledOracleSierra = json.parse(fs.readFileSync( "./target/dev/satoru_Oracle.contract_class.json").toString( "ascii")) - - // const abiOracle = compiledOracleSierra.abi - // const oracleContract = new Contract(abiOracle, process.env.ORACLE as string, provider); - // oracleContract.connect(account0); - // const setPrimaryPriceCall1 = oracleContract.populate("set_primary_price", [deployzETHResponse.deploy.address, uint256.bnToUint256(5000n)]) - // const setPrimaryPriceTx1 = await oracleContract.set_primary_price(setPrimaryPriceCall1.calldata); - // await provider.waitForTransaction(setPrimaryPriceTx1.transaction_hash) - - // const setPrimaryPriceCall2 = oracleContract.populate("set_primary_price", [usdcContract.address, uint256.bnToUint256(1n)]) - // const setPrimaryPriceTx2 = await oracleContract.set_primary_price(setPrimaryPriceCall2.calldata); - // await provider.waitForTransaction(setPrimaryPriceTx2.transaction_hash) - // console.log("Primary prices set.") - // console.log("Sending tokens to the deposit vault...") // console.log("Creating Deposit...") // const compiledDepositHandlerSierra = json.parse(fs.readFileSync( "./target/dev/satoru_DepositHandler.contract_class.json").toString( "ascii")) - // const depositHandlerContract = new Contract(compiledDepositHandlerSierra.abi, process.env.DEPOSIT_HANDLER as string, provider); + // const depositHandlerContract = new Contract(compiledDepositHandlerSierra.abi, depositHandlerAddress, provider); // depositHandlerContract.connect(account0) // const createDepositParams = { // receiver: account0.address, // callback_contract: 0, // ui_fee_receiver: 0, - // market: marketTokenAddress, - // initial_long_token: zEthContract.address, - // initial_short_token: deployERC20Response.deploy.contract_address, + // market: MarketTokenAddress, + // initial_long_token: ETHaddress, + // initial_short_token: USDCAddress, // long_token_swap_path: [], // short_token_swap_path: [], // min_market_tokens: uint256.bnToUint256(0), diff --git a/scripts/actions/executeDeposit.ts b/scripts/actions/executeDeposit.ts index 5769cad4..6c9bfe10 100644 --- a/scripts/actions/executeDeposit.ts +++ b/scripts/actions/executeDeposit.ts @@ -12,52 +12,53 @@ async function deploy() { const privateKey0: string = process.env.ACCOUNT_PRIVATE as string const account0Address: string = process.env.ACCOUNT_PUBLIC as string const account0 = new Account(provider, account0Address!, privateKey0!) - const marketToken = "0x69cfad927e7e4ef53261ad9a4630631ff8404746720ce3c73368de8291c4c4d" - const eth = "0x376bbceb1a044263cba28211fdcaee4e234ebf0c012521e1b258684bbc44949" - const usdc = "0x42a9a03ceb10ca07d3f598a627c414fe218b1138a78e3da6ce1675680cf95f2" + // const marketToken = "0x122cd6989d2429f580a0bff5e70cdb84b2bff4f8d19cee6b30a15d08c447e85" + // const eth = "0x369c220f2a4699495bfe73ffe8a522f1bf1570c903c0d8fcf3767a252f7ae9a" + // const usdc = "0x6f82b80bfead3a249ee4352b27075dfa327de91e8e6df9755eb4f31de406d98" console.log("Deploying with Account: " + account0Address) console.log("RPC: " + providerUrl) - const depositHandlerAddress = process.env.DEPOSIT_HANDLER as string + const depositHandlerAddress = "0x7d82433606ef19a1f8a2d7e9be45c02677e214b83d2a079c930bc379ee246ef"; + // const dataStoreAddress = "0x12b79d662e668a585b978c8fa80c33c269297ee14eba2383829ef1890a6e201"; const compiledDepositHandlerSierra = json.parse(fs.readFileSync("./target/dev/satoru_DepositHandler.contract_class.json").toString( "ascii")) - const compiledDataStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_DataStore.contract_class.json").toString( "ascii")) - const dataStoreContract = new Contract(compiledDataStoreSierra.abi, process.env.DATA_STORE as string, provider) - dataStoreContract.connect(account0); + // const compiledDataStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_DataStore.contract_class.json").toString( "ascii")) + // const dataStoreContract = new Contract(compiledDataStoreSierra.abi, dataStoreAddress, provider) + // dataStoreContract.connect(account0); - dataStoreContract.connect(account0); - const dataCall5 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pool_amount_key(marketToken, eth), - 2500000000000000000000000000000000000000000000n - ] - ) - const setAddressTx5 = await dataStoreContract.set_u256(dataCall5.calldata) - await provider.waitForTransaction(setAddressTx5.transaction_hash) + // dataStoreContract.connect(account0); + // const dataCall5 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_pool_amount_key(marketToken, eth), + // 50000000000000000000000000000n + // ] + // ) + // const setAddressTx5 = await dataStoreContract.set_u256(dataCall5.calldata) + // await provider.waitForTransaction(setAddressTx5.transaction_hash) - const dataCall6 = dataStoreContract.populate( - "set_u256", - [ - await dataStoreContract.get_max_pool_amount_key(marketToken, usdc), - 2500000000000000000000000000000000000000000000n - ] - ) - const setAddressTx6 = await dataStoreContract.set_u256(dataCall6.calldata) - await provider.waitForTransaction(setAddressTx6.transaction_hash) + // const dataCall6 = dataStoreContract.populate( + // "set_u256", + // [ + // await dataStoreContract.get_pool_amount_key(marketToken, usdc), + // 50000000000000000000000000000n + // ] + // ) + // const setAddressTx6 = await dataStoreContract.set_u256(dataCall6.calldata) + // await provider.waitForTransaction(setAddressTx6.transaction_hash) const depositHandlerContract = new Contract(compiledDepositHandlerSierra.abi, depositHandlerAddress, provider); const setPricesParams = { signer_info: 1, - tokens: ["0x4b76dd1e0a8d0bc196aa75d7a85a6cc81cf7bc8e0cd2e5061237477eb2c109a", "0x6b6f734dca33adeb315c1ff399886b577bc3f2b51165af9277ca0096847d267"], - compacted_min_oracle_block_numbers: [63970, 63970], - compacted_max_oracle_block_numbers: [64901, 64901], + tokens: ["0x369c220f2a4699495bfe73ffe8a522f1bf1570c903c0d8fcf3767a252f7ae9a", "0x6f82b80bfead3a249ee4352b27075dfa327de91e8e6df9755eb4f31de406d98"], + compacted_min_oracle_block_numbers: [8189, 8189], + compacted_max_oracle_block_numbers: [81189, 81189], compacted_oracle_timestamps: [171119803, 10], compacted_decimals: [1, 1], compacted_min_prices: [2147483648010000], // 500000, 10000 compacted compacted_min_prices_indexes: [0], - compacted_max_prices: [2147483648010000], // 500000, 10000 compacted + compacted_max_prices: [3060, 1], // 500000, 10000 compacted compacted_max_prices_indexes: [0], signatures: [ ['signatures1', 'signatures2'], ['signatures1', 'signatures2'] @@ -66,7 +67,7 @@ async function deploy() { }; depositHandlerContract.connect(account0) - let key = "0x6dd0864e0640b9fe1c5a8afc54e569bad9992e3fd55e422dc09dc6e95572a17"; + let key = "0x4d65a6c15f989ebcccc12f7ad07d69e0d2e3caede2bd40de1f2eb5898c50c17"; const executeOrderCall = depositHandlerContract.populate("execute_deposit", [ key, setPricesParams diff --git a/scripts/actions/executeLongOrder.ts b/scripts/actions/executeLongOrder.ts index dc8d8fa9..8e049b23 100644 --- a/scripts/actions/executeLongOrder.ts +++ b/scripts/actions/executeLongOrder.ts @@ -24,64 +24,60 @@ async function create_market() { const orderHandlerContract = new Contract(compiledOrderHandlerSierra.abi, process.env.ORDER_HANDLER as string, provider); - const compiledRoleStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_RoleStore.contract_class.json").toString( "ascii")) - const roleStoreContract = new Contract(compiledRoleStoreSierra.abi, process.env.ROLE_STORE as string, provider) - roleStoreContract.connect(account0); + // const compiledRoleStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_RoleStore.contract_class.json").toString( "ascii")) + // const roleStoreContract = new Contract(compiledRoleStoreSierra.abi, process.env.ROLE_STORE as string, provider) + // roleStoreContract.connect(account0); - console.log("Granting roles...") - const roleCall2 = roleStoreContract.populate("grant_role", [account0Address as string, shortString.encodeShortString("ORDER_KEEPER")]) - const grant_role_tx2 = await roleStoreContract.grant_role(roleCall2.calldata) - await provider.waitForTransaction(grant_role_tx2.transaction_hash) - const roleCall3 = roleStoreContract.populate("grant_role", [process.env.INCREASE_ORDER_UTILS as string, shortString.encodeShortString("CONTROLLER")]) - const grant_role_tx3 = await roleStoreContract.grant_role(roleCall3.calldata) - await provider.waitForTransaction(grant_role_tx3.transaction_hash) + // console.log("Granting roles...") + // const roleCall2 = roleStoreContract.populate("grant_role", [account0Address as string, shortString.encodeShortString("ORDER_KEEPER")]) + // const grant_role_tx2 = await roleStoreContract.grant_role(roleCall2.calldata) + // await provider.waitForTransaction(grant_role_tx2.transaction_hash) + // const roleCall3 = roleStoreContract.populate("grant_role", [process.env.INCREASE_ORDER_UTILS as string, shortString.encodeShortString("CONTROLLER")]) + // const grant_role_tx3 = await roleStoreContract.grant_role(roleCall3.calldata) + // await provider.waitForTransaction(grant_role_tx3.transaction_hash) - console.log("Roles granted.") + // console.log("Roles granted.") const compiledDataStoreSierra = json.parse(fs.readFileSync( "./target/dev/satoru_DataStore.contract_class.json").toString( "ascii")) const dataStoreContract = new Contract(compiledDataStoreSierra.abi, process.env.DATA_STORE as string, provider) dataStoreContract.connect(account0) const dataCall8 = dataStoreContract.populate( - "set_u256", + "remove_position", [ - await dataStoreContract.get_max_open_interest_key( - marketTokenAddress, - true - ), - 1000000000000000000000000000000000000000000000000000n + "0x5985ad845114a848d9cffdf9124a029e1d3fe1e704ed8230e42872f80f88cd1", + "0x4eaaccd6d2a2d9d1c0404cd2fea8485d62b437415948309736fdfd2542aee3" ] ) - const setAddressTx8 = await dataStoreContract.set_u256(dataCall8.calldata) + const setAddressTx8 = await dataStoreContract.remove_position(dataCall8.calldata) await provider.waitForTransaction(setAddressTx8.transaction_hash) - orderHandlerContract.connect(account0) - const setPricesParams = { - signer_info: 1, - tokens: ["0x4b76dd1e0a8d0bc196aa75d7a85a6cc81cf7bc8e0cd2e5061237477eb2c109a", "0x6b6f734dca33adeb315c1ff399886b577bc3f2b51165af9277ca0096847d267"], - compacted_min_oracle_block_numbers: [63970, 63970], - compacted_max_oracle_block_numbers: [64901, 64901], - compacted_oracle_timestamps: [171119803, 10], - compacted_decimals: [1, 1], - compacted_min_prices: [2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: [0], - compacted_max_prices: [2147483648010000], // 500000, 10000 compacted - compacted_max_prices_indexes: [0], - signatures: [ - ['signatures1', 'signatures2'], ['signatures1', 'signatures2'] - ], - price_feed_tokens: [] - }; + // orderHandlerContract.connect(account0) + // const setPricesParams = { + // signer_info: 1, + // tokens: ["0x369c220f2a4699495bfe73ffe8a522f1bf1570c903c0d8fcf3767a252f7ae9a", "0x6f82b80bfead3a249ee4352b27075dfa327de91e8e6df9755eb4f31de406d98"], + // compacted_min_oracle_block_numbers: [63970, 63970], + // compacted_max_oracle_block_numbers: [64901, 64901], + // compacted_oracle_timestamps: [171119803, 10], + // compacted_decimals: [1, 1], + // compacted_min_prices: [2147483648010000], // 500000, 10000 compacted + // compacted_min_prices_indexes: [0], + // compacted_max_prices: [3389, 1], // 500000, 10000 compacted + // compacted_max_prices_indexes: [0], + // signatures: [ + // ['signatures1', 'signatures2'], ['signatures1', 'signatures2'] + // ], + // price_feed_tokens: [] + // }; - orderHandlerContract.connect(account0) - let key = "0x64f2c4ef9ed1a5f949fa49ac7ae519b0e580b4ab9ecb3be1a9583e543ea54b3"; - const executeOrderCall = orderHandlerContract.populate("execute_order_keeper", [ - key, - setPricesParams, - account0Address - ]) - let tx = await orderHandlerContract.execute_order_keeper(executeOrderCall.calldata) + // orderHandlerContract.connect(account0) + // let key = "0x1ecd2ae448fe9c2d0b632699a4c89f250f765d08dbba45a1a79c97ebd4dd155"; + // const executeOrderCall = orderHandlerContract.populate("execute_order", [ + // key, + // setPricesParams, + // ]) + // let tx = await orderHandlerContract.execute_order(executeOrderCall.calldata) } create_market() \ No newline at end of file diff --git a/src/test_utils/deposit_setup.cairo b/src/test_utils/deposit_setup.cairo index 84194717..a1270acb 100644 --- a/src/test_utils/deposit_setup.cairo +++ b/src/test_utils/deposit_setup.cairo @@ -366,3 +366,41 @@ fn deposit_setup( market ) } + +fn exec_order( + order_handler: ContractAddress, + role_store: ContractAddress, + key: felt252, + long_token_price: u256, + short_token_price: u256 +) -> () { + let signatures: Span = array![0].span(); + let set_price_params = SetPricesParams { + signer_info: 0, + tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], + compacted_min_oracle_block_numbers: array![1910, 1910], + compacted_max_oracle_block_numbers: array![1920, 1920], + compacted_oracle_timestamps: array![9999, 9999], + compacted_decimals: array![1, 1], + compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted + compacted_min_prices_indexes: array![0], + compacted_max_prices: array![ + long_token_price, short_token_price + ], // 500000, 10000 compacted + compacted_max_prices_indexes: array![0], + signatures: array![ + array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() + ], + price_feed_tokens: array![] + }; + + let keeper_address = contract_address_const::<'keeper'>(); + IRoleStoreDispatcher { contract_address: role_store } + .grant_role(keeper_address, role::ORDER_KEEPER); + + stop_prank(order_handler); + start_prank(order_handler, keeper_address); + // TODO add real signatures check on Oracle Account + IOrderHandlerDispatcher { contract_address: order_handler } + .execute_order(key, set_price_params); +} diff --git a/tests/integration/test_long_integration.cairo b/tests/integration/test_long_integration.cairo index a9690e60..831621c4 100644 --- a/tests/integration/test_long_integration.cairo +++ b/tests/integration/test_long_integration.cairo @@ -65,7 +65,7 @@ use satoru::exchange::order_handler::{ OrderHandler, IOrderHandlerDispatcher, IOrderHandlerDispatcherTrait }; use satoru::test_utils::{ - tests_lib::{setup, create_market, teardown}, deposit_setup::{deposit_setup} + tests_lib::{setup, create_market, teardown}, deposit_setup::{deposit_setup, exec_order} }; #[test] @@ -175,33 +175,9 @@ fn test_long_increase_decrease_close() { let got_order_long = data_store.get_order(key_long); // Execute the swap order. - - let signatures: Span = array![0].span(); - let set_price_params = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3500, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1935); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long, set_price_params); + exec_order(order_handler.contract_address, role_store.contract_address, key_long, 3500, 1); + 'long position SUCCEEDED'.print(); let position_key = data_store.get_account_position_keys(caller_address, 0, 10); @@ -262,32 +238,8 @@ fn test_long_increase_decrease_close() { 'Long increase created'.print(); // Execute the swap order. - - let set_price_params_inc = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3850, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1945); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long_inc, set_price_params_inc); + exec_order(order_handler.contract_address, role_store.contract_address, key_long_inc, 3850, 1); 'long pos inc SUCCEEDED'.print(); let position_key = data_store.get_account_position_keys(caller_address, 0, 10); @@ -360,30 +312,8 @@ fn test_long_increase_decrease_close() { let got_order_long_dec = data_store.get_order(key_long_dec); // Execute the swap order. - let set_price_params_dec = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3850, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1955); - order_handler.execute_order(key_long_dec, set_price_params_dec); + exec_order(order_handler.contract_address, role_store.contract_address, key_long_dec, 3850, 1); 'long pos dec SUCCEEDED'.print(); // Recieved 2974.999 USDC @@ -479,33 +409,12 @@ fn test_long_increase_decrease_close() { let key_long_dec_2 = exchange_router.create_order(order_params_long_dec_2); 'long decrease created'.print(); let got_order_long_dec = data_store.get_order(key_long_dec_2); - // Execute the swap order. - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - let set_price_params_dec2 = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![4000, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); + // Execute the long order. start_roll(order_handler.contract_address, 1965); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long_dec_2, set_price_params_dec2); + exec_order( + order_handler.contract_address, role_store.contract_address, key_long_dec_2, 4000, 1 + ); 'Long pos close SUCCEEDED'.print(); let first_position_close = data_store.get_position(position_key_1); @@ -643,33 +552,8 @@ fn test_takeprofit_long() { let got_order_long = data_store.get_order(key_long); // Execute the swap order. - - let signatures: Span = array![0].span(); - let set_price_params = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3500, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1935); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long, set_price_params); + exec_order(order_handler.contract_address, role_store.contract_address, key_long, 3500, 1); 'long position SUCCEEDED'.print(); let position_key = data_store.get_account_position_keys(caller_address, 0, 10); @@ -731,32 +615,8 @@ fn test_takeprofit_long() { 'Long increase created'.print(); // Execute the swap order. - - let set_price_params_inc = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3850, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1945); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long_inc, set_price_params_inc); + exec_order(order_handler.contract_address, role_store.contract_address, key_long_inc, 3850, 1); 'long pos inc SUCCEEDED'.print(); let position_key = data_store.get_account_position_keys(caller_address, 0, 10); @@ -831,30 +691,8 @@ fn test_takeprofit_long() { let got_order_long_dec = data_store.get_order(key_long_dec); // Execute the swap order. - let set_price_params_dec = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3950, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1955); - order_handler.execute_order(key_long_dec, set_price_params_dec); + exec_order(order_handler.contract_address, role_store.contract_address, key_long_dec, 3950, 1); 'long pos dec SUCCEEDED'.print(); // Recieved 2974.999 USDC @@ -950,33 +788,12 @@ fn test_takeprofit_long() { let key_long_dec_2 = exchange_router.create_order(order_params_long_dec_2); 'long decrease created'.print(); let got_order_long_dec = data_store.get_order(key_long_dec_2); - // Execute the swap order. - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - let set_price_params_dec2 = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![4000, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); + // Execute the swap order. start_roll(order_handler.contract_address, 1965); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long_dec_2, set_price_params_dec2); + exec_order( + order_handler.contract_address, role_store.contract_address, key_long_dec_2, 4000, 1 + ); 'Long pos close SUCCEEDED'.print(); let first_position_close = data_store.get_position(position_key_1); @@ -1115,33 +932,8 @@ fn test_takeprofit_long_increase_fails() { let got_order_long = data_store.get_order(key_long); // Execute the swap order. - - let signatures: Span = array![0].span(); - let set_price_params = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3500, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1935); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long, set_price_params); + exec_order(order_handler.contract_address, role_store.contract_address, key_long, 3500, 1); 'long position SUCCEEDED'.print(); let position_key = data_store.get_account_position_keys(caller_address, 0, 10); @@ -1203,32 +995,8 @@ fn test_takeprofit_long_increase_fails() { 'Long increase created'.print(); // Execute the swap order. - - let set_price_params_inc = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3860, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1945); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long_inc, set_price_params_inc); + exec_order(order_handler.contract_address, role_store.contract_address, key_long_inc, 3860, 1); 'long pos inc SUCCEEDED'.print(); let position_key = data_store.get_account_position_keys(caller_address, 0, 10); @@ -1303,30 +1071,8 @@ fn test_takeprofit_long_increase_fails() { let got_order_long_dec = data_store.get_order(key_long_dec); // Execute the swap order. - let set_price_params_dec = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3950, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1955); - order_handler.execute_order(key_long_dec, set_price_params_dec); + exec_order(order_handler.contract_address, role_store.contract_address, key_long_dec, 3950, 1); 'long pos dec SUCCEEDED'.print(); // Recieved 2974.999 USDC @@ -1423,32 +1169,10 @@ fn test_takeprofit_long_increase_fails() { 'long decrease created'.print(); let got_order_long_dec = data_store.get_order(key_long_dec_2); // Execute the swap order. - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - let set_price_params_dec2 = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![4000, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1965); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_long_dec_2, set_price_params_dec2); + exec_order( + order_handler.contract_address, role_store.contract_address, key_long_dec_2, 4000, 1 + ); 'Long pos close SUCCEEDED'.print(); let first_position_close = data_store.get_position(position_key_1); diff --git a/tests/integration/test_short_integration.cairo b/tests/integration/test_short_integration.cairo index dd8b3dcc..4f02a9e9 100644 --- a/tests/integration/test_short_integration.cairo +++ b/tests/integration/test_short_integration.cairo @@ -64,7 +64,9 @@ use satoru::market::{market::{UniqueIdMarketImpl},}; use satoru::exchange::order_handler::{ OrderHandler, IOrderHandlerDispatcher, IOrderHandlerDispatcherTrait }; -use satoru::test_utils::{tests_lib::{setup, create_market, teardown}, deposit_setup::deposit_setup}; +use satoru::test_utils::{ + tests_lib::{setup, create_market, teardown}, deposit_setup::{deposit_setup, exec_order} +}; const INITIAL_TOKENS_MINTED: felt252 = 1000; #[test] @@ -197,33 +199,8 @@ fn test_short_increase_decrease_close() { assert(balance_caller_USDC == 43000000000000000000000, 'USDC be 43 000 USDC'); // Execute the swap order. - - let signatures: Span = array![0].span(); - let set_price_params = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3500, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1935); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_short, set_price_params); + exec_order(order_handler.contract_address, role_store.contract_address, key_short, 3500, 1); 'short position SUCCEEDED'.print(); let position_key = data_store.get_account_position_keys(caller_address, 0, 10); @@ -318,31 +295,10 @@ fn test_short_increase_decrease_close() { 'short decrease created'.print(); // Execute the swap order. - let keeper_address = contract_address_const::<'keeper'>(); - role_store.grant_role(keeper_address, role::ORDER_KEEPER); - - let set_price_params_dec2 = SetPricesParams { - signer_info: 0, - tokens: array![contract_address_const::<'ETH'>(), contract_address_const::<'USDC'>()], - compacted_min_oracle_block_numbers: array![1910, 1910], - compacted_max_oracle_block_numbers: array![1920, 1920], - compacted_oracle_timestamps: array![9999, 9999], - compacted_decimals: array![1, 1], - compacted_min_prices: array![2147483648010000], // 500000, 10000 compacted - compacted_min_prices_indexes: array![0], - compacted_max_prices: array![3000, 1], // 500000, 10000 compacted - compacted_max_prices_indexes: array![0], - signatures: array![ - array!['signatures1', 'signatures2'].span(), array!['signatures1', 'signatures2'].span() - ], - price_feed_tokens: array![] - }; - - stop_prank(order_handler.contract_address); - start_prank(order_handler.contract_address, keeper_address); start_roll(order_handler.contract_address, 1965); - // TODO add real signatures check on Oracle Account - order_handler.execute_order(key_short_dec_2, set_price_params_dec2); + exec_order( + order_handler.contract_address, role_store.contract_address, key_short_dec_2, 3000, 1 + ); 'Short pos close SUCCEEDED'.print(); let first_position_close = data_store.get_position(position_key_1);