From cce44ba5ce751a95094ad29f4df4bfda45ac3191 Mon Sep 17 00:00:00 2001 From: bexan Date: Tue, 12 Mar 2024 17:58:40 +0100 Subject: [PATCH] solis: remove useless code --- contracts.json | 2 +- crates/solis/messaging.local.json | 8 +- crates/solis/src/error.rs | 15 -- crates/solis/src/hooker.rs | 36 +-- crates/solis/src/main.rs | 11 +- packages/core/src/contracts.ts | 8 +- packages/core/tests-new/cancelOffer.test.ts | 91 ------- packages/core/tests-new/createAccount.test.ts | 24 -- packages/core/tests-new/createListing.test.ts | 96 ------- .../core/tests-new/fulfillListing.test.ts | 83 ------- packages/core/tests-new/fulfillOffer.test.ts | 234 ------------------ packages/core/tests-new/utils/index.ts | 28 --- 12 files changed, 18 insertions(+), 618 deletions(-) delete mode 100644 crates/solis/src/error.rs delete mode 100644 packages/core/tests-new/cancelOffer.test.ts delete mode 100644 packages/core/tests-new/createAccount.test.ts delete mode 100644 packages/core/tests-new/createListing.test.ts delete mode 100644 packages/core/tests-new/fulfillListing.test.ts delete mode 100644 packages/core/tests-new/fulfillOffer.test.ts delete mode 100644 packages/core/tests-new/utils/index.ts diff --git a/contracts.json b/contracts.json index 1b8b035b4..d8e5779fb 100644 --- a/contracts.json +++ b/contracts.json @@ -1 +1 @@ -{"goerli":{"nftContract":"0x22411b480425fe6e627fdf4d1b6ac7f8567314ada5617a0a6d8ef3e74b69436","messaging":"0x2c3d3e0c37d29364a13ba8cff046e7bc5624655a72526961876a1c8bb3f63c8","executor":"0x73148536f8ea9546e92761d11515548cc433df46883d5ee98871a6f63a0bbbc","orderbook":"0x66f1e6acf9bdbd23837b2eea271430298b355c506978edb132737e7fcb6b310"},"sepolia":{},"mainnet":{},"dev":{"messaging":"0x39158ac23c270863af623b7f3f9f5d4d723406df4e7b6153bd2a81ea320304d","executor":"0xf15cf88c171ed5c762b895331319ca57177cf31f575c76536e7657c8874bc6","nftContract":"0x5672baf1f4f06d36ef564ace9248b7df377ec112853aa605dd51bbd006323a7","eth":"0x144a0c8ae6e665dc3652e164ba2881eda87ad9cb5dcc93d30ca6d61b818014c","orderbook":"0x47be7c3b8503580aca1999774a9b0be1a79a2a60fd1f01b10eb28be8f8107ad"}} \ No newline at end of file +{"goerli":{"nftContract":"0x22411b480425fe6e627fdf4d1b6ac7f8567314ada5617a0a6d8ef3e74b69436","messaging":"0x2c3d3e0c37d29364a13ba8cff046e7bc5624655a72526961876a1c8bb3f63c8","executor":"0x73148536f8ea9546e92761d11515548cc433df46883d5ee98871a6f63a0bbbc","orderbook":"0x66f1e6acf9bdbd23837b2eea271430298b355c506978edb132737e7fcb6b310"},"sepolia":{},"mainnet":{},"dev":{"messaging":"0x28f42924c72d2d444be20e715d0b5c97544b22e3147002d67bd59232187bc3","executor":"0x24457c33d887b2b3c6a9dd1d65205e1b1796e97537d5ee1e291012bb68ee382","nftContract":"0x64e73de9240ba05218b7e8fe53d1f9a3bae51791c5c5b6746fa7dae2e912764","eth":"0x144a0c8ae6e665dc3652e164ba2881eda87ad9cb5dcc93d30ca6d61b818014c","orderbook":"0x6404d0ba6809a56549bd132573e39170d0134c74a21b06375352c2cfd1c54d8"}} \ No newline at end of file diff --git a/crates/solis/messaging.local.json b/crates/solis/messaging.local.json index ca2d581c6..31b48cd27 100644 --- a/crates/solis/messaging.local.json +++ b/crates/solis/messaging.local.json @@ -1,9 +1,9 @@ { "chain": "starknet", "rpc_url": "http://127.0.0.1:5050", - "contract_address": "0x38e142d3d69cfe6757fd9d11704652f6bd8302dd23f483555e9b5698bf69d5", - "sender_address": "0x2d71e9c974539bb3ffb4b115e66a23d0f62a641ea66c4016e903454c8753bbc", - "private_key": "0x33003003001800009900180300d206308b0070db00121318d17b5e6262150b", + "contract_address": "0x28f42924c72d2d444be20e715d0b5c97544b22e3147002d67bd59232187bc3", + "sender_address": "0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03", + "private_key": "0x1800000000300000180000000000030000000000003006001800006600", "interval": 2, "from_block": 0 -} +} \ No newline at end of file diff --git a/crates/solis/src/error.rs b/crates/solis/src/error.rs deleted file mode 100644 index 1ff9df901..000000000 --- a/crates/solis/src/error.rs +++ /dev/null @@ -1,15 +0,0 @@ -//! Error and Result module. -//! -use thiserror::Error; - -#[derive(Error, Debug)] -pub enum Error { - #[error("Felt conversion error: {0}")] - FeltConversion(String), - // #[error("Transaction verification error: {0}")] - // TransactionVerification(String), - // #[error("An error occurred: {0}")] - // General(String), -} - -pub type SolisResult = Result; diff --git a/crates/solis/src/hooker.rs b/crates/solis/src/hooker.rs index a2daa0f4f..9687f2f30 100644 --- a/crates/solis/src/hooker.rs +++ b/crates/solis/src/hooker.rs @@ -339,40 +339,6 @@ impl KatanaHooker for Sol current_owner: cainome::cairo_serde::ContractAddress(execution_info.nft_from.into()), }; - let owner_ship_verification = self.verify_ownership(&verifier).await; - if !owner_ship_verification { - println!("verify ownership for starknet before failed"); - return false; - } - - if !self - .verify_balance(&BalanceVerifier { - currency_address: ContractAddress(execution_info.payment_currency_address.into()), - offerer: cainome::cairo_serde::ContractAddress(execution_info.nft_to.into()), - start_amount: U256 { - low: execution_info.payment_amount.low, - high: execution_info.payment_amount.high, - }, - }) - .await - { - return false; - } - - let execution_info = match ExecutionInfo::cairo_deserialize(&call.calldata, 0) { - Ok(execution_info) => execution_info, - Err(e) => { - tracing::error!("Fail deserializing ExecutionInfo: {:?}", e); - return false; - } - }; - - let verifier = OwnershipVerifier { - token_address: ContractAddress(execution_info.nft_address.into()), - token_id: execution_info.nft_token_id, - current_owner: cainome::cairo_serde::ContractAddress(execution_info.nft_to.into()), - }; - let owner_ship_verification = self.verify_ownership(&verifier).await; if !owner_ship_verification { // rollback the status @@ -386,7 +352,7 @@ impl KatanaHooker for Sol if !self .verify_balance(&BalanceVerifier { currency_address: ContractAddress(execution_info.payment_currency_address.into()), - offerer: cainome::cairo_serde::ContractAddress(execution_info.nft_from.into()), + offerer: cainome::cairo_serde::ContractAddress(execution_info.nft_to.into()), start_amount: U256 { low: execution_info.payment_amount.low, high: execution_info.payment_amount.high, diff --git a/crates/solis/src/main.rs b/crates/solis/src/main.rs index 4bbe7481b..7c66b7d4c 100644 --- a/crates/solis/src/main.rs +++ b/crates/solis/src/main.rs @@ -38,7 +38,6 @@ use args::KatanaArgs; //mod args; mod contracts; -mod error; mod hooker; mod solis_args; @@ -146,18 +145,18 @@ fn print_intro(accounts: String, seed: String, address: String, account_class_ha Style::new().blue().apply_to( r" - ___ ___ | (_)___ + ___ ___ | (_)___ / __|/ _ \| | / __| \__ \ (_) | | \__ \ -|___/\___/|_|_|___/ +|___/\___/|_|_|___/ " ) ); println!( r" -PREDEPLOYED CONTRACTS -================== +PREDEPLOYED CONTRACTS +================== | Contract | Fee Token | Address | {} @@ -178,7 +177,7 @@ PREDEPLOYED CONTRACTS ); println!( - r" + r" PREFUNDED ACCOUNTS ================== {accounts} diff --git a/packages/core/src/contracts.ts b/packages/core/src/contracts.ts index c84ab7c5a..35d3dad7f 100644 --- a/packages/core/src/contracts.ts +++ b/packages/core/src/contracts.ts @@ -8,4 +8,10 @@ export const GOERLI_CONTRACTS = { }; export const SEPOLIA_CONTRACTS = {}; export const MAINNET_CONTRACTS = {}; -export const DEV_CONTRACTS = {}; +export const DEV_CONTRACTS = { + "messaging": "0x28f42924c72d2d444be20e715d0b5c97544b22e3147002d67bd59232187bc3", + "executor": "0x24457c33d887b2b3c6a9dd1d65205e1b1796e97537d5ee1e291012bb68ee382", + "nftContract": "0x64e73de9240ba05218b7e8fe53d1f9a3bae51791c5c5b6746fa7dae2e912764", + "eth": "0x144a0c8ae6e665dc3652e164ba2881eda87ad9cb5dcc93d30ca6d61b818014c", + "orderbook": "0x6404d0ba6809a56549bd132573e39170d0134c74a21b06375352c2cfd1c54d8" +}; diff --git a/packages/core/tests-new/cancelOffer.test.ts b/packages/core/tests-new/cancelOffer.test.ts deleted file mode 100644 index 48e4f4222..000000000 --- a/packages/core/tests-new/cancelOffer.test.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { Account, AccountInterface, RpcProvider, shortString } from "starknet"; - -import { config } from "../examples/config"; - -import { - approveERC20, - cancelOrder, - createAccount, - createOffer, fetchOrCreateAccount, - getOrderStatus, - getOrderType, - ListingV1 -} from "../src"; -import { - generateRandomTokenId, - getTypeFromCairoCustomEnum, - sleep -} from "./utils"; -import { whitelistBroker } from "../examples/utils/whitelistBroker"; -import { mintERC20 } from "../examples/utils/mintERC20"; -import { STARKNET_ETH_ADDRESS, STARKNET_NFT_ADDRESS } from "../examples/constants"; - -describe("ArkProject cancel offer", () => { - it("should cancel an offer and verify its status and type", async () => { - const { arkProvider, starknetProvider } = config; - - const solisAdminAccount = await fetchOrCreateAccount( - config.arkProvider, - process.env.SOLIS_ADMIN_ADDRESS_DEV, - process.env.SOLIS_ADMIN_PRIVATE_KEY_DEV - ); - - await whitelistBroker( - config, - solisAdminAccount, - 123 - ); - - const { account: arkAccount } = await createAccount(arkProvider); - const { account: starknetAccount } = await createAccount(starknetProvider); - const order: ListingV1 = { - brokerId: 123, - tokenAddress: STARKNET_NFT_ADDRESS, - tokenId: generateRandomTokenId(), - startAmount: 600000000000000000, - currencyAddress: STARKNET_ETH_ADDRESS // The ERC20 address - }; - - await mintERC20( - starknetProvider, - starknetAccount, - order.startAmount - ); - - await approveERC20(config, { - starknetAccount: starknetAccount, - contractAddress: STARKNET_ETH_ADDRESS, - amount: order.startAmount - }); - - const orderHash = await createOffer(config,{starknetAccount, arkAccount, offer: order }); - await sleep(1000); // Wait for the transaction to be processed - // Use Jest's expect for promise resolution - const r1 = await getOrderStatus(config, { orderHash }); - const orderStatusBefore = shortString.decodeShortString(r1.orderStatus) - expect(orderStatusBefore).toEqual("OPEN"); - - const r2 = await getOrderType(config, { orderHash }); - const orderType = getTypeFromCairoCustomEnum(r2.orderType); - - expect(orderType).toEqual("OFFER"); - - - const cancelInfo = { - orderHash: orderHash, - tokenAddress: order.tokenAddress, - tokenId: order.tokenId - }; - - await cancelOrder(config, { - starknetAccount, - arkAccount, - cancelInfo - }); - - const r3 = await getOrderStatus(config, { orderHash }); - const orderStatusAfter = shortString.decodeShortString(r3.orderStatus) - expect(orderStatusAfter).toEqual("CANCELLED_USER"); - - }, 40000); -}); diff --git a/packages/core/tests-new/createAccount.test.ts b/packages/core/tests-new/createAccount.test.ts deleted file mode 100644 index 8d9b32db0..000000000 --- a/packages/core/tests-new/createAccount.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { RpcProvider } from "starknet"; - -import { createAccount } from "../src/actions/account/account"; - -describe("ArkProject Account Creation", () => { - it("should successfully create an account", async () => { - // Initialize the RPC provider with the ArkChain node URL - const provider = new RpcProvider({ - nodeUrl: "http://0.0.0.0:7777" - }); - - // Create an account using the provider - const accountDetails = await createAccount(provider); - - // Assertions to verify account creation - expect(accountDetails).toHaveProperty("address"); - expect(typeof accountDetails.address).toBe("string"); - expect(accountDetails).toHaveProperty("privateKey"); - expect(typeof accountDetails.privateKey).toBe("string"); - expect(accountDetails).toHaveProperty("publicKey"); - expect(typeof accountDetails.publicKey).toBe("string"); - expect(accountDetails).toHaveProperty("account"); - }); -}); diff --git a/packages/core/tests-new/createListing.test.ts b/packages/core/tests-new/createListing.test.ts deleted file mode 100644 index 4cbb774fa..000000000 --- a/packages/core/tests-new/createListing.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { shortString } from "starknet"; - -import { config } from "../examples/config"; -import { STARKNET_NFT_ADDRESS } from "../examples/constants"; -import { getCurrentTokenId } from "../examples/utils/getCurrentTokenId"; -import { mintERC721 } from "../examples/utils/mintERC721"; -import { - createAccount, - fetchOrCreateAccount -} from "../src/actions/account/account"; -import { createListing } from "../src/actions/order"; -import { getOrderStatus } from "../src/actions/read"; -import { ListingV1 } from "../src/types"; -import { whitelistBroker } from "../examples/utils/whitelistBroker"; - -test("ArkProject create a listing", async () => { - const { account: arkAccount } = await createAccount(config.arkProvider); - expect(arkAccount).toBeDefined(); - - const solisAdminAccount = await fetchOrCreateAccount( - config.arkProvider, - process.env.SOLIS_ADMIN_ADDRESS_DEV, - process.env.SOLIS_ADMIN_PRIVATE_KEY_DEV - ); - - await whitelistBroker( - config, - solisAdminAccount, - 123 - ); - - const starknetOffererAccount = await fetchOrCreateAccount( - config.starknetProvider, - process.env.STARKNET_ACCOUNT1_ADDRESS, - process.env.STARKNET_ACCOUNT1_PRIVATE_KEY - ); - - await mintERC721(config.starknetProvider, starknetOffererAccount); - const tokenId = await getCurrentTokenId(config, STARKNET_NFT_ADDRESS); - - const order: ListingV1 = { - brokerId: 123, - tokenAddress: STARKNET_NFT_ADDRESS, - tokenId: BigInt(tokenId) + BigInt(1), - startAmount: 600000000000000000 - }; - - const orderHash = await createListing(config, { - starknetAccount: starknetOffererAccount, - arkAccount, - order - }); - expect(orderHash).toBeDefined(); - - const { orderStatus: orderStatusBefore } = await getOrderStatus(config, { - orderHash - }); - - expect(shortString.decodeShortString(orderStatusBefore)).toBe("OPEN"); - -}, 20000); - -test("ArkProject create a listing without whitelisting broker", async () => { - const { account: arkAccount } = await createAccount(config.arkProvider); - expect(arkAccount).toBeDefined(); - - - const starknetOffererAccount = await fetchOrCreateAccount( - config.starknetProvider, - process.env.STARKNET_ACCOUNT1_ADDRESS, - process.env.STARKNET_ACCOUNT1_PRIVATE_KEY - ); - - await mintERC721(config.starknetProvider, starknetOffererAccount); - const tokenId = await getCurrentTokenId(config, STARKNET_NFT_ADDRESS); - - const order: ListingV1 = { - brokerId: 12345, - tokenAddress: STARKNET_NFT_ADDRESS, - tokenId: BigInt(tokenId) + BigInt(1), - startAmount: 600000000000000000 - }; - - try { - await createListing(config, { - starknetAccount: starknetOffererAccount, - arkAccount, - order - }); - } - catch (e) { - const errorString = e instanceof Error ? e.message : JSON.stringify(e); - expect(errorString).toMatch(/Transaction execution has failed./); - } - -}, 20000); diff --git a/packages/core/tests-new/fulfillListing.test.ts b/packages/core/tests-new/fulfillListing.test.ts deleted file mode 100644 index e8e5ad7c7..000000000 --- a/packages/core/tests-new/fulfillListing.test.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { BigNumberish, shortString } from "starknet"; - -import { createAccount, fetchOrCreateAccount } from "../src/actions/account/account"; -import { createListing, fulfillListing } from "../src/actions/order"; -import { getOrderStatus } from "../src/actions/read"; -import { ListingV1 } from "../src/types"; -import { generateRandomTokenId, sleep } from "./utils"; - -import { config } from "../examples/config"; -import { whitelistBroker } from "../examples/utils/whitelistBroker"; - - -describe("ArkProject Listing", () => { - it("should create and fulfill a listing", async () => { - const { arkProvider, starknetProvider } = config; - - const solisAdminAccount = await fetchOrCreateAccount( - config.arkProvider, - process.env.SOLIS_ADMIN_ADDRESS_DEV, - process.env.SOLIS_ADMIN_PRIVATE_KEY_DEV - ); - - await whitelistBroker( - config, - solisAdminAccount, - 123 - ); - - // Create a new account using the provider - const { account: arkAccount } = await createAccount(arkProvider); - const { account: starknetAccount } = await createAccount(starknetProvider); - - const order: ListingV1 = { - brokerId: 123, // The broker ID - tokenAddress: - "0x01435498bf393da86b4733b9264a86b58a42b31f8d8b8ba309593e5c17847672", // The token address - tokenId: generateRandomTokenId(), // The ID of the token - startAmount: 600000000000000000 // The starting amount for the order - }; - - const orderHash = await createListing(config, { - starknetAccount, - arkAccount, - order - }); - - await sleep(1000); - - const { orderStatus: orderStatusBefore } = await getOrderStatus(config, { - orderHash - }); - - expect(shortString.decodeShortString(orderStatusBefore)).toBe("OPEN"); - - // Create a new accounts for the fulfill using the provider - const { account: starknetFulfillerAccount } = - await createAccount(starknetProvider); - - const fulfill_info = { - orderHash, - tokenAddress: order.tokenAddress, - tokenId: order.tokenId, - brokerId: 123 - }; - - fulfillListing( - config, - { - starknetAccount: starknetFulfillerAccount, - arkAccount, - fulfillListingInfo: fulfill_info - } - ); - await sleep(2000); - - const { orderStatus: orderStatusAfter } = await getOrderStatus(config, { - orderHash - }); - - expect(shortString.decodeShortString(orderStatusAfter)).toBe("FULFILLED"); - - }, 30000); -}); diff --git a/packages/core/tests-new/fulfillOffer.test.ts b/packages/core/tests-new/fulfillOffer.test.ts deleted file mode 100644 index 03015a362..000000000 --- a/packages/core/tests-new/fulfillOffer.test.ts +++ /dev/null @@ -1,234 +0,0 @@ -import { Contract, shortString } from "starknet"; - -import { - approveERC20, - createAccount, createListing, - createOffer, fetchOrCreateAccount, - fulfillOffer, - getOrderStatus, ListingV1, - OfferV1 -} from "../src"; -import { generateRandomTokenId } from "./utils"; -import { config } from "../examples/config"; -import { whitelistBroker } from "../examples/utils/whitelistBroker"; -import { STARKNET_ETH_ADDRESS, STARKNET_NFT_ADDRESS } from "../examples/constants"; -import { mintERC20 } from "../examples/utils/mintERC20"; -import { mintERC721 } from "../examples/utils/mintERC721"; -import { getCurrentTokenId } from "../examples/utils/getCurrentTokenId"; -import { changeTokenOwner } from "../examples/utils/changeTokenOwner"; -import { getTokenOwner } from "../examples/utils/getTokenOwner"; - - -describe("ArkProject Listing and Offer Fulfillment", () => { - it("should create an offer and fulfill the offer", async function () { - - const { arkProvider, starknetProvider } = config; - - const solisAdminAccount = await fetchOrCreateAccount( - config.arkProvider, - process.env.SOLIS_ADMIN_ADDRESS_DEV, - process.env.SOLIS_ADMIN_PRIVATE_KEY_DEV - ); - - await whitelistBroker( - config, - solisAdminAccount, - 123 - ); - - // Create a new account for the listing using the provider - const { account: arkAccount } = await createAccount(arkProvider); - const { account: starknetAccount } = await createAccount(starknetProvider); - - // Define the order details - const order: OfferV1 = { - brokerId: 123, // The broker ID - tokenAddress: STARKNET_NFT_ADDRESS, // The token address - tokenId: generateRandomTokenId(), // The ID of the token - startAmount: 600000000000000000, // The starting amount for the order - currencyAddress: STARKNET_ETH_ADDRESS // The ERC20 address - }; - - await mintERC20( - starknetProvider, - starknetAccount, - order.startAmount - ); - - // for allowance - await approveERC20(config, { - starknetAccount: starknetAccount, - contractAddress: STARKNET_ETH_ADDRESS, - amount: order.startAmount - }); - - // Create the listing on the arkchain using the order details - const orderHash = await createOffer(config,{starknetAccount, arkAccount, offer: order }); - - expect(orderHash).toBeDefined(); - - await new Promise((resolve) => setTimeout(resolve, 2000)); - - await expect( - getOrderStatus(config, {orderHash}).then((res) => - shortString.decodeShortString(res.orderStatus) - ) - ).resolves.toEqual("OPEN"); - - // Create a new account for fulfilling the offer - const { account: starknetFulfillerAccount } = - await createAccount(starknetProvider); - - expect(starknetFulfillerAccount).toBeDefined(); - - await mintERC20( - starknetProvider, - starknetFulfillerAccount, - order.startAmount - ); - - // for allowance - await approveERC20(config, { - starknetAccount: starknetFulfillerAccount, - contractAddress: STARKNET_ETH_ADDRESS, - amount: order.startAmount - }); - - // Define the fulfill details - const fulfill_info = { - orderHash, - tokenAddress: order.tokenAddress, - tokenId: order.tokenId, - brokerId: 123 - }; - - // Fulfill the offer - await fulfillOffer( - config, - { - starknetAccount: starknetFulfillerAccount, - arkAccount, - fulfillOfferInfo: fulfill_info - } - ); - - await new Promise((resolve) => setTimeout(resolve, 5000)); - - await expect( - getOrderStatus(config, {orderHash}).then((res) => - shortString.decodeShortString(res.orderStatus) - ) - ).resolves.toEqual("FULFILLED"); - - }, 60000); - - - it("should create an offer and fail to fulfill because the fulfiller has not enough balance", async function () { - - const { arkProvider, starknetProvider } = config; - - const solisAdminAccount = await fetchOrCreateAccount( - config.arkProvider, - process.env.SOLIS_ADMIN_ADDRESS_DEV, - process.env.SOLIS_ADMIN_PRIVATE_KEY_DEV - ); - - await whitelistBroker( - config, - solisAdminAccount, - 123 - ); - - const { account: starknetOwner } = await createAccount(starknetProvider); - const { account: arkAccount } = await createAccount(arkProvider); - - await mintERC721(config.starknetProvider, starknetOwner); - const tokenId = await getCurrentTokenId(config, STARKNET_NFT_ADDRESS); - - const orderListing: ListingV1 = { - brokerId: 123, - tokenAddress: STARKNET_NFT_ADDRESS, - tokenId, - startAmount: 600000000000000000 - }; - - await createListing(config, { - starknetAccount: starknetOwner, - arkAccount, - order: orderListing - }); - - // Create a new account for the listing using the provider - const { account: starknetAccount } = await createAccount(starknetProvider); - - // Define the order details - const order: OfferV1 = { - brokerId: 123, // The broker ID - tokenAddress: STARKNET_NFT_ADDRESS, // The token address - tokenId, // The ID of the token - startAmount: 600000000000000000, // The starting amount for the order - currencyAddress: STARKNET_ETH_ADDRESS // The ERC20 address - }; - - await mintERC20( - starknetProvider, - starknetAccount, - order.startAmount - ); - - // for allowance - await approveERC20(config, { - starknetAccount: starknetAccount, - contractAddress: STARKNET_ETH_ADDRESS, - amount: order.startAmount - }); - - // Create the offer on the arkchain using the order details - const orderHash = await createOffer(config,{starknetAccount, arkAccount, offer: order }); - - expect(orderHash).toBeDefined(); - - await new Promise((resolve) => setTimeout(resolve, 2000)); - - await expect( - getOrderStatus(config, {orderHash}).then((res) => - shortString.decodeShortString(res.orderStatus) - ) - ).resolves.toEqual("OPEN"); - - - // Create a new account for fulfilling the offer - const { account: starknetFulfillerAccount } = - await createAccount(starknetProvider); - - expect(starknetFulfillerAccount).toBeDefined(); - - // Define the fulfill details - const fulfill_info = { - orderHash, - tokenAddress: order.tokenAddress, - tokenId: order.tokenId, - brokerId: 123 - }; - - // Fulfill the offer - await fulfillOffer( - config, - { - starknetAccount: starknetFulfillerAccount, - arkAccount, - fulfillOfferInfo: fulfill_info - } - ); - - await new Promise((resolve) => setTimeout(resolve, 4000)); - - // it should be rolled back to "OPEN" - await expect( - getOrderStatus(config, {orderHash}).then((res) => - shortString.decodeShortString(res.orderStatus) - ) - ).resolves.toEqual("OPEN"); - - }, 50000); -}); diff --git a/packages/core/tests-new/utils/index.ts b/packages/core/tests-new/utils/index.ts deleted file mode 100644 index cbc53d590..000000000 --- a/packages/core/tests-new/utils/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { CairoCustomEnum } from "starknet"; - -export function sleep(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -export function generateRandomTokenId(): number { - return Math.floor(Math.random() * 10000) + 1; -} - -type VariantKey = "Listing" | "Auction" | "Offer" | "CollectionOffer"; - -export function getTypeFromCairoCustomEnum(cairoCustomEnum: CairoCustomEnum) { - const keyMap = { - Listing: "LISTING", - Auction: "AUCTION", - Offer: "OFFER", - CollectionOffer: "COLLECTION_OFFER" - }; - - for (const key in cairoCustomEnum.variant) { - if (cairoCustomEnum.variant[key as VariantKey] !== undefined) { - return keyMap[key as VariantKey] || "Unknown"; - } - } - - throw new Error("No valid variant found in CairoCustomEnum"); -}