Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
rouzwelt committed Nov 30, 2024
1 parent ec37cad commit dcf842f
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 33 deletions.
64 changes: 37 additions & 27 deletions src/order.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import { orderbookAbi, OrderV3 } from "./abis";
import { SgOrder } from "./query";
import { Span } from "@opentelemetry/api";
import { hexlify } from "ethers/lib/utils";
import { addWatchedToken } from "./account";
import { orderbookAbi, OrderV3 } from "./abis";
import { getTokenSymbol, shuffleArray } from "./utils";
import { decodeAbiParameters, erc20Abi, parseAbi, parseAbiParameters } from "viem";
import {
Pair,
Order,
Vault,
OTOVMap,
ViemClient,
OwnersVaults,
TokenDetails,
BundledOrders,
OrdersProfileMap,
OwnersProfileMap,
OrderbooksOwnersProfileMap,
TokensOwnersVaults,
OTOVMap,
OwnersVaults,
Vault,
OrderbooksOwnersProfileMap,
} from "./types";

/**
Expand Down Expand Up @@ -51,6 +51,7 @@ export function toOrder(orderLog: any): Order {
* Get all pairs of an order
*/
export async function getOrderPairs(
orderHash: string,
orderStruct: Order,
viemClient: ViemClient,
tokens: TokenDetails[],
Expand Down Expand Up @@ -116,10 +117,13 @@ export async function getOrderPairs(
sellTokenSymbol: _outputSymbol,
sellTokenDecimals: _output.decimals,
takeOrder: {
order: orderStruct,
inputIOIndex: k,
outputIOIndex: j,
signedContext: [],
id: orderHash,
takeOrder: {
order: orderStruct,
inputIOIndex: k,
outputIOIndex: j,
signedContext: [],
},
},
});
}
Expand All @@ -141,6 +145,7 @@ export async function handleAddOrderbookOwnersProfileMap(
const changes: Record<string, string[]> = {};
for (let i = 0; i < ordersDetails.length; i++) {
const orderDetails = ordersDetails[i];
const orderHash = orderDetails.orderHash.toLowerCase();
const orderbook = orderDetails.orderbook.id.toLowerCase();
const orderStruct = toOrder(
decodeAbiParameters(
Expand All @@ -158,12 +163,13 @@ export async function handleAddOrderbookOwnersProfileMap(
if (orderbookOwnerProfileItem) {
const ownerProfile = orderbookOwnerProfileItem.get(orderStruct.owner.toLowerCase());
if (ownerProfile) {
const order = ownerProfile.orders.get(orderDetails.orderHash.toLowerCase());
const order = ownerProfile.orders.get(orderHash);
if (!order) {
ownerProfile.orders.set(orderDetails.orderHash.toLowerCase(), {
ownerProfile.orders.set(orderHash, {
active: true,
order: orderStruct,
takeOrders: await getOrderPairs(
orderHash,
orderStruct,
viemClient,
tokens,
Expand All @@ -176,10 +182,16 @@ export async function handleAddOrderbookOwnersProfileMap(
}
} else {
const ordersProfileMap: OrdersProfileMap = new Map();
ordersProfileMap.set(orderDetails.orderHash.toLowerCase(), {
ordersProfileMap.set(orderHash, {
active: true,
order: orderStruct,
takeOrders: await getOrderPairs(orderStruct, viemClient, tokens, orderDetails),
takeOrders: await getOrderPairs(
orderHash,
orderStruct,
viemClient,
tokens,
orderDetails,
),
consumedTakeOrders: [],
});
orderbookOwnerProfileItem.set(orderStruct.owner.toLowerCase(), {
Expand All @@ -189,10 +201,16 @@ export async function handleAddOrderbookOwnersProfileMap(
}
} else {
const ordersProfileMap: OrdersProfileMap = new Map();
ordersProfileMap.set(orderDetails.orderHash.toLowerCase(), {
ordersProfileMap.set(orderHash, {
active: true,
order: orderStruct,
takeOrders: await getOrderPairs(orderStruct, viemClient, tokens, orderDetails),
takeOrders: await getOrderPairs(
orderHash,
orderStruct,
viemClient,
tokens,
orderDetails,
),
consumedTakeOrders: [],
});
const ownerProfileMap: OwnersProfileMap = new Map();
Expand Down Expand Up @@ -363,10 +381,7 @@ function gatherPairs(
if (
!bundleOrder.takeOrders.find((v) => v.id.toLowerCase() === orderHash.toLowerCase())
) {
bundleOrder.takeOrders.push({
id: orderHash,
takeOrder: pair.takeOrder,
});
bundleOrder.takeOrders.push(pair.takeOrder);
}
} else {
bundledOrders.push({
Expand All @@ -377,12 +392,7 @@ function gatherPairs(
sellToken: pair.sellToken,
sellTokenDecimals: pair.sellTokenDecimals,
sellTokenSymbol: pair.sellTokenSymbol,
takeOrders: [
{
id: orderHash,
takeOrder: pair.takeOrder,
},
],
takeOrders: [pair.takeOrder],
});
}
}
Expand All @@ -402,8 +412,8 @@ export function buildOtovMap(orderbooksOwnersProfileMap: OrderbooksOwnersProfile
orderProfile.takeOrders.forEach((pair) => {
const token = pair.sellToken.toLowerCase();
const vaultId =
pair.takeOrder.order.validOutputs[
pair.takeOrder.outputIOIndex
pair.takeOrder.takeOrder.order.validOutputs[
pair.takeOrder.takeOrder.outputIOIndex
].vaultId.toLowerCase();
const ownersVaults = tokensOwnersVaults.get(token);
if (ownersVaults) {
Expand Down
2 changes: 1 addition & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export type Pair = {
sellToken: string;
sellTokenDecimals: number;
sellTokenSymbol: string;
takeOrder: TakeOrder;
takeOrder: TakeOrderDetails;
};
export type OrderProfile = {
active: boolean;
Expand Down
13 changes: 8 additions & 5 deletions test/orders.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,7 @@ describe("Test order", async function () {
const orderStruct = toOrder(
decodeAbiParameters(parseAbiParameters(OrderV3), order1.orderBytes)[0],
);
const result = await getOrderPairs(orderStruct, undefined, [], order1);
const result = await getOrderPairs(order1.orderHash, orderStruct, undefined, [], order1);
const expected = [
{
buyToken: orderStruct.validInputs[0].token,
Expand All @@ -629,10 +629,13 @@ describe("Test order", async function () {
sellTokenSymbol: order1.outputs[0].token.symbol,
sellTokenDecimals: orderStruct.validOutputs[0].decimals,
takeOrder: {
order: orderStruct,
inputIOIndex: 0,
outputIOIndex: 0,
signedContext: [],
id: order1.orderHash,
takeOrder: {
order: orderStruct,
inputIOIndex: 0,
outputIOIndex: 0,
signedContext: [],
},
},
},
];
Expand Down

0 comments on commit dcf842f

Please sign in to comment.