diff --git a/apps/trading-e2e/src/integration/trading-deal-ticket-basic-submit.cy.ts b/apps/trading-e2e/src/integration/trading-deal-ticket-basic-submit.cy.ts index 0bd74c58f..a2d7dfc85 100644 --- a/apps/trading-e2e/src/integration/trading-deal-ticket-basic-submit.cy.ts +++ b/apps/trading-e2e/src/integration/trading-deal-ticket-basic-submit.cy.ts @@ -1,7 +1,7 @@ import * as Schema from '@vegaprotocol/types'; import { testOrderSubmission } from '../support/order-validation'; import { createOrder } from '../support/create-order'; -import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket'; +import type { OrderObj } from '@vegaprotocol/orders'; describe('must submit order', { tags: '@smoke' }, () => { // 7002-SORD-039 @@ -22,7 +22,7 @@ describe('must submit order', { tags: '@smoke' }, () => { // 0003-WTXN-012 // 0003-WTXN-003 cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_MARKET, side: Schema.Side.SIDE_BUY, @@ -37,7 +37,7 @@ describe('must submit order', { tags: '@smoke' }, () => { it('successfully places market sell order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_MARKET, side: Schema.Side.SIDE_SELL, @@ -53,7 +53,7 @@ describe('must submit order', { tags: '@smoke' }, () => { it('successfully places limit buy order', () => { // 7002-SORD-017 cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_BUY, @@ -69,7 +69,7 @@ describe('must submit order', { tags: '@smoke' }, () => { it('successfully places limit sell order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, @@ -86,7 +86,7 @@ describe('must submit order', { tags: '@smoke' }, () => { it('successfully places GTT limit buy order', () => { cy.mockVegaWalletTransaction(); const expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, diff --git a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-account.cy.ts b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-account.cy.ts index 551b347ae..e6e7793c4 100644 --- a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-account.cy.ts +++ b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-account.cy.ts @@ -6,7 +6,7 @@ import { amendMarginAccountBalance, } from '@vegaprotocol/mock'; import { createOrder } from '../support/create-order'; -import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket'; +import type { OrderObj } from '@vegaprotocol/orders'; describe( 'account validation', @@ -94,7 +94,7 @@ describe( it('must see a prompt to check connected vega wallet to approve transaction', () => { // 0003-WTXN-002 cy.mockVegaWalletTransaction(1000); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_MARKET, side: Schema.Side.SIDE_BUY, @@ -124,7 +124,7 @@ describe( }); }); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_MARKET, side: Schema.Side.SIDE_BUY, @@ -160,7 +160,7 @@ describe( }); }); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_MARKET, side: Schema.Side.SIDE_BUY, diff --git a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-batch-auction.cy.ts b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-batch-auction.cy.ts index 957d207d7..49cb128ec 100644 --- a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-batch-auction.cy.ts +++ b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-batch-auction.cy.ts @@ -1,7 +1,7 @@ import * as Schema from '@vegaprotocol/types'; import { testOrderSubmission } from '../support/order-validation'; -import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket'; import { createOrder } from '../support/create-order'; +import type { OrderObj } from '@vegaprotocol/orders'; const displayTomorrow = () => { const tomorrow = new Date(); @@ -31,7 +31,7 @@ describe( it('successfully places limit buy order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_BUY, @@ -47,7 +47,7 @@ describe( it('successfully places limit sell order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, @@ -63,7 +63,7 @@ describe( it('successfully places GTT limit buy order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, diff --git a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-monitoring-auction.cy.ts b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-monitoring-auction.cy.ts index a11ab6128..e88749dcf 100644 --- a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-monitoring-auction.cy.ts +++ b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-monitoring-auction.cy.ts @@ -1,7 +1,7 @@ import * as Schema from '@vegaprotocol/types'; import { testOrderSubmission } from '../support/order-validation'; -import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket'; import { createOrder } from '../support/create-order'; +import type { OrderObj } from '@vegaprotocol/orders'; const displayTomorrow = () => { const tomorrow = new Date(); @@ -31,7 +31,7 @@ describe( it('successfully places limit buy order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_BUY, @@ -47,7 +47,7 @@ describe( it('successfully places limit sell order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, @@ -63,7 +63,7 @@ describe( it('successfully places GTT limit buy order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, diff --git a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-opening-auction.cy.ts b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-opening-auction.cy.ts index 249d2d417..a1282adfa 100644 --- a/apps/trading-e2e/src/integration/trading-deal-ticket-submit-opening-auction.cy.ts +++ b/apps/trading-e2e/src/integration/trading-deal-ticket-submit-opening-auction.cy.ts @@ -1,7 +1,7 @@ import * as Schema from '@vegaprotocol/types'; import { testOrderSubmission } from '../support/order-validation'; -import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket'; import { createOrder } from '../support/create-order'; +import type { OrderObj } from '@vegaprotocol/orders'; const displayTomorrow = () => { const tomorrow = new Date(); @@ -31,7 +31,7 @@ describe( it('successfully places limit buy order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_BUY, @@ -47,7 +47,7 @@ describe( it('successfully places limit sell order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, @@ -63,7 +63,7 @@ describe( it('successfully places GTT limit buy order', () => { cy.mockVegaWalletTransaction(); - const order: DealTicketOrderSubmission = { + const order: Omit = { marketId: 'market-0', type: Schema.OrderType.TYPE_LIMIT, side: Schema.Side.SIDE_SELL, diff --git a/apps/trading-e2e/src/support/create-order.ts b/apps/trading-e2e/src/support/create-order.ts index dcf22c464..c20656184 100644 --- a/apps/trading-e2e/src/support/create-order.ts +++ b/apps/trading-e2e/src/support/create-order.ts @@ -1,11 +1,11 @@ -import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket'; +import type { OrderObj } from '@vegaprotocol/orders'; const orderSizeField = 'order-size'; const orderPriceField = 'order-price'; const orderTIFDropDown = 'order-tif'; const placeOrderBtn = 'place-order'; -export const createOrder = (order: DealTicketOrderSubmission): void => { +export const createOrder = (order: Omit): void => { cy.log('Placing order', order); const { type, side, size, price, timeInForce, expiresAt } = order; diff --git a/apps/trading-e2e/src/support/order-validation.ts b/apps/trading-e2e/src/support/order-validation.ts index 4bf3db0dc..943524457 100644 --- a/apps/trading-e2e/src/support/order-validation.ts +++ b/apps/trading-e2e/src/support/order-validation.ts @@ -6,12 +6,12 @@ import type { OrderSubmissionBody, Transaction, } from '@vegaprotocol/wallet'; -import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket'; import { normalizeOrderSubmission } from '@vegaprotocol/deal-ticket'; +import type { OrderObj } from '@vegaprotocol/orders'; export const testOrderSubmission = ( - order: DealTicketOrderSubmission, - expected?: Partial + order: Omit, + expected?: Partial ) => { const expectedOrder = { ...order, diff --git a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx index f13fa6cf8..d47e6a402 100644 --- a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx +++ b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx @@ -342,7 +342,7 @@ describe('DealTicket', () => { expect( normalizeOrderSubmission({ price: '100' } as unknown as OrderObj, 2, 1) .price - ).toBeUndefined(); + ).toEqual(''); expect( normalizeOrderSubmission( { @@ -364,7 +364,7 @@ describe('DealTicket', () => { 2, 1 ).expiresAt - ).toBeUndefined(); + ).toEqual(BigInt(0)); expect( normalizeOrderSubmission( { diff --git a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx index e9da86a3f..a4d06e33f 100644 --- a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx +++ b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx @@ -1,5 +1,5 @@ -import { t } from '@vegaprotocol/i18n'; import * as Schema from '@vegaprotocol/types'; +import { t } from '@vegaprotocol/i18n'; import { memo, useCallback, useEffect, useState, useRef, useMemo } from 'react'; import { Controller } from 'react-hook-form'; import { DealTicketAmount } from './deal-ticket-amount'; @@ -32,6 +32,7 @@ import { useOpenVolume, } from '@vegaprotocol/positions'; import { toBigNum, removeDecimal, toNanoSeconds } from '@vegaprotocol/utils'; +import type { OrderObj } from '@vegaprotocol/orders'; import { activeOrdersProvider } from '@vegaprotocol/orders'; import { useEstimateFees } from '../../hooks/use-estimate-fees'; import { getDerivedPrice } from '../../utils/get-price'; @@ -52,12 +53,12 @@ import { useAccountBalance, } from '@vegaprotocol/accounts'; import { OrderTimeInForce, OrderType } from '@vegaprotocol/types'; -import type { DealTicketOrderSubmission } from '../../hooks/use-order-form'; import { useOrderForm } from '../../hooks/use-order-form'; import { useDataProvider } from '@vegaprotocol/data-provider'; +import { vega as vegaProtos } from '@vegaprotocol/protos'; export const normalizeOrderSubmission = ( - order: DealTicketOrderSubmission, + order: Omit, decimalPlaces: number, positionDecimalPlaces: number ): OrderSubmission => ({ @@ -68,14 +69,20 @@ export const normalizeOrderSubmission = ( price: order.type === OrderType.TYPE_LIMIT && order.price ? removeDecimal(order.price, decimalPlaces) - : undefined, + : '', size: BigInt(removeDecimal(order.size, positionDecimalPlaces)), - expiresAt: + expiresAt: BigInt( order.expiresAt && order.timeInForce === OrderTimeInForce.TIME_IN_FORCE_GTT - ? BigInt(toNanoSeconds(order.expiresAt)) - : undefined, - postOnly: order.postOnly, - reduceOnly: order.reduceOnly, + ? toNanoSeconds(order.expiresAt) + : 0 + ), + postOnly: Boolean(order.postOnly), + reduceOnly: Boolean(order.reduceOnly), + peggedOrder: { + offset: '', + reference: vegaProtos.PeggedReference.PEGGED_REFERENCE_UNSPECIFIED, + }, + reference: '', }); export interface DealTicketProps { @@ -159,9 +166,7 @@ export const DealTicket = ({ asset.decimals, ]); - const feeEstimate = useEstimateFees( - normalizedOrder && { ...normalizedOrder, price } - ); + const feeEstimate = useEstimateFees(order && { ...order, price }); const { data: activeOrders } = useDataProvider({ dataProvider: activeOrdersProvider, variables: { partyId: pubKey || '' }, @@ -269,7 +274,7 @@ export const DealTicket = ({ }, [order]); const onSubmit = useCallback( - (order: DealTicketOrderSubmission) => { + (order: Omit) => { const now = new Date().getTime(); if (lastSubmitTime.current && now - lastSubmitTime.current < 1000) { return; diff --git a/libs/deal-ticket/src/hooks/use-estimate-fees.tsx b/libs/deal-ticket/src/hooks/use-estimate-fees.tsx index 0524471f5..f428752dc 100644 --- a/libs/deal-ticket/src/hooks/use-estimate-fees.tsx +++ b/libs/deal-ticket/src/hooks/use-estimate-fees.tsx @@ -1,14 +1,9 @@ -import type { OrderSubmission } from '@vegaprotocol/wallet'; -import { - useVegaWallet, - SideRevertMap, - TimeInForceRevertMap, - TypeRevertMap, -} from '@vegaprotocol/wallet'; +import { useVegaWallet } from '@vegaprotocol/wallet'; import { useEstimateFeesQuery } from './__generated__/EstimateOrder'; +import type { OrderObj } from '@vegaprotocol/orders'; -export const useEstimateFees = (order?: OrderSubmission) => { +export const useEstimateFees = (order?: Omit) => { const { pubKey } = useVegaWallet(); const { data } = useEstimateFeesQuery({ @@ -16,10 +11,10 @@ export const useEstimateFees = (order?: OrderSubmission) => { marketId: order.marketId, partyId: pubKey || '', price: order.price, - size: String(order.size), - side: SideRevertMap[order.side], - timeInForce: TimeInForceRevertMap[order.timeInForce], - type: TypeRevertMap[order.type], + size: order.size, + side: order.side, + timeInForce: order.timeInForce, + type: order.type, }, fetchPolicy: 'no-cache', skip: !pubKey || !order?.size || !order?.price, diff --git a/libs/deal-ticket/src/hooks/use-order-form.ts b/libs/deal-ticket/src/hooks/use-order-form.ts index fc9e87501..816f30df7 100644 --- a/libs/deal-ticket/src/hooks/use-order-form.ts +++ b/libs/deal-ticket/src/hooks/use-order-form.ts @@ -3,16 +3,11 @@ import type { OrderObj } from '@vegaprotocol/orders'; import { getDefaultOrder, useOrder } from '@vegaprotocol/orders'; import { useEffect } from 'react'; import { useForm } from 'react-hook-form'; -import type { Exact } from 'type-fest'; export type OrderFormFields = OrderObj & { summary: string; }; -export type DealTicketOrderSubmission = Omit & { - reference?: string; -}; - /** * Connects the order store to a react-hook-form instance. Any time a field * changes in the store the form will be updated so that validation rules @@ -54,9 +49,7 @@ export const useOrderForm = (marketId: string) => { } }, [order, isSubmitted, getValues, setValue]); - const handleSubmitWrapper = ( - cb: (o: Exact) => void - ) => { + const handleSubmitWrapper = (cb: (o: Omit) => void) => { return handleSubmit(() => { // remove the persist key from the order in the store, the wallet will reject // an order that contains unrecognized additional keys diff --git a/libs/wallet/src/connectors/vega-connector.ts b/libs/wallet/src/connectors/vega-connector.ts index ae870e474..e68a1c65a 100644 --- a/libs/wallet/src/connectors/vega-connector.ts +++ b/libs/wallet/src/connectors/vega-connector.ts @@ -3,7 +3,7 @@ import type { SetOptional } from 'type-fest'; import type { vega as vegaProtos } from '@vegaprotocol/protos'; import type { RecurringTransfer } from '@vegaprotocol/protos/dist/vega/commands/v1/RecurringTransfer'; -export type OriginalOrderSubmission = +export type OrderSubmission = vegaProtos.commands.v1.OrderSubmission.OrderSubmission; export type OriginalOrderCancellation = vegaProtos.commands.v1.OrderCancellation.OrderCancellation; @@ -238,16 +238,6 @@ export interface ProposalSubmission { export type WithdrawSubmission = Omit & WithdrawExt; -export type OrderSubmission = SetOptional< - OriginalOrderSubmission, - | 'price' - | 'expiresAt' - | 'reference' - | 'peggedOrder' - | 'postOnly' - | 'reduceOnly' ->; - export type OrderAmendment = SetOptional< OriginalOrderAmendment, 'price' | 'sizeDelta' | 'expiresAt' | 'peggedOffset' | 'peggedReference' diff --git a/libs/web3/src/lib/use-vega-transaction-toasts.spec.tsx b/libs/web3/src/lib/use-vega-transaction-toasts.spec.tsx index cb06c54e3..439899933 100644 --- a/libs/web3/src/lib/use-vega-transaction-toasts.spec.tsx +++ b/libs/web3/src/lib/use-vega-transaction-toasts.spec.tsx @@ -128,6 +128,14 @@ const submitOrder: VegaStoredTxState = { timeInForce: vegaProtos.Order.TimeInForce.TIME_IN_FORCE_FOK, type: vegaProtos.Order.Type.TYPE_MARKET, price: '1234', + expiresAt: BigInt(0), + postOnly: false, + reduceOnly: false, + peggedOrder: { + offset: '', + reference: vegaProtos.PeggedReference.PEGGED_REFERENCE_UNSPECIFIED, + }, + reference: '', }, }, status: VegaTxStatus.Default, diff --git a/libs/withdraws/jest.config.ts b/libs/withdraws/jest.config.ts index 342dc08ef..a132ef4f6 100644 --- a/libs/withdraws/jest.config.ts +++ b/libs/withdraws/jest.config.ts @@ -3,7 +3,7 @@ export default { displayName: 'withdraws', preset: '../../jest.preset.js', transform: { - //'^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nrwl/react/plugins/jest', + '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nrwl/react/plugins/jest', '^.+\\.[tj]sx?$': 'babel-jest', }, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],