@orbs-network/spot-react 2.1.15 → 2.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -18,6 +18,6 @@ export { useTrades } from './hooks/use-trades';
|
|
|
18
18
|
export { useTriggerPrice } from './hooks/use-trigger-price';
|
|
19
19
|
export { type CancelOrderStatus } from './hooks/use-cancel-order';
|
|
20
20
|
export type { SpotExecutionData } from './hooks/use-execution';
|
|
21
|
-
export { type Config, type TimeDuration, type RePermitData, type RePermitOrder, type SpotClient, type SpotAnalytics, type AccountOrdersResult, type PrepareOrderParams, type PreparedOrder, type PreparedOrderValues, type Eip712TypedData, type OrderSigningRequest, type ApprovalRequest, type AllowanceRequest, type CancelOrderRequest, type ClientGetAccountOrdersParams, type Signature, type Address, type Hex, type InputError, type CalculateOrderFormParams, type CalculatedAmount, type CalculatedOrderInputAmount, type CalculatedMarketPriceValues, type CalculatedOrderTrades, type CalculatedOrderFees, type CalculatedOrderFormSchedule, type CalculatedOrderFormErrors, type CalculatedOrderForm, type CalculatedOrderSchedule, type CalculatedPriceInput, type CalculatedPriceDisplay, type CalculatedTriggerPriceValues, type CalculatedLimitPriceValues, type CalculatedOrderValues, Module, OrderStatus, OrderFilter, OrderType, TimeUnit, Partners, InputErrors, getTwapConfig, calculateOrderForm, toAmountRaw, toAmountUI, invertPriceInput, createClient, isNativeAddress, eqIgnoreCase, getOrderExecutionRate, getOrderLimitPriceRate, getOrderFillDelayMillis, getTriggerPriceRate, isTxRejected, DISCLAIMER_URL, ORBS_TWAP_FAQ_URL, ORBS_SLTP_FAQ_URL, ORBS_LOGO, ORBS_WEBSITE_URL, } from '@orbs-network/spot-ui';
|
|
21
|
+
export { type Config, type TimeDuration, type RePermitData, type RePermitOrder, type SpotClient, type CreateClientOptions, type SpotAnalytics, type AccountOrdersResult, type PrepareOrderParams, type PreparedOrder, type PreparedOrderValues, type Eip712TypedData, type OrderSigningRequest, type ApprovalRequest, type AllowanceRequest, type CancelOrderRequest, type ClientGetAccountOrdersParams, type Signature, type Address, type Hex, type InputError, type CalculateOrderFormParams, type CalculatedAmount, type CalculatedOrderInputAmount, type CalculatedMarketPriceValues, type CalculatedOrderTrades, type CalculatedOrderFees, type CalculatedOrderFormSchedule, type CalculatedOrderFormErrors, type CalculatedOrderForm, type CalculatedOrderSchedule, type CalculatedPriceInput, type CalculatedPriceDisplay, type CalculatedTriggerPriceValues, type CalculatedLimitPriceValues, type CalculatedOrderValues, Module, OrderStatus, OrderFilter, OrderType, TimeUnit, Partners, InputErrors, getTwapConfig, calculateOrderForm, toAmountRaw, toAmountUI, invertPriceInput, createClient, isNativeAddress, eqIgnoreCase, getOrderExecutionRate, getOrderLimitPriceRate, getOrderFillDelayMillis, getTriggerPriceRate, isTxRejected, DISCLAIMER_URL, ORBS_TWAP_FAQ_URL, ORBS_SLTP_FAQ_URL, ORBS_LOGO, ORBS_WEBSITE_URL, } from '@orbs-network/spot-ui';
|
|
22
22
|
export { SpotProvider };
|
|
23
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAM/D,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAG1B,MAAM,EACN,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EAGX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EAGZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAM/D,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAG1B,MAAM,EACN,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EAGX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EAGZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/spot-react.js
CHANGED
|
@@ -8,7 +8,7 @@ import { jsx as U, jsxs as ue, Fragment as Ke } from "react/jsx-runtime";
|
|
|
8
8
|
import { createContext as le, useContext as me, useState as Ve, useCallback as v, useMemo as R, useEffect as ie, Component as He, useRef as je } from "react";
|
|
9
9
|
import { useStore as Je } from "zustand";
|
|
10
10
|
import { createStore as ze } from "zustand/vanilla";
|
|
11
|
-
const $e = "2.1.
|
|
11
|
+
const $e = "2.1.17", Qe = {
|
|
12
12
|
version: $e
|
|
13
13
|
}, Ce = le(null), Ye = ({
|
|
14
14
|
children: e,
|
package/dist/spot-react.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(m,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("@orbs-network/spot-ui"),require("react/jsx-runtime"),require("react"),require("zustand"),require("zustand/vanilla")):typeof define=="function"&&define.amd?define(["exports","@orbs-network/spot-ui","react/jsx-runtime","react","zustand","zustand/vanilla"],c):(m=typeof globalThis<"u"?globalThis:m||self,c(m.SpotReact={},m.SpotUI,m.jsxRuntime,m.React,m.Zustand,m.ZustandVanilla))})(this,(function(m,c,p,l,Se,Ie){"use strict";"use client";var Lt=Object.defineProperty;var Nt=(m,c,p)=>c in m?Lt(m,c,{enumerable:!0,configurable:!0,writable:!0,value:p}):m[c]=p;var oe=(m,c,p)=>Nt(m,typeof c!="symbol"?c+"":c,p);const Ae={version:"2.1.15"},se=l.createContext(null),Ce=({children:e,value:t})=>p.jsx(se.Provider,{value:t,children:e}),M=()=>{const e=l.useContext(se);if(e===null)throw new Error("useSpotTrading must be used within SpotProvider");return e};var B=(e=>(e[e.LOADING=1]="LOADING",e[e.SUCCESS=2]="SUCCESS",e[e.FAILED=3]="FAILED",e))(B||{}),u=(e=>(e.IDLE="idle",e.PREPARING="preparing",e.WRAPPING="wrapping",e.APPROVING="approving",e.SIGNING="signing",e.SUBMITTING="submitting",e.SUCCESS="success",e.FAILED="failed",e.REJECTED="rejected",e))(u||{}),Q=(e=>(e.TRIGGER_MARKET_PRICE="triggerMarketPriceDisclaimer",e.MARKET_PRICE="marketOrderDisclaimer",e.LIMIT_PRICE="limitOrderDisclaimer",e))(Q||{}),K=(e=>(e.WRAP="wrap",e.APPROVE="approve",e.CREATE="create",e))(K||{});const ye=new Set([u.PREPARING,u.WRAPPING,u.APPROVING,u.SIGNING,u.SUBMITTING]),ve={[u.IDLE]:new Set,[u.PREPARING]:new Set([u.PREPARING,u.WRAPPING,u.APPROVING,u.SIGNING,u.FAILED,u.REJECTED]),[u.WRAPPING]:new Set([u.WRAPPING,u.APPROVING,u.SIGNING,u.FAILED,u.REJECTED]),[u.APPROVING]:new Set([u.APPROVING,u.SIGNING,u.FAILED,u.REJECTED]),[u.SIGNING]:new Set([u.SIGNING,u.SUBMITTING,u.FAILED,u.REJECTED]),[u.SUBMITTING]:new Set([u.SUCCESS,u.FAILED,u.REJECTED]),[u.SUCCESS]:new Set,[u.FAILED]:new Set,[u.REJECTED]:new Set},$=e=>({phase:u.IDLE,completedWrap:e}),k=e=>ye.has(e),we=e=>e===u.IDLE||e===u.FAILED||e===u.REJECTED,Re=(e,t)=>ve[e].has(t),Te=e=>{if(k(e))return B.LOADING;if(e===u.SUCCESS)return B.SUCCESS;if(e===u.FAILED||e===u.REJECTED)return B.FAILED},pe=e=>{if(e===u.WRAPPING)return K.WRAP;if(e===u.APPROVING)return K.APPROVE;if(e===u.SIGNING||e===u.SUBMITTING)return K.CREATE},ee=e=>{if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(typeof e=="object"&&e!==null){const t=Reflect.get(e,"message");if(typeof t=="string")return t}return"Unknown error"},Le=e=>{if(typeof e!="object"||e===null)return 0;const t=Reflect.get(e,"code");return typeof t=="number"&&Number.isFinite(t)?t:typeof t=="string"&&/^-?\d+$/.test(t)?Number(t):0},Y=e=>e instanceof Error?e:new Error(ee(e)),te=e=>{const t=ee(e),n=t.match(/,\s*code\s*:\s*(-?\d+)/i);return{message:t.replace(/^error\s*:/i,"").replace(/,\s*code\s*:\s*-?\d+/i,"").trim()||"Unknown error",code:Le(e)||(n?Number(n[1]):0)}},S=e=>{if(e)try{const t=e();Promise.resolve(t).catch(()=>{})}catch{}},Ne=({execution:e,account:t,chainId:n,inputTokenAddress:r,inputAmountRaw:i})=>{const o=e.completedWrap;if((o==null?void 0:o.account.toLowerCase())===t.toLowerCase()&&o.chainId===n&&o.inputTokenAddress.toLowerCase()===r.toLowerCase()&&Fe(o.inputAmountRaw,i))return o},Fe=(e,t)=>{try{return BigInt(e)>=BigInt(t)}catch{return!1}},Me=2e4,ae=new WeakMap,ce=e=>{const t=ae.get(e);if(t)return t;const n={all:[...e].sort((r,i)=>i.createdAt-r.createdAt),open:[],completed:[],cancelled:[],expired:[]};for(const r of n.all)switch(r.status){case c.OrderStatus.Open:n.open.push(r);break;case c.OrderStatus.Completed:n.completed.push(r);break;case c.OrderStatus.Cancelled:n.cancelled.push(r);break;case c.OrderStatus.Expired:n.expired.push(r);break}return ae.set(e,n),n},De=(e,t)=>{const n=new Set(e.map(i=>i.historyKey)),r=(t==null?void 0:t.filter(i=>i.version===1&&!n.has(i.historyKey)))??[];return[...e,...r]},be=(e,t,n)=>{if(!e)return;const r=new Map(t.map(o=>[o.historyKey,o])),i=[];for(const o of e){if(o.version!==2)continue;const s=r.get(o.historyKey);!s||s.progress===o.progress||(i.push(s),s.status===c.OrderStatus.Completed&&S(()=>{var a;return(a=n==null?void 0:n.onOrderFilled)==null?void 0:a.call(n,s)}))}i.length>0&&S(()=>{var o;return(o=n==null?void 0:n.onOrdersProgressUpdate)==null?void 0:o.call(n,i)})},de=e=>{if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},re=(e,t)=>{if(Object.is(e,t))return e;if(Array.isArray(e)&&Array.isArray(t)){const n=t.map((i,o)=>re(e[o],i));return e.length===n.length&&n.every((i,o)=>i===e[o])?e:n}if(de(e)&&de(t)){const n=Object.keys(e),r=Object.keys(t),i={};let o=n.length===r.length;for(const s of r){Object.prototype.hasOwnProperty.call(e,s)||(o=!1);const a=re(e[s],t[s]);i[s]=a,a!==e[s]&&(o=!1)}return o?e:i}return t},Ge=(e,t)=>e?re(e,t):t,xe=async({client:e,account:t,signal:n,supportLegacyOrders:r,previousOrders:i,legacyLoaded:o,callbacks:s})=>{const a=await e.getAccountOrdersResult({signal:n,account:t,legacyOrders:r&&!o});if(n.aborted)throw n.reason;return be(i,a.orders,s),{orders:r&&!a.legacyLoaded?De(a.orders,i):a.orders,legacyLoaded:o||a.legacyLoaded}},ne=e=>({tradeCount:e.tradeCount,tradeInterval:e.tradeInterval,orderDuration:e.orderDuration,limitPriceUi:e.limitPriceUi,triggerPriceUi:e.triggerPriceUi,triggerPricePercent:e.triggerPricePercent,limitPricePercent:e.limitPricePercent,isMarketOrder:e.isMarketOrder,isPriceInverted:void 0}),_e=e=>({...ne(e),cancelOrders:{},currentExecution:$()}),ue={isFetching:!1},le={isFetching:!1},je=e=>new Promise(t=>setTimeout(t,e)),Be=e=>{let t=0,n,r,i=0,o,s,a,d=!1,I=0,v=0,g,O,A;return Ie.createStore((f,C)=>{const L=async()=>{if(!n||!r)return;if(o)return o;const P=++i,h=r;f(E=>({client:{key:n,data:E.client.data,error:void 0,isFetching:!0}}));const y=(async()=>{let E;for(let j=0;j<3;j++){if(P!==i)return;try{const R=await h();return P!==i?void 0:(f({client:{key:n,data:R,isFetching:!1}}),R)}catch(R){if(E=R instanceof Error?R:new Error(String(R)),P!==i)return;j<2&&await je(2**j*1e3)}}P===i&&f({client:{key:n,error:E,isFetching:!1}})})();return o=y,y.finally(()=>{o===y&&(o=void 0)}),y},N=async(P=!1,h=!1)=>{if(!P&&I===0||!s||!a)return C().orders.data;if(g){if(!h)return g;const T=s;return await g,s!==T?void 0:N(P,h)}const y=++v,E=a,j=C().orders.data,R=new AbortController;O=R,f(T=>({orders:{key:s,data:T.orders.data,error:void 0,isFetching:!0}}));const b=E(j,h?!1:d,R.signal).then(({orders:T,legacyLoaded:G})=>{if(y!==v)return;d=G;const x=Ge(C().orders.data,T);return f({orders:{key:s,data:x,isFetching:!1}}),x}).catch(T=>{if(y!==v||R.signal.aborted)return;const G=T instanceof Error?T:new Error(String(T));f(x=>({orders:{key:s,data:x.orders.data,error:G,isFetching:!1}}))});return g=b,b.finally(()=>{g===b&&(g=void 0),O===R&&(O=void 0)}),b},D=()=>{N()},V=()=>{A&&(clearInterval(A),A=void 0),typeof window<"u"&&window.removeEventListener("focus",D),O==null||O.abort(),O=void 0,g=void 0,v++,f(P=>({orders:{...P.orders,isFetching:!1}}))},_=()=>{!s||!a||A||(N(!0),A=setInterval(()=>{N()},Me),typeof window<"u"&&window.addEventListener("focus",D))};return{client:ue,orders:le,state:_e(e),configureClient:(P,h)=>{if(n===P){r=h;return}n=P,r=h,i++,o=void 0,f({client:P?{key:P,isFetching:!1}:ue}),P&&h&&L()},refetchClient:L,configureOrders:(P,h)=>{if(s===P){a=h;return}V(),s=P,a=h,d=!1,f({orders:P?{key:P,isFetching:!1}:le}),I>0&&_()},registerOrdersConsumer:()=>(I++,I===1&&_(),()=>{I=Math.max(0,I-1),I===0&&V()}),refetchOrders:N,addOrder:P=>{f(h=>{const y=h.orders.data;return y!=null&&y.some(E=>E.historyKey===P.historyKey)?h:{orders:{...h.orders,data:[P,...y??[]]}}})},setCancelOrder:(P,h)=>{f(y=>({state:{...y.state,cancelOrders:{...y.state.cancelOrders,[P]:h}}}))},clearCancelOrder:P=>{f(h=>{if(!(P in h.state.cancelOrders))return h;const y={...h.state.cancelOrders};return delete y[P],{state:{...h.state,cancelOrders:y}}})},updateState:P=>f(h=>({state:{...h.state,...P}})),beginExecution:P=>{let h;return f(y=>we(y.state.currentExecution.phase)?(h={...P,executionId:++t,phase:u.PREPARING},{state:{...y.state,currentExecution:h}}):y),h},replaceExecution:(P,h)=>{let y=!1;return f(E=>{const j=E.state.currentExecution;return j.executionId!==P||h.executionId!==P||!Re(j.phase,h.phase)?E:(y=!0,{state:{...E.state,currentExecution:h}})}),y},returnToOrderForm:()=>{const P=C().state.currentExecution;return k(P.phase)||P.phase===u.SUCCESS?!1:(f(h=>({state:{...h.state,currentExecution:$(P.completedWrap)}})),!0)},syncFormDefaults:P=>k(C().state.currentExecution.phase)?!1:(f(h=>({state:{...h.state,...ne(P),currentExecution:$()}})),!0),startNewOrder:P=>{const{state:h}=C();return k(h.currentExecution.phase)?!1:(f(y=>({state:{...y.state,...ne(P),isMarketOrder:h.isMarketOrder,currentExecution:$()}})),!0)}}})},me=e=>{var n;const t=(n=e.overrides)==null?void 0:n.state;return{isMarketOrder:e.module===c.Module.LIMIT?!1:t==null?void 0:t.isMarketOrder,tradeCount:t==null?void 0:t.tradeCount,tradeInterval:t==null?void 0:t.tradeInterval,orderDuration:t==null?void 0:t.orderDuration,limitPriceUi:t==null?void 0:t.limitPriceUi,triggerPriceUi:t==null?void 0:t.triggerPriceUi,triggerPricePercent:t==null?void 0:t.triggerPricePercent,limitPricePercent:t==null?void 0:t.limitPricePercent}},ge=l.createContext(null),qe=({children:e,initialState:t})=>{const[n]=l.useState(()=>Be(t));return p.jsx(ge.Provider,{value:n,children:e})},U=()=>{const e=l.useContext(ge);if(e===null)throw new Error("useSpotStore must be used within SpotProvider");return e},w=e=>{const t=U();return Se.useStore(t,e)},We={isFetching:!1},Ue=()=>{const{partner:e,chainId:t,hasChainId:n}=M(),r=U(),i=!!(t&&n),o=i?`${e}:${t}`:void 0,s=l.useCallback(()=>t?c.createClient(e,t):Promise.reject(new Error("Spot is unavailable on the connected chain")),[t,e]);l.useEffect(()=>{r.getState().configureClient(o,i?s:void 0)},[i,o,s,r])},z=()=>{const{partner:e,chainId:t,hasChainId:n}=M(),r=U(),i=w(I=>I.client),o=!!(t&&n),s=o?`${e}:${t}`:void 0,a=i.key===s?i:We,d=l.useCallback(()=>{if(!o||!s)return Promise.resolve(void 0);const I=r.getState();return I.client.key!==s?Promise.resolve(void 0):I.refetchClient()},[o,s,r]);return l.useMemo(()=>({data:a.data,error:a.error,isLoading:o&&!a.data&&a.error===void 0,isFetching:a.isFetching,refetch:d}),[a,o,d])},Ve={isFetching:!1},Pe=(e,t,n)=>e&&t?JSON.stringify([e,t.exchangeAddress,t.partner,t.chainId,n]):void 0,He=()=>{const{account:e,supportLegacyOrders:t,callbacks:n}=M(),{data:r}=z(),i=U(),o=Pe(e,r,t),s=!!o,a=l.useCallback(async(d,I,v)=>!e||!r?{orders:[],legacyLoaded:!1}:xe({client:r,account:e,signal:v,supportLegacyOrders:t,previousOrders:d,legacyLoaded:I,callbacks:n}),[e,n,r,t]);l.useEffect(()=>{i.getState().configureOrders(o,s?a:void 0)},[s,o,a,i])},fe=()=>{const{account:e,supportLegacyOrders:t}=M(),{data:n}=z(),r=U(),i=Pe(e,n,t),o=!!i,s=l.useCallback((a=!1)=>!o||!i||r.getState().orders.key!==i?Promise.resolve(void 0):r.getState().refetchOrders(!0,a),[o,i,r]);return{enabled:o,key:i,refetch:s}},Ke=()=>{const e=U();return l.useCallback(t=>e.getState().addOrder(t),[e])},ze=()=>{const e=U();return l.useCallback(()=>e.getState().refetchOrders(),[e])},Je=()=>{const e=w(d=>d.orders),t=w(d=>d.registerOrdersConsumer),{enabled:n,key:r,refetch:i}=fe(),o=e.key===r?e:Ve;l.useEffect(()=>t(),[t]);const s=l.useMemo(()=>o.data===void 0?void 0:ce(o.data),[o.data]),a=l.useCallback(async()=>{const d=await i();return d===void 0?void 0:ce(d)},[i]);return l.useMemo(()=>({data:s,error:o.error,isLoading:n&&s===void 0&&o.error===void 0,isFetching:o.isFetching,isRefetching:o.isFetching&&s!==void 0,refetch:a}),[o,s,n,a])},ke=({children:e})=>(Ue(),He(),e),Qe=({error:e,retry:t,isRetrying:n})=>p.jsxs("div",{className:"spot-client-error-fallback",role:"alert",children:[p.jsx("p",{children:e.message||"Unable to load Spot configuration."}),p.jsx("button",{type:"button",className:"spot-client-error-retry",disabled:n,onClick:t,children:n?"Retrying…":"Retry"})]}),$e=({children:e,fallback:t=Qe})=>{const{hasChainId:n}=M(),{data:r,error:i,isFetching:o,refetch:s}=z(),a=l.useCallback(async()=>{await s()},[s]);return p.jsxs(p.Fragment,{children:[e,!r&&i&&n?p.jsx(t,{error:i,retry:a,isRetrying:o}):null]})},Ye=({resetErrorBoundary:e})=>p.jsxs("div",{className:"twap-error-fallback",role:"alert",children:[p.jsx("p",{children:"Something went wrong"}),p.jsx("button",{type:"button",onClick:e,children:"Retry"})]}),Ze=({children:e,fallback:t=Ye})=>{const n=U(),r=l.useCallback(i=>{var s;(((s=n.getState().client.data)==null?void 0:s.analytics)??c.analytics).onCrash(i)},[n]);return p.jsx(Xe,{fallback:t,reportCrash:r,children:e})};class Xe extends l.Component{constructor(){super(...arguments);oe(this,"state",{});oe(this,"resetErrorBoundary",()=>{this.setState({error:void 0})})}static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n){this.props.reportCrash(n)}render(){const{error:n}=this.state;if(n){const r=this.props.fallback;return p.jsx(r,{error:n,resetErrorBoundary:this.resetErrorBoundary})}return this.props.children}}const et=({children:e,defaults:t,scopeKey:n})=>{const r=U(),i=w(s=>s.state.currentExecution.phase),o=l.useRef(n);return l.useEffect(()=>{o.current===n||k(i)||r.getState().syncFormDefaults(t)&&(o.current=n)},[t,i,n,r]),e},Oe=l.createContext(null),tt=({children:e})=>{const{inputToken:t,outputToken:n,inputAmountUi:r,quotedOutputAmountRaw:i,inputTokenUsdPrice:o,outputTokenUsdPrice:s,minTradeSizeUsd:a,inputBalanceRaw:d,displayFeePercent:I,priceProtectionPercent:v,module:g}=M(),O=w(E=>E.state.tradeCount),A=w(E=>E.state.tradeInterval),f=w(E=>E.state.orderDuration),C=w(E=>E.state.limitPriceUi),L=w(E=>E.state.triggerPriceUi),N=w(E=>E.state.limitPricePercent),D=w(E=>E.state.triggerPricePercent),V=w(E=>E.state.isPriceInverted),_=w(E=>E.state.isMarketOrder),P=w(E=>{const j=E.state.currentExecution;return j.phase!==u.IDLE?j.form:void 0}),h=l.useMemo(()=>({module:g,inputTokenDecimals:(t==null?void 0:t.decimals)??0,outputTokenDecimals:(n==null?void 0:n.decimals)??0,quotedOutputAmountRaw:i,inputTokenUsdPrice:o,outputTokenUsdPrice:s,minTradeSizeUsd:a,priceProtectionPercent:v,displayFeePercent:I,inputBalanceRaw:d,userInput:{inputAmountUi:r,isMarketOrder:!!_,tradeCount:O,tradeInterval:A,orderDuration:f,limitPriceUi:C,limitPricePercent:N,triggerPriceUi:L,triggerPricePercent:D,isPriceInverted:V}}),[n==null?void 0:n.decimals,s,I,i,a,g,v,d,t==null?void 0:t.decimals,o,V,_,N,D,O,f,A,C,r,L]),y=l.useMemo(()=>{if(P)return P;const E=c.calculateOrderForm(h);return t&&n?E:{...E,isReady:!1,canSubmit:!1}},[P,t,n,h]);return p.jsx(Oe.Provider,{value:y,children:e})},q=()=>{const e=l.useContext(Oe);if(!e)throw new Error("useOrderForm must be used within OrderFormProvider");return e},rt=e=>{var v,g,O,A,f,C,L,N,D,V,_,P;const t=Number.isSafeInteger(e.chainId)&&Number(e.chainId)>0,n=(v=e.wrappedNativeToken)==null?void 0:v.address,r=!!(n&&(c.isNativeAddress((g=e.inputToken)==null?void 0:g.address)&&c.eqIgnoreCase(((O=e.outputToken)==null?void 0:O.address)||"",n)||c.eqIgnoreCase(((A=e.inputToken)==null?void 0:A.address)||"",n)&&c.isNativeAddress((f=e.outputToken)==null?void 0:f.address))),i=r?c.toAmountRaw(e.inputAmountUi,(C=e.outputToken)==null?void 0:C.decimals):e.marketQuote.isLoading?void 0:e.marketQuote.quotedOutputAmountRaw,o=r?!1:e.marketQuote.isLoading,s=r?!1:e.marketQuote.noLiquidity,a=l.useMemo(()=>me({module:e.module,overrides:e.overrides}),[e.module,e.overrides]),d=JSON.stringify([e.partner,e.chainId,e.module,(L=e.inputToken)==null?void 0:L.address,(N=e.inputToken)==null?void 0:N.decimals,(D=e.outputToken)==null?void 0:D.address,(V=e.outputToken)==null?void 0:V.decimals,(_=e.wrappedNativeToken)==null?void 0:_.address,(P=e.wrappedNativeToken)==null?void 0:P.decimals,a]),I=l.useMemo(()=>({inputAmountUi:e.inputAmountUi,minTradeSizeUsd:e.minTradeSizeUsd,account:e.account,walletInteractions:e.walletInteractions,quotedOutputAmountRaw:i,marketPriceLoading:o,noLiquidity:s,priceProtectionPercent:e.priceProtectionPercent,chainId:e.chainId,hasChainId:t,partner:e.partner,module:e.module,displayFeePercent:e.displayFeePercent??0,callbacks:e.callbacks,inputTokenUsdPrice:e.inputTokenUsdPrice,outputTokenUsdPrice:e.outputTokenUsdPrice,inputBalanceRaw:e.inputBalanceRaw,inputToken:e.inputToken,outputToken:e.outputToken,wrappedNativeToken:e.wrappedNativeToken,supportLegacyOrders:e.supportLegacyOrders??!1,overrides:e.overrides}),[e.account,e.callbacks,e.chainId,e.displayFeePercent,e.inputBalanceRaw,e.inputToken,e.inputTokenUsdPrice,e.minTradeSizeUsd,e.module,e.outputToken,e.outputTokenUsdPrice,e.wrappedNativeToken,e.overrides,e.partner,e.priceProtectionPercent,e.supportLegacyOrders,e.inputAmountUi,e.walletInteractions,t,o,s,i]);return{initialState:a,formScopeKey:d,trading:I}},nt=e=>{const{initialState:t,formScopeKey:n,trading:r}=rt(e);return p.jsx(Ce,{value:r,children:p.jsx(qe,{initialState:t,children:p.jsx(Ze,{fallback:e.errorFallback,children:p.jsx(ke,{children:p.jsx(et,{defaults:t,scopeKey:n,children:p.jsx($e,{fallback:e.clientErrorFallback,children:p.jsx(tt,{children:e.children})})})})})})})},it=(e,t)=>l.useMemo(()=>c.toAmountUI(t,e),[e,t]),ot=60,st=()=>{const{refetch:e}=fe();return l.useCallback(async(t,n=!1)=>{for(let r=0;r<ot;r++){const i=await e(n);if(!i)throw new Error("orders not found");const o=i.find(s=>s.historyKey===t);if((o==null?void 0:o.status)===c.OrderStatus.Cancelled)return;await new Promise(s=>setTimeout(s,1e3))}throw new Error("Timed out waiting for order cancellation to be confirmed")},[e])},at=e=>({...e,status:c.OrderStatus.Cancelled}),ct=e=>{const{account:t,walletInteractions:n,callbacks:r}=M(),{data:i}=z(),o=st(),s=w(g=>g.state.cancelOrders[(e==null?void 0:e.historyKey)??""]),a=w(g=>g.setCancelOrder),d=w(g=>g.clearCancelOrder),I=l.useCallback(async()=>{const g=e==null?void 0:e.historyKey;try{if(!t)throw new Error("missing account");if(!e)throw new Error("order is required");if(!i)throw new Error("Spot client is unavailable");const O=e.historyKey;a(O,{status:B.LOADING}),S(()=>{var L;return(L=r==null?void 0:r.onCancelOrderRequest)==null?void 0:L.call(r,e)}),S(()=>i.analytics.onCancelOrderRequest([e.version===1?e.id.toString():e.hash],e.version));const A=i.getCancelOrderRequest(e),f=await n.cancelOrder(A);if(!f)throw new Error("failed to cancel order");S(()=>i.analytics.onCancelOrderSuccess(f)),a(O,{status:B.LOADING,txHash:f}),await o(O,e.version===1);const C=at(e);return a(O,{status:B.SUCCESS,txHash:f}),S(()=>{var L;return(L=r==null?void 0:r.onCancelOrderSuccess)==null?void 0:L.call(r,{order:C,txHash:f})}),f}catch(O){c.isTxRejected(O)?g&&d(g):(g&&a(g,{status:B.FAILED,error:ee(O)}),S(()=>i==null?void 0:i.analytics.onCancelOrderError(O))),S(()=>{var A;return(A=r==null?void 0:r.onCancelOrderFailed)==null?void 0:A.call(r,Y(O))})}},[t,r,d,i,e,o,a,n]),v=l.useMemo(()=>{const g=s;return{isLoading:(g==null?void 0:g.status)===B.LOADING,disabled:!!(e&&!i),isSuccess:(g==null?void 0:g.status)===B.SUCCESS,isError:(g==null?void 0:g.status)===B.FAILED,error:g==null?void 0:g.error,txHash:g==null?void 0:g.txHash}},[s,e,i]);return l.useMemo(()=>({cancelOrder:I,...v}),[I,v])},dt=()=>{const{module:e,values:t}=q();if(t.isMarketOrder&&e===c.Module.STOP_LOSS)return Q.TRIGGER_MARKET_PRICE;if(e===c.Module.LIMIT||e===c.Module.TWAP)return t.isMarketOrder?Q.MARKET_PRICE:Q.LIMIT_PRICE},ut=()=>{const{callbacks:e}=M(),t=w(a=>a.updateState),{schedule:n}=q(),{duration:r}=n,i=l.useCallback(a=>{t({orderDuration:a}),S(()=>{var d;return(d=e==null?void 0:e.onOrderDurationChange)==null?void 0:d.call(e,a)})},[e,t]),o=l.useCallback(a=>{const d=Number(a);Number.isFinite(d)&&i({unit:r.unit,value:d})},[r.unit,i]),s=l.useCallback(a=>{i({unit:a,value:r.value})},[r.value,i]);return l.useMemo(()=>({duration:r,onChange:i,milliseconds:n.durationMillis,onInputChange:o,onUnitSelect:s,error:n.durationError}),[r,i,o,s,n])},lt=()=>{const{callbacks:e}=M(),t=w(a=>a.updateState),{schedule:n}=q(),{fillDelay:r}=n,i=l.useCallback(a=>{t({tradeInterval:a}),S(()=>{var d;return(d=e==null?void 0:e.onTradeIntervalChange)==null?void 0:d.call(e,a)})},[e,t]),o=l.useCallback(a=>{const d=Number(a);Number.isFinite(d)&&i({unit:r.unit,value:d})},[r.unit,i]),s=l.useCallback(a=>i({unit:a,value:r.value}),[r.value,i]);return l.useMemo(()=>({onInputChange:o,onUnitSelect:s,onChange:i,milliseconds:n.fillDelayMillis,fillDelay:r,error:n.fillDelayError}),[r,i,o,s,n])},W=(e,t)=>({raw:e||"",ui:c.toAmountUI(e,t)}),mt=(e,t,n)=>l.useMemo(()=>!e||!t||!n?[]:e.map(r=>({rawFill:r,inputToken:t,outputToken:n,inputAmount:W(r.inAmount,t.decimals),outputAmount:W(r.outAmount,n.decimals),timestamp:r.timestamp,txHash:r.txHash,executionRate:c.getOrderExecutionRate(r.inAmount,r.outAmount,t.decimals,n.decimals)})),[e,t,n]),gt=(e,t,n)=>{const{chainId:r,partner:i}=M(),o=l.useMemo(()=>{if(!(!t||!n||!e||e.isMarketPrice))return c.getOrderLimitPriceRate(e,t.decimals,n.decimals)},[t,e,n]),s=l.useMemo(()=>{if(!(!t||!n||!e))return c.getTriggerPriceRate(e,t.decimals,n.decimals)},[t,e,n]),a=l.useMemo(()=>{if(!(!t||!n||!e))return c.getOrderExecutionRate(e.srcAmountFilled,e.dstAmountFilled,t.decimals,n.decimals)},[t,e,n]),d=l.useMemo(()=>e?c.getOrderFillDelayMillis(e,r?c.getTwapConfig(i,r):void 0):0,[e,i,r]),I=mt(e==null?void 0:e.fills,t,n);return l.useMemo(()=>{if(e!=null&&e.id)return{original:e,fills:I,inputToken:t,outputToken:n,orderType:e.type,createdAt:e.createdAt,deadline:e.deadline||0,totalTrades:e.totalTradesAmount||0,tradeInterval:d,recipient:e.maker||"",inputAmount:W(e.srcAmount,t==null?void 0:t.decimals),limitPrice:W(c.toAmountRaw(o,n==null?void 0:n.decimals),n==null?void 0:n.decimals),inputAmountPerTrade:W(e.srcAmountPerTrade,t==null?void 0:t.decimals),minOutputAmountPerTrade:W(e.dstMinAmountPerTrade,n==null?void 0:n.decimals),minOutputAmount:W(e.dstMinAmountTotal,n==null?void 0:n.decimals),triggerPrice:W(c.toAmountRaw(s,n==null?void 0:n.decimals),n==null?void 0:n.decimals),id:e.id,inputAmountFilled:W(e.srcAmountFilled,t==null?void 0:t.decimals),outputAmountFilled:W(e.dstAmountFilled,n==null?void 0:n.decimals),progress:e.progress,executionPrice:W(c.toAmountRaw(a,n==null?void 0:n.decimals),n==null?void 0:n.decimals),version:e.version}},[e,I,t,n,d,o,s,a])},Pt=()=>{const{marketPriceLoading:e}=M(),t=q().errors.primary;return e?void 0:t},ft=()=>{const{marketPriceLoading:e,inputToken:t,outputToken:n,callbacks:r}=M(),{limitPrice:i,values:o,module:s,isInverted:a}=q(),d=w(f=>f.updateState),I=l.useCallback(f=>{d({limitPriceUi:f,limitPricePercent:null}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPriceChange)==null?void 0:C.call(r,f||"")}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPricePercentChange)==null?void 0:C.call(r,"")})},[r,d]),v=l.useCallback(f=>{d({limitPriceUi:void 0,limitPricePercent:f}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPriceChange)==null?void 0:C.call(r,"")}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPricePercentChange)==null?void 0:C.call(r,f||"")})},[r,d]),g=l.useCallback(()=>{d({limitPriceUi:void 0,limitPricePercent:void 0})},[d]),O=!o.isMarketOrder,A=l.useCallback(()=>{d({isMarketOrder:!o.isMarketOrder,...o.isMarketOrder?{}:{isPriceInverted:!1},...!o.isMarketOrder&&s===c.Module.STOP_LOSS?{limitPricePercent:void 0}:{}})},[s,d,o.isMarketOrder]);return l.useMemo(()=>({price:i.display,canonicalPriceRaw:i.raw,error:i.error,onInputChange:I,onPercentageChange:v,onReset:g,inputToken:t,outputToken:n,displayInputToken:a?n:t,displayOutputToken:a?t:n,percentage:i.percentage,isLoading:!!e,isEnabled:O,toggle:A,isTypedValue:i.isTypedValue}),[t,a,O,i,e,I,v,g,n,A])},Ot=()=>{const{marketPriceLoading:e}=M(),{outputAmount:t}=q();return l.useMemo(()=>({amount:t,isLoading:!!e}),[e,t])},ht=()=>{const{inputToken:e,outputToken:t}=M(),n=w(d=>d.updateState),{isInverted:r,values:i}=q(),o=w(d=>d.state.triggerPriceUi),s=w(d=>d.state.limitPriceUi),a=l.useCallback(()=>{n({isPriceInverted:!r,...o!==void 0?{triggerPriceUi:c.invertPriceInput(o)}:{},...s!==void 0?{limitPriceUi:c.invertPriceInput(s)}:{}})},[n,r,o,s]);return l.useMemo(()=>({onInvert:a,isInverted:r,inputToken:e,outputToken:t,displayInputToken:r?t:e,displayOutputToken:r?e:t,isMarketOrder:i.isMarketOrder}),[e,r,a,t,i.isMarketOrder])},he=3,Et=3e3,St=e=>new Promise(t=>setTimeout(t,e)),ie=(e,t)=>{if(!/^\d+$/.test(e))throw new Error(`${t} must be a non-negative integer base-unit amount`);return BigInt(e)},Ee=async({client:e,walletInteractions:t,tokenAddress:n,inputAmountRaw:r})=>{const i=await t.getAllowance({tokenAddress:n,spenderAddress:e.spenderAddress});return ie(i||"0","Allowance")>=ie(r,"Input amount")},It=e=>{if(!e.client)throw new Error("Spot client is unavailable");if(!e.hasChainId||!e.chainId)throw new Error("Spot is unavailable on the connected chain");if(!e.account)throw new Error("missing account");if(!e.inputToken)throw new Error("missing inputToken");if(!e.outputToken)throw new Error("missing outputToken");const t=c.isNativeAddress(e.inputToken.address)?e.wrappedNativeToken:e.inputToken;if(!t||c.isNativeAddress(t.address))throw new Error("missing wrappedNativeToken for native input");if(!e.form.canSubmit)throw new Error("Order form is not submittable");const n=e.form.inputAmount.raw;return ie(n,"Input amount"),{account:e.account,chainId:e.chainId,inputToken:e.inputToken,orderInputToken:t,outputToken:e.outputToken,client:e.client,inputAmountRaw:n}},At=({analytics:e,account:t,chainId:n,inputToken:r,outputToken:i,preparedOrder:o})=>{const{form:s,values:a}=o;S(()=>e.onRequestOrder({account:t,chainId:n,module:s.module,srcToken:r,dstToken:i,fromTokenAmount:a.inputAmount,srcChunkAmount:a.inputAmountPerTrade,triggerPricePerTrade:a.triggerOutputAmountPerTrade,deadline:a.deadlineMillis,fillDelay:a.fillDelayMillis,minDstAmountOutPerTrade:a.minOutputAmountPerTrade,slippage:s.values.slippageBps/100,isMarketOrder:a.isMarketOrder,chunksAmount:a.totalTrades}))},Ct=async e=>{const{form:t,walletInteractions:n,callbacks:r,addNewOrder:i,refetchActiveOrders:o,getCurrentExecution:s,beginExecution:a,replaceExecution:d,wait:I=St}=e;let v;try{v=It(e)}catch(R){const b=Y(R),T=te(R),G=a({form:t,inputToken:e.inputToken,outputToken:e.outputToken,chainId:e.chainId});throw G&&d(G.executionId,{...G,phase:u.FAILED,error:b,parsedError:T}),S(()=>{var x;return(x=r==null?void 0:r.onSubmitOrderFailed)==null?void 0:x.call(r,T)}),b}const{account:g,chainId:O,inputToken:A,orderInputToken:f,outputToken:C,client:L,inputAmountRaw:N}=v,{analytics:D}=L,V=s(),_=Ne({execution:V,account:g,chainId:O,inputTokenAddress:A.address,inputAmountRaw:N}),P=a({form:t,inputToken:A,outputToken:C,chainId:O,completedWrap:_,wrapTxHash:_==null?void 0:_.txHash});if(!P)return;const h=P.executionId;let y=P;const E=(R,b={})=>{const T={...y,...b,executionId:h,phase:R};if(!d(h,T))throw new Error("Execution is no longer current");y=T},j=(R,b={})=>{const T={...y,...b,executionId:h,phase:R};return d(h,T)?(y=T,!0):!1};try{const R=c.isNativeAddress(A.address)&&!_,b=!await Ee({client:L,walletInteractions:n,tokenAddress:f.address,inputAmountRaw:N}),T=[];R&&T.push(K.WRAP),b&&T.push(K.APPROVE),T.push(K.CREATE);let G=0;if(E(u.PREPARING,{pendingSteps:T,totalSteps:T.length,stepIndex:G,hasApproval:!b}),R){E(u.WRAPPING),S(()=>D.onWrapRequest()),S(r==null?void 0:r.onWrapRequest);const F=await n.wrapNativeToken(N);if(!F)throw new Error("failed to wrap input token");const J={account:g,chainId:O,inputTokenAddress:A.address,inputAmountRaw:N,txHash:F};G++,E(u.WRAPPING,{wrapTxHash:F,completedWrap:J,stepIndex:G}),S(()=>D.onWrapSuccess(F)),S(()=>{var H;return(H=r==null?void 0:r.onWrapSuccess)==null?void 0:H.call(r,{txHash:F,amount:c.toAmountUI(N,f.decimals)})})}if(b){E(u.APPROVING),S(()=>D.onApproveRequest()),S(r==null?void 0:r.onApproveRequest);const F=await n.approveToken({tokenAddress:f.address,amount:N,spenderAddress:L.spenderAddress});if(!F)throw new Error("failed to approve token");E(u.APPROVING,{approveTxHash:F});let J=!1;for(let H=0;H<he&&(J=await Ee({client:L,walletInteractions:n,tokenAddress:f.address,inputAmountRaw:N}),!J);H++)H<he-1&&await I(Et);if(!J)throw new Error(`Insufficient ${f.symbol} allowance to perform the swap. Please approve the token first.`);G++,E(u.APPROVING,{hasApproval:!0,stepIndex:G}),S(()=>D.onApproveSuccess(F)),S(()=>{var H;return(H=r==null?void 0:r.onApproveSuccess)==null?void 0:H.call(r,{txHash:F,token:f,amount:c.toAmountUI(N,f.decimals)})})}E(u.SIGNING);const x=L.prepareOrder({form:t,inputTokenAddress:f.address,outputTokenAddress:C.address,swapperAddress:g});E(u.SIGNING,{preparedOrder:x}),At({analytics:D,account:g,chainId:O,inputToken:A,outputToken:C,preparedOrder:x}),S(()=>D.onSignOrderRequest(x.order)),S(r==null?void 0:r.onSignOrderRequest);let Z;try{Z=await n.signOrder(x.signingRequest),S(()=>D.onSignOrderSuccess(Z)),S(()=>{var F;return(F=r==null?void 0:r.onSignOrderSuccess)==null?void 0:F.call(r,Z)})}catch(F){throw S(()=>D.onSignOrderError(F)),S(()=>{var J;return(J=r==null?void 0:r.onSignOrderError)==null?void 0:J.call(r,Y(F))}),F}E(u.SUBMITTING);const X=await L.submitOrder(x.order,Z);return E(u.SUCCESS,{orderId:X.id.toString()}),S(()=>i(X)),S(()=>o()),S(()=>{var F;return(F=r==null?void 0:r.onOrderCreated)==null?void 0:F.call(r,X)}),X}catch(R){const b=y.phase,T=Y(R),G=c.isTxRejected(R);throw j(G?u.REJECTED:u.FAILED,{error:T,parsedError:te(R)}),b===u.WRAPPING?S(()=>D.onWrapError(R)):b===u.APPROVING&&S(()=>D.onApproveError(R)),S(G?r==null?void 0:r.onSubmitOrderRejected:()=>{var x;return(x=r==null?void 0:r.onSubmitOrderFailed)==null?void 0:x.call(r,te(R))}),T}},yt=()=>{const{data:e}=z(),{inputToken:t,outputToken:n,wrappedNativeToken:r,chainId:i,hasChainId:o,callbacks:s,account:a,walletInteractions:d}=M(),I=Ke(),v=ze(),g=q(),O=U();return l.useCallback(()=>{Ct({account:a,chainId:i,hasChainId:o,inputToken:t,outputToken:n,wrappedNativeToken:r,form:g,client:e,walletInteractions:d,callbacks:s,addNewOrder:I,refetchActiveOrders:v,getCurrentExecution:()=>O.getState().state.currentExecution,beginExecution:O.getState().beginExecution,replaceExecution:O.getState().replaceExecution}).catch(()=>{})},[a,I,s,i,e,g,t,o,n,r,v,O,d])},vt=()=>{const e=w(n=>n.state.currentExecution),t=w(n=>n.returnToOrderForm);return l.useMemo(()=>({...e,returnToOrderForm:t}),[e,t])},wt=()=>{const e=vt(),{inputToken:t,outputToken:n,chainId:r,hasChainId:i,module:o,overrides:s}=M(),{data:a,isLoading:d}=z(),I=yt(),v=w(L=>L.startNewOrder),g=l.useCallback(()=>I(),[I]),O=l.useCallback(()=>v(me({module:o,overrides:s})),[o,s,v]),A=Te(e.phase),f=pe(e.phase),C=k(e.phase);return l.useMemo(()=>({phase:e.phase,status:A,error:e.parsedError,currentStep:f,currentStepIndex:e.stepIndex,approvalTxHash:e.approveTxHash,wrapTxHash:e.wrapTxHash,totalSteps:e.totalSteps,executionSteps:e.pendingSteps,inputToken:e.inputToken??t,outputToken:e.outputToken??n,chainId:e.chainId??r,submitOrder:g,startNewOrder:O,returnToOrderForm:e.returnToOrderForm,isExecuting:C,isSuccess:e.phase===u.SUCCESS,isFailed:e.phase===u.FAILED,isRejected:e.phase===u.REJECTED,isPreparingOrder:e.phase===u.PREPARING||i&&d&&!a,canDismiss:!C}),[a,f,t,n,r,d,C,i,O,g,A,e])},Rt=()=>{const{inputToken:e,outputToken:t,wrappedNativeToken:n,inputBalanceRaw:r,noLiquidity:i,inputAmountUi:o,marketPriceLoading:s,hasChainId:a}=M(),d=q(),{data:I,isLoading:v}=z(),g=w(N=>N.state.currentExecution.phase),O=k(g),A=!!(e&&c.isNativeAddress(e.address)&&(!n||c.isNativeAddress(n.address))),f=s||!d.isReady||r===void 0,C=O||a&&v&&!I||!!(e&&t&&o&&f),L=!!(!d.canSubmit||O||!a||!I||i||C||!e||!t||A);return l.useMemo(()=>({disabled:L,loading:C}),[L,C])},Tt=()=>{const{inputToken:e,outputToken:t,callbacks:n}=M(),r=w(s=>s.updateState),{trades:i}=q(),o=l.useCallback(s=>{r({tradeCount:s}),S(()=>{var a;return(a=n==null?void 0:n.onTradeCountChange)==null?void 0:a.call(n,s)})},[n,r]);return l.useMemo(()=>({totalTrades:i.totalTrades,maxTrades:i.maxTrades,inputAmountPerTrade:i.inputAmountPerTrade,minOutputAmountPerTrade:i.minOutputAmountPerTrade,triggerOutputAmountPerTrade:i.triggerOutputAmountPerTrade,onChange:o,error:i.error,inputToken:e,outputToken:t}),[e,o,t,i])},pt=()=>{const{marketPriceLoading:e,inputToken:t,outputToken:n,callbacks:r}=M(),{marketPrice:i,trades:o,triggerPrice:s,isInverted:a}=q(),d=w(O=>O.updateState),I=l.useCallback(O=>{d({triggerPriceUi:O,triggerPricePercent:null}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPriceChange)==null?void 0:A.call(r,O||"")}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPricePercentChange)==null?void 0:A.call(r,"")})},[r,d]),v=l.useCallback(O=>{d({triggerPriceUi:void 0,triggerPricePercent:O}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPriceChange)==null?void 0:A.call(r,"")}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPricePercentChange)==null?void 0:A.call(r,O||"")})},[r,d]),g=l.useCallback(()=>{d({triggerPricePercent:void 0,triggerPriceUi:void 0})},[d]);return l.useMemo(()=>({price:s.display,canonicalPriceRaw:s.raw,outputAmountPerTrade:o.triggerOutputAmountPerTrade,error:s.error,onInputChange:I,onPercentageChange:v,percentage:s.percentage,onReset:g,inputToken:t,outputToken:n,displayInputToken:a?n:t,displayOutputToken:a?t:n,isLoading:!!(e||!i.raw),isTypedValue:s.isTypedValue}),[t,a,i.raw,e,I,v,g,n,o.triggerOutputAmountPerTrade,s])};c.setUIVersion(Ae.version),Object.defineProperty(m,"DISCLAIMER_URL",{enumerable:!0,get:()=>c.DISCLAIMER_URL}),Object.defineProperty(m,"InputErrors",{enumerable:!0,get:()=>c.InputErrors}),Object.defineProperty(m,"Module",{enumerable:!0,get:()=>c.Module}),Object.defineProperty(m,"ORBS_LOGO",{enumerable:!0,get:()=>c.ORBS_LOGO}),Object.defineProperty(m,"ORBS_SLTP_FAQ_URL",{enumerable:!0,get:()=>c.ORBS_SLTP_FAQ_URL}),Object.defineProperty(m,"ORBS_TWAP_FAQ_URL",{enumerable:!0,get:()=>c.ORBS_TWAP_FAQ_URL}),Object.defineProperty(m,"ORBS_WEBSITE_URL",{enumerable:!0,get:()=>c.ORBS_WEBSITE_URL}),Object.defineProperty(m,"OrderFilter",{enumerable:!0,get:()=>c.OrderFilter}),Object.defineProperty(m,"OrderStatus",{enumerable:!0,get:()=>c.OrderStatus}),Object.defineProperty(m,"OrderType",{enumerable:!0,get:()=>c.OrderType}),Object.defineProperty(m,"Partners",{enumerable:!0,get:()=>c.Partners}),Object.defineProperty(m,"TimeUnit",{enumerable:!0,get:()=>c.TimeUnit}),Object.defineProperty(m,"calculateOrderForm",{enumerable:!0,get:()=>c.calculateOrderForm}),Object.defineProperty(m,"createClient",{enumerable:!0,get:()=>c.createClient}),Object.defineProperty(m,"eqIgnoreCase",{enumerable:!0,get:()=>c.eqIgnoreCase}),Object.defineProperty(m,"getOrderExecutionRate",{enumerable:!0,get:()=>c.getOrderExecutionRate}),Object.defineProperty(m,"getOrderFillDelayMillis",{enumerable:!0,get:()=>c.getOrderFillDelayMillis}),Object.defineProperty(m,"getOrderLimitPriceRate",{enumerable:!0,get:()=>c.getOrderLimitPriceRate}),Object.defineProperty(m,"getTriggerPriceRate",{enumerable:!0,get:()=>c.getTriggerPriceRate}),Object.defineProperty(m,"getTwapConfig",{enumerable:!0,get:()=>c.getTwapConfig}),Object.defineProperty(m,"invertPriceInput",{enumerable:!0,get:()=>c.invertPriceInput}),Object.defineProperty(m,"isNativeAddress",{enumerable:!0,get:()=>c.isNativeAddress}),Object.defineProperty(m,"isTxRejected",{enumerable:!0,get:()=>c.isTxRejected}),Object.defineProperty(m,"toAmountRaw",{enumerable:!0,get:()=>c.toAmountRaw}),Object.defineProperty(m,"toAmountUI",{enumerable:!0,get:()=>c.toAmountUI}),m.Disclaimer=Q,m.ExecutionPhase=u,m.ExecutionStatus=B,m.SpotProvider=nt,m.Steps=K,m.useAmountUi=it,m.useCancelOrder=ct,m.useClient=z,m.useDisclaimer=dt,m.useDuration=ut,m.useExecution=wt,m.useFillDelay=lt,m.useHistoryOrder=gt,m.useInputErrors=Pt,m.useLimitPrice=ft,m.useOrderForm=q,m.useOrders=Je,m.useOutputAmount=Ot,m.usePriceDisplay=ht,m.useSubmitButton=Rt,m.useTrades=Tt,m.useTriggerPrice=pt,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(m,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("@orbs-network/spot-ui"),require("react/jsx-runtime"),require("react"),require("zustand"),require("zustand/vanilla")):typeof define=="function"&&define.amd?define(["exports","@orbs-network/spot-ui","react/jsx-runtime","react","zustand","zustand/vanilla"],c):(m=typeof globalThis<"u"?globalThis:m||self,c(m.SpotReact={},m.SpotUI,m.jsxRuntime,m.React,m.Zustand,m.ZustandVanilla))})(this,(function(m,c,p,l,Se,Ie){"use strict";"use client";var Lt=Object.defineProperty;var Nt=(m,c,p)=>c in m?Lt(m,c,{enumerable:!0,configurable:!0,writable:!0,value:p}):m[c]=p;var oe=(m,c,p)=>Nt(m,typeof c!="symbol"?c+"":c,p);const Ae={version:"2.1.17"},se=l.createContext(null),Ce=({children:e,value:t})=>p.jsx(se.Provider,{value:t,children:e}),M=()=>{const e=l.useContext(se);if(e===null)throw new Error("useSpotTrading must be used within SpotProvider");return e};var B=(e=>(e[e.LOADING=1]="LOADING",e[e.SUCCESS=2]="SUCCESS",e[e.FAILED=3]="FAILED",e))(B||{}),u=(e=>(e.IDLE="idle",e.PREPARING="preparing",e.WRAPPING="wrapping",e.APPROVING="approving",e.SIGNING="signing",e.SUBMITTING="submitting",e.SUCCESS="success",e.FAILED="failed",e.REJECTED="rejected",e))(u||{}),Q=(e=>(e.TRIGGER_MARKET_PRICE="triggerMarketPriceDisclaimer",e.MARKET_PRICE="marketOrderDisclaimer",e.LIMIT_PRICE="limitOrderDisclaimer",e))(Q||{}),K=(e=>(e.WRAP="wrap",e.APPROVE="approve",e.CREATE="create",e))(K||{});const ye=new Set([u.PREPARING,u.WRAPPING,u.APPROVING,u.SIGNING,u.SUBMITTING]),ve={[u.IDLE]:new Set,[u.PREPARING]:new Set([u.PREPARING,u.WRAPPING,u.APPROVING,u.SIGNING,u.FAILED,u.REJECTED]),[u.WRAPPING]:new Set([u.WRAPPING,u.APPROVING,u.SIGNING,u.FAILED,u.REJECTED]),[u.APPROVING]:new Set([u.APPROVING,u.SIGNING,u.FAILED,u.REJECTED]),[u.SIGNING]:new Set([u.SIGNING,u.SUBMITTING,u.FAILED,u.REJECTED]),[u.SUBMITTING]:new Set([u.SUCCESS,u.FAILED,u.REJECTED]),[u.SUCCESS]:new Set,[u.FAILED]:new Set,[u.REJECTED]:new Set},$=e=>({phase:u.IDLE,completedWrap:e}),k=e=>ye.has(e),we=e=>e===u.IDLE||e===u.FAILED||e===u.REJECTED,Re=(e,t)=>ve[e].has(t),Te=e=>{if(k(e))return B.LOADING;if(e===u.SUCCESS)return B.SUCCESS;if(e===u.FAILED||e===u.REJECTED)return B.FAILED},pe=e=>{if(e===u.WRAPPING)return K.WRAP;if(e===u.APPROVING)return K.APPROVE;if(e===u.SIGNING||e===u.SUBMITTING)return K.CREATE},ee=e=>{if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(typeof e=="object"&&e!==null){const t=Reflect.get(e,"message");if(typeof t=="string")return t}return"Unknown error"},Le=e=>{if(typeof e!="object"||e===null)return 0;const t=Reflect.get(e,"code");return typeof t=="number"&&Number.isFinite(t)?t:typeof t=="string"&&/^-?\d+$/.test(t)?Number(t):0},Y=e=>e instanceof Error?e:new Error(ee(e)),te=e=>{const t=ee(e),n=t.match(/,\s*code\s*:\s*(-?\d+)/i);return{message:t.replace(/^error\s*:/i,"").replace(/,\s*code\s*:\s*-?\d+/i,"").trim()||"Unknown error",code:Le(e)||(n?Number(n[1]):0)}},S=e=>{if(e)try{const t=e();Promise.resolve(t).catch(()=>{})}catch{}},Ne=({execution:e,account:t,chainId:n,inputTokenAddress:r,inputAmountRaw:i})=>{const o=e.completedWrap;if((o==null?void 0:o.account.toLowerCase())===t.toLowerCase()&&o.chainId===n&&o.inputTokenAddress.toLowerCase()===r.toLowerCase()&&Fe(o.inputAmountRaw,i))return o},Fe=(e,t)=>{try{return BigInt(e)>=BigInt(t)}catch{return!1}},Me=2e4,ae=new WeakMap,ce=e=>{const t=ae.get(e);if(t)return t;const n={all:[...e].sort((r,i)=>i.createdAt-r.createdAt),open:[],completed:[],cancelled:[],expired:[]};for(const r of n.all)switch(r.status){case c.OrderStatus.Open:n.open.push(r);break;case c.OrderStatus.Completed:n.completed.push(r);break;case c.OrderStatus.Cancelled:n.cancelled.push(r);break;case c.OrderStatus.Expired:n.expired.push(r);break}return ae.set(e,n),n},De=(e,t)=>{const n=new Set(e.map(i=>i.historyKey)),r=(t==null?void 0:t.filter(i=>i.version===1&&!n.has(i.historyKey)))??[];return[...e,...r]},be=(e,t,n)=>{if(!e)return;const r=new Map(t.map(o=>[o.historyKey,o])),i=[];for(const o of e){if(o.version!==2)continue;const s=r.get(o.historyKey);!s||s.progress===o.progress||(i.push(s),s.status===c.OrderStatus.Completed&&S(()=>{var a;return(a=n==null?void 0:n.onOrderFilled)==null?void 0:a.call(n,s)}))}i.length>0&&S(()=>{var o;return(o=n==null?void 0:n.onOrdersProgressUpdate)==null?void 0:o.call(n,i)})},de=e=>{if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},re=(e,t)=>{if(Object.is(e,t))return e;if(Array.isArray(e)&&Array.isArray(t)){const n=t.map((i,o)=>re(e[o],i));return e.length===n.length&&n.every((i,o)=>i===e[o])?e:n}if(de(e)&&de(t)){const n=Object.keys(e),r=Object.keys(t),i={};let o=n.length===r.length;for(const s of r){Object.prototype.hasOwnProperty.call(e,s)||(o=!1);const a=re(e[s],t[s]);i[s]=a,a!==e[s]&&(o=!1)}return o?e:i}return t},Ge=(e,t)=>e?re(e,t):t,xe=async({client:e,account:t,signal:n,supportLegacyOrders:r,previousOrders:i,legacyLoaded:o,callbacks:s})=>{const a=await e.getAccountOrdersResult({signal:n,account:t,legacyOrders:r&&!o});if(n.aborted)throw n.reason;return be(i,a.orders,s),{orders:r&&!a.legacyLoaded?De(a.orders,i):a.orders,legacyLoaded:o||a.legacyLoaded}},ne=e=>({tradeCount:e.tradeCount,tradeInterval:e.tradeInterval,orderDuration:e.orderDuration,limitPriceUi:e.limitPriceUi,triggerPriceUi:e.triggerPriceUi,triggerPricePercent:e.triggerPricePercent,limitPricePercent:e.limitPricePercent,isMarketOrder:e.isMarketOrder,isPriceInverted:void 0}),_e=e=>({...ne(e),cancelOrders:{},currentExecution:$()}),ue={isFetching:!1},le={isFetching:!1},je=e=>new Promise(t=>setTimeout(t,e)),Be=e=>{let t=0,n,r,i=0,o,s,a,d=!1,I=0,v=0,g,O,A;return Ie.createStore((f,C)=>{const L=async()=>{if(!n||!r)return;if(o)return o;const P=++i,h=r;f(E=>({client:{key:n,data:E.client.data,error:void 0,isFetching:!0}}));const y=(async()=>{let E;for(let j=0;j<3;j++){if(P!==i)return;try{const R=await h();return P!==i?void 0:(f({client:{key:n,data:R,isFetching:!1}}),R)}catch(R){if(E=R instanceof Error?R:new Error(String(R)),P!==i)return;j<2&&await je(2**j*1e3)}}P===i&&f({client:{key:n,error:E,isFetching:!1}})})();return o=y,y.finally(()=>{o===y&&(o=void 0)}),y},N=async(P=!1,h=!1)=>{if(!P&&I===0||!s||!a)return C().orders.data;if(g){if(!h)return g;const T=s;return await g,s!==T?void 0:N(P,h)}const y=++v,E=a,j=C().orders.data,R=new AbortController;O=R,f(T=>({orders:{key:s,data:T.orders.data,error:void 0,isFetching:!0}}));const b=E(j,h?!1:d,R.signal).then(({orders:T,legacyLoaded:G})=>{if(y!==v)return;d=G;const x=Ge(C().orders.data,T);return f({orders:{key:s,data:x,isFetching:!1}}),x}).catch(T=>{if(y!==v||R.signal.aborted)return;const G=T instanceof Error?T:new Error(String(T));f(x=>({orders:{key:s,data:x.orders.data,error:G,isFetching:!1}}))});return g=b,b.finally(()=>{g===b&&(g=void 0),O===R&&(O=void 0)}),b},D=()=>{N()},V=()=>{A&&(clearInterval(A),A=void 0),typeof window<"u"&&window.removeEventListener("focus",D),O==null||O.abort(),O=void 0,g=void 0,v++,f(P=>({orders:{...P.orders,isFetching:!1}}))},_=()=>{!s||!a||A||(N(!0),A=setInterval(()=>{N()},Me),typeof window<"u"&&window.addEventListener("focus",D))};return{client:ue,orders:le,state:_e(e),configureClient:(P,h)=>{if(n===P){r=h;return}n=P,r=h,i++,o=void 0,f({client:P?{key:P,isFetching:!1}:ue}),P&&h&&L()},refetchClient:L,configureOrders:(P,h)=>{if(s===P){a=h;return}V(),s=P,a=h,d=!1,f({orders:P?{key:P,isFetching:!1}:le}),I>0&&_()},registerOrdersConsumer:()=>(I++,I===1&&_(),()=>{I=Math.max(0,I-1),I===0&&V()}),refetchOrders:N,addOrder:P=>{f(h=>{const y=h.orders.data;return y!=null&&y.some(E=>E.historyKey===P.historyKey)?h:{orders:{...h.orders,data:[P,...y??[]]}}})},setCancelOrder:(P,h)=>{f(y=>({state:{...y.state,cancelOrders:{...y.state.cancelOrders,[P]:h}}}))},clearCancelOrder:P=>{f(h=>{if(!(P in h.state.cancelOrders))return h;const y={...h.state.cancelOrders};return delete y[P],{state:{...h.state,cancelOrders:y}}})},updateState:P=>f(h=>({state:{...h.state,...P}})),beginExecution:P=>{let h;return f(y=>we(y.state.currentExecution.phase)?(h={...P,executionId:++t,phase:u.PREPARING},{state:{...y.state,currentExecution:h}}):y),h},replaceExecution:(P,h)=>{let y=!1;return f(E=>{const j=E.state.currentExecution;return j.executionId!==P||h.executionId!==P||!Re(j.phase,h.phase)?E:(y=!0,{state:{...E.state,currentExecution:h}})}),y},returnToOrderForm:()=>{const P=C().state.currentExecution;return k(P.phase)||P.phase===u.SUCCESS?!1:(f(h=>({state:{...h.state,currentExecution:$(P.completedWrap)}})),!0)},syncFormDefaults:P=>k(C().state.currentExecution.phase)?!1:(f(h=>({state:{...h.state,...ne(P),currentExecution:$()}})),!0),startNewOrder:P=>{const{state:h}=C();return k(h.currentExecution.phase)?!1:(f(y=>({state:{...y.state,...ne(P),isMarketOrder:h.isMarketOrder,currentExecution:$()}})),!0)}}})},me=e=>{var n;const t=(n=e.overrides)==null?void 0:n.state;return{isMarketOrder:e.module===c.Module.LIMIT?!1:t==null?void 0:t.isMarketOrder,tradeCount:t==null?void 0:t.tradeCount,tradeInterval:t==null?void 0:t.tradeInterval,orderDuration:t==null?void 0:t.orderDuration,limitPriceUi:t==null?void 0:t.limitPriceUi,triggerPriceUi:t==null?void 0:t.triggerPriceUi,triggerPricePercent:t==null?void 0:t.triggerPricePercent,limitPricePercent:t==null?void 0:t.limitPricePercent}},ge=l.createContext(null),qe=({children:e,initialState:t})=>{const[n]=l.useState(()=>Be(t));return p.jsx(ge.Provider,{value:n,children:e})},U=()=>{const e=l.useContext(ge);if(e===null)throw new Error("useSpotStore must be used within SpotProvider");return e},w=e=>{const t=U();return Se.useStore(t,e)},We={isFetching:!1},Ue=()=>{const{partner:e,chainId:t,hasChainId:n}=M(),r=U(),i=!!(t&&n),o=i?`${e}:${t}`:void 0,s=l.useCallback(()=>t?c.createClient(e,t):Promise.reject(new Error("Spot is unavailable on the connected chain")),[t,e]);l.useEffect(()=>{r.getState().configureClient(o,i?s:void 0)},[i,o,s,r])},z=()=>{const{partner:e,chainId:t,hasChainId:n}=M(),r=U(),i=w(I=>I.client),o=!!(t&&n),s=o?`${e}:${t}`:void 0,a=i.key===s?i:We,d=l.useCallback(()=>{if(!o||!s)return Promise.resolve(void 0);const I=r.getState();return I.client.key!==s?Promise.resolve(void 0):I.refetchClient()},[o,s,r]);return l.useMemo(()=>({data:a.data,error:a.error,isLoading:o&&!a.data&&a.error===void 0,isFetching:a.isFetching,refetch:d}),[a,o,d])},Ve={isFetching:!1},Pe=(e,t,n)=>e&&t?JSON.stringify([e,t.exchangeAddress,t.partner,t.chainId,n]):void 0,He=()=>{const{account:e,supportLegacyOrders:t,callbacks:n}=M(),{data:r}=z(),i=U(),o=Pe(e,r,t),s=!!o,a=l.useCallback(async(d,I,v)=>!e||!r?{orders:[],legacyLoaded:!1}:xe({client:r,account:e,signal:v,supportLegacyOrders:t,previousOrders:d,legacyLoaded:I,callbacks:n}),[e,n,r,t]);l.useEffect(()=>{i.getState().configureOrders(o,s?a:void 0)},[s,o,a,i])},fe=()=>{const{account:e,supportLegacyOrders:t}=M(),{data:n}=z(),r=U(),i=Pe(e,n,t),o=!!i,s=l.useCallback((a=!1)=>!o||!i||r.getState().orders.key!==i?Promise.resolve(void 0):r.getState().refetchOrders(!0,a),[o,i,r]);return{enabled:o,key:i,refetch:s}},Ke=()=>{const e=U();return l.useCallback(t=>e.getState().addOrder(t),[e])},ze=()=>{const e=U();return l.useCallback(()=>e.getState().refetchOrders(),[e])},Je=()=>{const e=w(d=>d.orders),t=w(d=>d.registerOrdersConsumer),{enabled:n,key:r,refetch:i}=fe(),o=e.key===r?e:Ve;l.useEffect(()=>t(),[t]);const s=l.useMemo(()=>o.data===void 0?void 0:ce(o.data),[o.data]),a=l.useCallback(async()=>{const d=await i();return d===void 0?void 0:ce(d)},[i]);return l.useMemo(()=>({data:s,error:o.error,isLoading:n&&s===void 0&&o.error===void 0,isFetching:o.isFetching,isRefetching:o.isFetching&&s!==void 0,refetch:a}),[o,s,n,a])},ke=({children:e})=>(Ue(),He(),e),Qe=({error:e,retry:t,isRetrying:n})=>p.jsxs("div",{className:"spot-client-error-fallback",role:"alert",children:[p.jsx("p",{children:e.message||"Unable to load Spot configuration."}),p.jsx("button",{type:"button",className:"spot-client-error-retry",disabled:n,onClick:t,children:n?"Retrying…":"Retry"})]}),$e=({children:e,fallback:t=Qe})=>{const{hasChainId:n}=M(),{data:r,error:i,isFetching:o,refetch:s}=z(),a=l.useCallback(async()=>{await s()},[s]);return p.jsxs(p.Fragment,{children:[e,!r&&i&&n?p.jsx(t,{error:i,retry:a,isRetrying:o}):null]})},Ye=({resetErrorBoundary:e})=>p.jsxs("div",{className:"twap-error-fallback",role:"alert",children:[p.jsx("p",{children:"Something went wrong"}),p.jsx("button",{type:"button",onClick:e,children:"Retry"})]}),Ze=({children:e,fallback:t=Ye})=>{const n=U(),r=l.useCallback(i=>{var s;(((s=n.getState().client.data)==null?void 0:s.analytics)??c.analytics).onCrash(i)},[n]);return p.jsx(Xe,{fallback:t,reportCrash:r,children:e})};class Xe extends l.Component{constructor(){super(...arguments);oe(this,"state",{});oe(this,"resetErrorBoundary",()=>{this.setState({error:void 0})})}static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n){this.props.reportCrash(n)}render(){const{error:n}=this.state;if(n){const r=this.props.fallback;return p.jsx(r,{error:n,resetErrorBoundary:this.resetErrorBoundary})}return this.props.children}}const et=({children:e,defaults:t,scopeKey:n})=>{const r=U(),i=w(s=>s.state.currentExecution.phase),o=l.useRef(n);return l.useEffect(()=>{o.current===n||k(i)||r.getState().syncFormDefaults(t)&&(o.current=n)},[t,i,n,r]),e},Oe=l.createContext(null),tt=({children:e})=>{const{inputToken:t,outputToken:n,inputAmountUi:r,quotedOutputAmountRaw:i,inputTokenUsdPrice:o,outputTokenUsdPrice:s,minTradeSizeUsd:a,inputBalanceRaw:d,displayFeePercent:I,priceProtectionPercent:v,module:g}=M(),O=w(E=>E.state.tradeCount),A=w(E=>E.state.tradeInterval),f=w(E=>E.state.orderDuration),C=w(E=>E.state.limitPriceUi),L=w(E=>E.state.triggerPriceUi),N=w(E=>E.state.limitPricePercent),D=w(E=>E.state.triggerPricePercent),V=w(E=>E.state.isPriceInverted),_=w(E=>E.state.isMarketOrder),P=w(E=>{const j=E.state.currentExecution;return j.phase!==u.IDLE?j.form:void 0}),h=l.useMemo(()=>({module:g,inputTokenDecimals:(t==null?void 0:t.decimals)??0,outputTokenDecimals:(n==null?void 0:n.decimals)??0,quotedOutputAmountRaw:i,inputTokenUsdPrice:o,outputTokenUsdPrice:s,minTradeSizeUsd:a,priceProtectionPercent:v,displayFeePercent:I,inputBalanceRaw:d,userInput:{inputAmountUi:r,isMarketOrder:!!_,tradeCount:O,tradeInterval:A,orderDuration:f,limitPriceUi:C,limitPricePercent:N,triggerPriceUi:L,triggerPricePercent:D,isPriceInverted:V}}),[n==null?void 0:n.decimals,s,I,i,a,g,v,d,t==null?void 0:t.decimals,o,V,_,N,D,O,f,A,C,r,L]),y=l.useMemo(()=>{if(P)return P;const E=c.calculateOrderForm(h);return t&&n?E:{...E,isReady:!1,canSubmit:!1}},[P,t,n,h]);return p.jsx(Oe.Provider,{value:y,children:e})},q=()=>{const e=l.useContext(Oe);if(!e)throw new Error("useOrderForm must be used within OrderFormProvider");return e},rt=e=>{var v,g,O,A,f,C,L,N,D,V,_,P;const t=Number.isSafeInteger(e.chainId)&&Number(e.chainId)>0,n=(v=e.wrappedNativeToken)==null?void 0:v.address,r=!!(n&&(c.isNativeAddress((g=e.inputToken)==null?void 0:g.address)&&c.eqIgnoreCase(((O=e.outputToken)==null?void 0:O.address)||"",n)||c.eqIgnoreCase(((A=e.inputToken)==null?void 0:A.address)||"",n)&&c.isNativeAddress((f=e.outputToken)==null?void 0:f.address))),i=r?c.toAmountRaw(e.inputAmountUi,(C=e.outputToken)==null?void 0:C.decimals):e.marketQuote.isLoading?void 0:e.marketQuote.quotedOutputAmountRaw,o=r?!1:e.marketQuote.isLoading,s=r?!1:e.marketQuote.noLiquidity,a=l.useMemo(()=>me({module:e.module,overrides:e.overrides}),[e.module,e.overrides]),d=JSON.stringify([e.partner,e.chainId,e.module,(L=e.inputToken)==null?void 0:L.address,(N=e.inputToken)==null?void 0:N.decimals,(D=e.outputToken)==null?void 0:D.address,(V=e.outputToken)==null?void 0:V.decimals,(_=e.wrappedNativeToken)==null?void 0:_.address,(P=e.wrappedNativeToken)==null?void 0:P.decimals,a]),I=l.useMemo(()=>({inputAmountUi:e.inputAmountUi,minTradeSizeUsd:e.minTradeSizeUsd,account:e.account,walletInteractions:e.walletInteractions,quotedOutputAmountRaw:i,marketPriceLoading:o,noLiquidity:s,priceProtectionPercent:e.priceProtectionPercent,chainId:e.chainId,hasChainId:t,partner:e.partner,module:e.module,displayFeePercent:e.displayFeePercent??0,callbacks:e.callbacks,inputTokenUsdPrice:e.inputTokenUsdPrice,outputTokenUsdPrice:e.outputTokenUsdPrice,inputBalanceRaw:e.inputBalanceRaw,inputToken:e.inputToken,outputToken:e.outputToken,wrappedNativeToken:e.wrappedNativeToken,supportLegacyOrders:e.supportLegacyOrders??!1,overrides:e.overrides}),[e.account,e.callbacks,e.chainId,e.displayFeePercent,e.inputBalanceRaw,e.inputToken,e.inputTokenUsdPrice,e.minTradeSizeUsd,e.module,e.outputToken,e.outputTokenUsdPrice,e.wrappedNativeToken,e.overrides,e.partner,e.priceProtectionPercent,e.supportLegacyOrders,e.inputAmountUi,e.walletInteractions,t,o,s,i]);return{initialState:a,formScopeKey:d,trading:I}},nt=e=>{const{initialState:t,formScopeKey:n,trading:r}=rt(e);return p.jsx(Ce,{value:r,children:p.jsx(qe,{initialState:t,children:p.jsx(Ze,{fallback:e.errorFallback,children:p.jsx(ke,{children:p.jsx(et,{defaults:t,scopeKey:n,children:p.jsx($e,{fallback:e.clientErrorFallback,children:p.jsx(tt,{children:e.children})})})})})})})},it=(e,t)=>l.useMemo(()=>c.toAmountUI(t,e),[e,t]),ot=60,st=()=>{const{refetch:e}=fe();return l.useCallback(async(t,n=!1)=>{for(let r=0;r<ot;r++){const i=await e(n);if(!i)throw new Error("orders not found");const o=i.find(s=>s.historyKey===t);if((o==null?void 0:o.status)===c.OrderStatus.Cancelled)return;await new Promise(s=>setTimeout(s,1e3))}throw new Error("Timed out waiting for order cancellation to be confirmed")},[e])},at=e=>({...e,status:c.OrderStatus.Cancelled}),ct=e=>{const{account:t,walletInteractions:n,callbacks:r}=M(),{data:i}=z(),o=st(),s=w(g=>g.state.cancelOrders[(e==null?void 0:e.historyKey)??""]),a=w(g=>g.setCancelOrder),d=w(g=>g.clearCancelOrder),I=l.useCallback(async()=>{const g=e==null?void 0:e.historyKey;try{if(!t)throw new Error("missing account");if(!e)throw new Error("order is required");if(!i)throw new Error("Spot client is unavailable");const O=e.historyKey;a(O,{status:B.LOADING}),S(()=>{var L;return(L=r==null?void 0:r.onCancelOrderRequest)==null?void 0:L.call(r,e)}),S(()=>i.analytics.onCancelOrderRequest([e.version===1?e.id.toString():e.hash],e.version));const A=i.getCancelOrderRequest(e),f=await n.cancelOrder(A);if(!f)throw new Error("failed to cancel order");S(()=>i.analytics.onCancelOrderSuccess(f)),a(O,{status:B.LOADING,txHash:f}),await o(O,e.version===1);const C=at(e);return a(O,{status:B.SUCCESS,txHash:f}),S(()=>{var L;return(L=r==null?void 0:r.onCancelOrderSuccess)==null?void 0:L.call(r,{order:C,txHash:f})}),f}catch(O){c.isTxRejected(O)?g&&d(g):(g&&a(g,{status:B.FAILED,error:ee(O)}),S(()=>i==null?void 0:i.analytics.onCancelOrderError(O))),S(()=>{var A;return(A=r==null?void 0:r.onCancelOrderFailed)==null?void 0:A.call(r,Y(O))})}},[t,r,d,i,e,o,a,n]),v=l.useMemo(()=>{const g=s;return{isLoading:(g==null?void 0:g.status)===B.LOADING,disabled:!!(e&&!i),isSuccess:(g==null?void 0:g.status)===B.SUCCESS,isError:(g==null?void 0:g.status)===B.FAILED,error:g==null?void 0:g.error,txHash:g==null?void 0:g.txHash}},[s,e,i]);return l.useMemo(()=>({cancelOrder:I,...v}),[I,v])},dt=()=>{const{module:e,values:t}=q();if(t.isMarketOrder&&e===c.Module.STOP_LOSS)return Q.TRIGGER_MARKET_PRICE;if(e===c.Module.LIMIT||e===c.Module.TWAP)return t.isMarketOrder?Q.MARKET_PRICE:Q.LIMIT_PRICE},ut=()=>{const{callbacks:e}=M(),t=w(a=>a.updateState),{schedule:n}=q(),{duration:r}=n,i=l.useCallback(a=>{t({orderDuration:a}),S(()=>{var d;return(d=e==null?void 0:e.onOrderDurationChange)==null?void 0:d.call(e,a)})},[e,t]),o=l.useCallback(a=>{const d=Number(a);Number.isFinite(d)&&i({unit:r.unit,value:d})},[r.unit,i]),s=l.useCallback(a=>{i({unit:a,value:r.value})},[r.value,i]);return l.useMemo(()=>({duration:r,onChange:i,milliseconds:n.durationMillis,onInputChange:o,onUnitSelect:s,error:n.durationError}),[r,i,o,s,n])},lt=()=>{const{callbacks:e}=M(),t=w(a=>a.updateState),{schedule:n}=q(),{fillDelay:r}=n,i=l.useCallback(a=>{t({tradeInterval:a}),S(()=>{var d;return(d=e==null?void 0:e.onTradeIntervalChange)==null?void 0:d.call(e,a)})},[e,t]),o=l.useCallback(a=>{const d=Number(a);Number.isFinite(d)&&i({unit:r.unit,value:d})},[r.unit,i]),s=l.useCallback(a=>i({unit:a,value:r.value}),[r.value,i]);return l.useMemo(()=>({onInputChange:o,onUnitSelect:s,onChange:i,milliseconds:n.fillDelayMillis,fillDelay:r,error:n.fillDelayError}),[r,i,o,s,n])},W=(e,t)=>({raw:e||"",ui:c.toAmountUI(e,t)}),mt=(e,t,n)=>l.useMemo(()=>!e||!t||!n?[]:e.map(r=>({rawFill:r,inputToken:t,outputToken:n,inputAmount:W(r.inAmount,t.decimals),outputAmount:W(r.outAmount,n.decimals),timestamp:r.timestamp,txHash:r.txHash,executionRate:c.getOrderExecutionRate(r.inAmount,r.outAmount,t.decimals,n.decimals)})),[e,t,n]),gt=(e,t,n)=>{const{chainId:r,partner:i}=M(),o=l.useMemo(()=>{if(!(!t||!n||!e||e.isMarketPrice))return c.getOrderLimitPriceRate(e,t.decimals,n.decimals)},[t,e,n]),s=l.useMemo(()=>{if(!(!t||!n||!e))return c.getTriggerPriceRate(e,t.decimals,n.decimals)},[t,e,n]),a=l.useMemo(()=>{if(!(!t||!n||!e))return c.getOrderExecutionRate(e.srcAmountFilled,e.dstAmountFilled,t.decimals,n.decimals)},[t,e,n]),d=l.useMemo(()=>e?c.getOrderFillDelayMillis(e,r?c.getTwapConfig(i,r):void 0):0,[e,i,r]),I=mt(e==null?void 0:e.fills,t,n);return l.useMemo(()=>{if(e!=null&&e.id)return{original:e,fills:I,inputToken:t,outputToken:n,orderType:e.type,createdAt:e.createdAt,deadline:e.deadline||0,totalTrades:e.totalTradesAmount||0,tradeInterval:d,recipient:e.maker||"",inputAmount:W(e.srcAmount,t==null?void 0:t.decimals),limitPrice:W(c.toAmountRaw(o,n==null?void 0:n.decimals),n==null?void 0:n.decimals),inputAmountPerTrade:W(e.srcAmountPerTrade,t==null?void 0:t.decimals),minOutputAmountPerTrade:W(e.dstMinAmountPerTrade,n==null?void 0:n.decimals),minOutputAmount:W(e.dstMinAmountTotal,n==null?void 0:n.decimals),triggerPrice:W(c.toAmountRaw(s,n==null?void 0:n.decimals),n==null?void 0:n.decimals),id:e.id,inputAmountFilled:W(e.srcAmountFilled,t==null?void 0:t.decimals),outputAmountFilled:W(e.dstAmountFilled,n==null?void 0:n.decimals),progress:e.progress,executionPrice:W(c.toAmountRaw(a,n==null?void 0:n.decimals),n==null?void 0:n.decimals),version:e.version}},[e,I,t,n,d,o,s,a])},Pt=()=>{const{marketPriceLoading:e}=M(),t=q().errors.primary;return e?void 0:t},ft=()=>{const{marketPriceLoading:e,inputToken:t,outputToken:n,callbacks:r}=M(),{limitPrice:i,values:o,module:s,isInverted:a}=q(),d=w(f=>f.updateState),I=l.useCallback(f=>{d({limitPriceUi:f,limitPricePercent:null}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPriceChange)==null?void 0:C.call(r,f||"")}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPricePercentChange)==null?void 0:C.call(r,"")})},[r,d]),v=l.useCallback(f=>{d({limitPriceUi:void 0,limitPricePercent:f}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPriceChange)==null?void 0:C.call(r,"")}),S(()=>{var C;return(C=r==null?void 0:r.onLimitPricePercentChange)==null?void 0:C.call(r,f||"")})},[r,d]),g=l.useCallback(()=>{d({limitPriceUi:void 0,limitPricePercent:void 0})},[d]),O=!o.isMarketOrder,A=l.useCallback(()=>{d({isMarketOrder:!o.isMarketOrder,...o.isMarketOrder?{}:{isPriceInverted:!1},...!o.isMarketOrder&&s===c.Module.STOP_LOSS?{limitPricePercent:void 0}:{}})},[s,d,o.isMarketOrder]);return l.useMemo(()=>({price:i.display,canonicalPriceRaw:i.raw,error:i.error,onInputChange:I,onPercentageChange:v,onReset:g,inputToken:t,outputToken:n,displayInputToken:a?n:t,displayOutputToken:a?t:n,percentage:i.percentage,isLoading:!!e,isEnabled:O,toggle:A,isTypedValue:i.isTypedValue}),[t,a,O,i,e,I,v,g,n,A])},Ot=()=>{const{marketPriceLoading:e}=M(),{outputAmount:t}=q();return l.useMemo(()=>({amount:t,isLoading:!!e}),[e,t])},ht=()=>{const{inputToken:e,outputToken:t}=M(),n=w(d=>d.updateState),{isInverted:r,values:i}=q(),o=w(d=>d.state.triggerPriceUi),s=w(d=>d.state.limitPriceUi),a=l.useCallback(()=>{n({isPriceInverted:!r,...o!==void 0?{triggerPriceUi:c.invertPriceInput(o)}:{},...s!==void 0?{limitPriceUi:c.invertPriceInput(s)}:{}})},[n,r,o,s]);return l.useMemo(()=>({onInvert:a,isInverted:r,inputToken:e,outputToken:t,displayInputToken:r?t:e,displayOutputToken:r?e:t,isMarketOrder:i.isMarketOrder}),[e,r,a,t,i.isMarketOrder])},he=3,Et=3e3,St=e=>new Promise(t=>setTimeout(t,e)),ie=(e,t)=>{if(!/^\d+$/.test(e))throw new Error(`${t} must be a non-negative integer base-unit amount`);return BigInt(e)},Ee=async({client:e,walletInteractions:t,tokenAddress:n,inputAmountRaw:r})=>{const i=await t.getAllowance({tokenAddress:n,spenderAddress:e.spenderAddress});return ie(i||"0","Allowance")>=ie(r,"Input amount")},It=e=>{if(!e.client)throw new Error("Spot client is unavailable");if(!e.hasChainId||!e.chainId)throw new Error("Spot is unavailable on the connected chain");if(!e.account)throw new Error("missing account");if(!e.inputToken)throw new Error("missing inputToken");if(!e.outputToken)throw new Error("missing outputToken");const t=c.isNativeAddress(e.inputToken.address)?e.wrappedNativeToken:e.inputToken;if(!t||c.isNativeAddress(t.address))throw new Error("missing wrappedNativeToken for native input");if(!e.form.canSubmit)throw new Error("Order form is not submittable");const n=e.form.inputAmount.raw;return ie(n,"Input amount"),{account:e.account,chainId:e.chainId,inputToken:e.inputToken,orderInputToken:t,outputToken:e.outputToken,client:e.client,inputAmountRaw:n}},At=({analytics:e,account:t,chainId:n,inputToken:r,outputToken:i,preparedOrder:o})=>{const{form:s,values:a}=o;S(()=>e.onRequestOrder({account:t,chainId:n,module:s.module,srcToken:r,dstToken:i,fromTokenAmount:a.inputAmount,srcChunkAmount:a.inputAmountPerTrade,triggerPricePerTrade:a.triggerOutputAmountPerTrade,deadline:a.deadlineMillis,fillDelay:a.fillDelayMillis,minDstAmountOutPerTrade:a.minOutputAmountPerTrade,slippage:s.values.slippageBps/100,isMarketOrder:a.isMarketOrder,chunksAmount:a.totalTrades}))},Ct=async e=>{const{form:t,walletInteractions:n,callbacks:r,addNewOrder:i,refetchActiveOrders:o,getCurrentExecution:s,beginExecution:a,replaceExecution:d,wait:I=St}=e;let v;try{v=It(e)}catch(R){const b=Y(R),T=te(R),G=a({form:t,inputToken:e.inputToken,outputToken:e.outputToken,chainId:e.chainId});throw G&&d(G.executionId,{...G,phase:u.FAILED,error:b,parsedError:T}),S(()=>{var x;return(x=r==null?void 0:r.onSubmitOrderFailed)==null?void 0:x.call(r,T)}),b}const{account:g,chainId:O,inputToken:A,orderInputToken:f,outputToken:C,client:L,inputAmountRaw:N}=v,{analytics:D}=L,V=s(),_=Ne({execution:V,account:g,chainId:O,inputTokenAddress:A.address,inputAmountRaw:N}),P=a({form:t,inputToken:A,outputToken:C,chainId:O,completedWrap:_,wrapTxHash:_==null?void 0:_.txHash});if(!P)return;const h=P.executionId;let y=P;const E=(R,b={})=>{const T={...y,...b,executionId:h,phase:R};if(!d(h,T))throw new Error("Execution is no longer current");y=T},j=(R,b={})=>{const T={...y,...b,executionId:h,phase:R};return d(h,T)?(y=T,!0):!1};try{const R=c.isNativeAddress(A.address)&&!_,b=!await Ee({client:L,walletInteractions:n,tokenAddress:f.address,inputAmountRaw:N}),T=[];R&&T.push(K.WRAP),b&&T.push(K.APPROVE),T.push(K.CREATE);let G=0;if(E(u.PREPARING,{pendingSteps:T,totalSteps:T.length,stepIndex:G,hasApproval:!b}),R){E(u.WRAPPING),S(()=>D.onWrapRequest()),S(r==null?void 0:r.onWrapRequest);const F=await n.wrapNativeToken(N);if(!F)throw new Error("failed to wrap input token");const J={account:g,chainId:O,inputTokenAddress:A.address,inputAmountRaw:N,txHash:F};G++,E(u.WRAPPING,{wrapTxHash:F,completedWrap:J,stepIndex:G}),S(()=>D.onWrapSuccess(F)),S(()=>{var H;return(H=r==null?void 0:r.onWrapSuccess)==null?void 0:H.call(r,{txHash:F,amount:c.toAmountUI(N,f.decimals)})})}if(b){E(u.APPROVING),S(()=>D.onApproveRequest()),S(r==null?void 0:r.onApproveRequest);const F=await n.approveToken({tokenAddress:f.address,amount:N,spenderAddress:L.spenderAddress});if(!F)throw new Error("failed to approve token");E(u.APPROVING,{approveTxHash:F});let J=!1;for(let H=0;H<he&&(J=await Ee({client:L,walletInteractions:n,tokenAddress:f.address,inputAmountRaw:N}),!J);H++)H<he-1&&await I(Et);if(!J)throw new Error(`Insufficient ${f.symbol} allowance to perform the swap. Please approve the token first.`);G++,E(u.APPROVING,{hasApproval:!0,stepIndex:G}),S(()=>D.onApproveSuccess(F)),S(()=>{var H;return(H=r==null?void 0:r.onApproveSuccess)==null?void 0:H.call(r,{txHash:F,token:f,amount:c.toAmountUI(N,f.decimals)})})}E(u.SIGNING);const x=L.prepareOrder({form:t,inputTokenAddress:f.address,outputTokenAddress:C.address,swapperAddress:g});E(u.SIGNING,{preparedOrder:x}),At({analytics:D,account:g,chainId:O,inputToken:A,outputToken:C,preparedOrder:x}),S(()=>D.onSignOrderRequest(x.order)),S(r==null?void 0:r.onSignOrderRequest);let Z;try{Z=await n.signOrder(x.signingRequest),S(()=>D.onSignOrderSuccess(Z)),S(()=>{var F;return(F=r==null?void 0:r.onSignOrderSuccess)==null?void 0:F.call(r,Z)})}catch(F){throw S(()=>D.onSignOrderError(F)),S(()=>{var J;return(J=r==null?void 0:r.onSignOrderError)==null?void 0:J.call(r,Y(F))}),F}E(u.SUBMITTING);const X=await L.submitOrder(x.order,Z);return E(u.SUCCESS,{orderId:X.id.toString()}),S(()=>i(X)),S(()=>o()),S(()=>{var F;return(F=r==null?void 0:r.onOrderCreated)==null?void 0:F.call(r,X)}),X}catch(R){const b=y.phase,T=Y(R),G=c.isTxRejected(R);throw j(G?u.REJECTED:u.FAILED,{error:T,parsedError:te(R)}),b===u.WRAPPING?S(()=>D.onWrapError(R)):b===u.APPROVING&&S(()=>D.onApproveError(R)),S(G?r==null?void 0:r.onSubmitOrderRejected:()=>{var x;return(x=r==null?void 0:r.onSubmitOrderFailed)==null?void 0:x.call(r,te(R))}),T}},yt=()=>{const{data:e}=z(),{inputToken:t,outputToken:n,wrappedNativeToken:r,chainId:i,hasChainId:o,callbacks:s,account:a,walletInteractions:d}=M(),I=Ke(),v=ze(),g=q(),O=U();return l.useCallback(()=>{Ct({account:a,chainId:i,hasChainId:o,inputToken:t,outputToken:n,wrappedNativeToken:r,form:g,client:e,walletInteractions:d,callbacks:s,addNewOrder:I,refetchActiveOrders:v,getCurrentExecution:()=>O.getState().state.currentExecution,beginExecution:O.getState().beginExecution,replaceExecution:O.getState().replaceExecution}).catch(()=>{})},[a,I,s,i,e,g,t,o,n,r,v,O,d])},vt=()=>{const e=w(n=>n.state.currentExecution),t=w(n=>n.returnToOrderForm);return l.useMemo(()=>({...e,returnToOrderForm:t}),[e,t])},wt=()=>{const e=vt(),{inputToken:t,outputToken:n,chainId:r,hasChainId:i,module:o,overrides:s}=M(),{data:a,isLoading:d}=z(),I=yt(),v=w(L=>L.startNewOrder),g=l.useCallback(()=>I(),[I]),O=l.useCallback(()=>v(me({module:o,overrides:s})),[o,s,v]),A=Te(e.phase),f=pe(e.phase),C=k(e.phase);return l.useMemo(()=>({phase:e.phase,status:A,error:e.parsedError,currentStep:f,currentStepIndex:e.stepIndex,approvalTxHash:e.approveTxHash,wrapTxHash:e.wrapTxHash,totalSteps:e.totalSteps,executionSteps:e.pendingSteps,inputToken:e.inputToken??t,outputToken:e.outputToken??n,chainId:e.chainId??r,submitOrder:g,startNewOrder:O,returnToOrderForm:e.returnToOrderForm,isExecuting:C,isSuccess:e.phase===u.SUCCESS,isFailed:e.phase===u.FAILED,isRejected:e.phase===u.REJECTED,isPreparingOrder:e.phase===u.PREPARING||i&&d&&!a,canDismiss:!C}),[a,f,t,n,r,d,C,i,O,g,A,e])},Rt=()=>{const{inputToken:e,outputToken:t,wrappedNativeToken:n,inputBalanceRaw:r,noLiquidity:i,inputAmountUi:o,marketPriceLoading:s,hasChainId:a}=M(),d=q(),{data:I,isLoading:v}=z(),g=w(N=>N.state.currentExecution.phase),O=k(g),A=!!(e&&c.isNativeAddress(e.address)&&(!n||c.isNativeAddress(n.address))),f=s||!d.isReady||r===void 0,C=O||a&&v&&!I||!!(e&&t&&o&&f),L=!!(!d.canSubmit||O||!a||!I||i||C||!e||!t||A);return l.useMemo(()=>({disabled:L,loading:C}),[L,C])},Tt=()=>{const{inputToken:e,outputToken:t,callbacks:n}=M(),r=w(s=>s.updateState),{trades:i}=q(),o=l.useCallback(s=>{r({tradeCount:s}),S(()=>{var a;return(a=n==null?void 0:n.onTradeCountChange)==null?void 0:a.call(n,s)})},[n,r]);return l.useMemo(()=>({totalTrades:i.totalTrades,maxTrades:i.maxTrades,inputAmountPerTrade:i.inputAmountPerTrade,minOutputAmountPerTrade:i.minOutputAmountPerTrade,triggerOutputAmountPerTrade:i.triggerOutputAmountPerTrade,onChange:o,error:i.error,inputToken:e,outputToken:t}),[e,o,t,i])},pt=()=>{const{marketPriceLoading:e,inputToken:t,outputToken:n,callbacks:r}=M(),{marketPrice:i,trades:o,triggerPrice:s,isInverted:a}=q(),d=w(O=>O.updateState),I=l.useCallback(O=>{d({triggerPriceUi:O,triggerPricePercent:null}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPriceChange)==null?void 0:A.call(r,O||"")}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPricePercentChange)==null?void 0:A.call(r,"")})},[r,d]),v=l.useCallback(O=>{d({triggerPriceUi:void 0,triggerPricePercent:O}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPriceChange)==null?void 0:A.call(r,"")}),S(()=>{var A;return(A=r==null?void 0:r.onTriggerPricePercentChange)==null?void 0:A.call(r,O||"")})},[r,d]),g=l.useCallback(()=>{d({triggerPricePercent:void 0,triggerPriceUi:void 0})},[d]);return l.useMemo(()=>({price:s.display,canonicalPriceRaw:s.raw,outputAmountPerTrade:o.triggerOutputAmountPerTrade,error:s.error,onInputChange:I,onPercentageChange:v,percentage:s.percentage,onReset:g,inputToken:t,outputToken:n,displayInputToken:a?n:t,displayOutputToken:a?t:n,isLoading:!!(e||!i.raw),isTypedValue:s.isTypedValue}),[t,a,i.raw,e,I,v,g,n,o.triggerOutputAmountPerTrade,s])};c.setUIVersion(Ae.version),Object.defineProperty(m,"DISCLAIMER_URL",{enumerable:!0,get:()=>c.DISCLAIMER_URL}),Object.defineProperty(m,"InputErrors",{enumerable:!0,get:()=>c.InputErrors}),Object.defineProperty(m,"Module",{enumerable:!0,get:()=>c.Module}),Object.defineProperty(m,"ORBS_LOGO",{enumerable:!0,get:()=>c.ORBS_LOGO}),Object.defineProperty(m,"ORBS_SLTP_FAQ_URL",{enumerable:!0,get:()=>c.ORBS_SLTP_FAQ_URL}),Object.defineProperty(m,"ORBS_TWAP_FAQ_URL",{enumerable:!0,get:()=>c.ORBS_TWAP_FAQ_URL}),Object.defineProperty(m,"ORBS_WEBSITE_URL",{enumerable:!0,get:()=>c.ORBS_WEBSITE_URL}),Object.defineProperty(m,"OrderFilter",{enumerable:!0,get:()=>c.OrderFilter}),Object.defineProperty(m,"OrderStatus",{enumerable:!0,get:()=>c.OrderStatus}),Object.defineProperty(m,"OrderType",{enumerable:!0,get:()=>c.OrderType}),Object.defineProperty(m,"Partners",{enumerable:!0,get:()=>c.Partners}),Object.defineProperty(m,"TimeUnit",{enumerable:!0,get:()=>c.TimeUnit}),Object.defineProperty(m,"calculateOrderForm",{enumerable:!0,get:()=>c.calculateOrderForm}),Object.defineProperty(m,"createClient",{enumerable:!0,get:()=>c.createClient}),Object.defineProperty(m,"eqIgnoreCase",{enumerable:!0,get:()=>c.eqIgnoreCase}),Object.defineProperty(m,"getOrderExecutionRate",{enumerable:!0,get:()=>c.getOrderExecutionRate}),Object.defineProperty(m,"getOrderFillDelayMillis",{enumerable:!0,get:()=>c.getOrderFillDelayMillis}),Object.defineProperty(m,"getOrderLimitPriceRate",{enumerable:!0,get:()=>c.getOrderLimitPriceRate}),Object.defineProperty(m,"getTriggerPriceRate",{enumerable:!0,get:()=>c.getTriggerPriceRate}),Object.defineProperty(m,"getTwapConfig",{enumerable:!0,get:()=>c.getTwapConfig}),Object.defineProperty(m,"invertPriceInput",{enumerable:!0,get:()=>c.invertPriceInput}),Object.defineProperty(m,"isNativeAddress",{enumerable:!0,get:()=>c.isNativeAddress}),Object.defineProperty(m,"isTxRejected",{enumerable:!0,get:()=>c.isTxRejected}),Object.defineProperty(m,"toAmountRaw",{enumerable:!0,get:()=>c.toAmountRaw}),Object.defineProperty(m,"toAmountUI",{enumerable:!0,get:()=>c.toAmountUI}),m.Disclaimer=Q,m.ExecutionPhase=u,m.ExecutionStatus=B,m.SpotProvider=nt,m.Steps=K,m.useAmountUi=it,m.useCancelOrder=ct,m.useClient=z,m.useDisclaimer=dt,m.useDuration=ut,m.useExecution=wt,m.useFillDelay=lt,m.useHistoryOrder=gt,m.useInputErrors=Pt,m.useLimitPrice=ft,m.useOrderForm=q,m.useOrders=Je,m.useOutputAmount=Ot,m.usePriceDisplay=ht,m.useSubmitButton=Rt,m.useTrades=Tt,m.useTriggerPrice=pt,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orbs-network/spot-react",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.17",
|
|
4
4
|
"description": "Spot React Components - React components for Spot SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/spot-react.umd.cjs",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"zustand": "^5.0.9",
|
|
32
|
-
"@orbs-network/spot-ui": "2.1.
|
|
32
|
+
"@orbs-network/spot-ui": "2.1.20"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/react": "^19.0.2",
|