@gala-chain/gswap-sdk 1.2.0-rc.4 → 1.2.0-rc.6
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.
- package/dist/browser/index.js +4 -4
- package/dist/browser/index.js.map +1 -1
- package/dist/index.cjs +791 -53
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +485 -18
- package/dist/index.d.ts +485 -18
- package/dist/index.mjs +778 -54
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/browser/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import e from"bignumber.js";import{Decimal as t}from"decimal.js";import n from"debug";import{secp256k1 as r}from"@noble/curves/secp256k1";import{keccak_256 as i}from"@noble/hashes/sha3";import{bytesToHex as a}from"@noble/hashes/utils";function o(e,t,n){let r=Math.max(0,e?.timeoutMs??6e4),i=Math.max(500,e?.pollIntervalMs??2e3),a=Math.max(0,e?.initialDelayMs??t),o=e?.signal,u=Date.now()+r,d=!0,f=0;return{async waitForRead(e){if(s(o,n),d){d=!1;let e=Math.max(0,u-Date.now());return await c(Math.min(a,e),o,n),!0}let t=Math.min(8e3,i*2**Math.min(f,5));f+=1;let r=e===void 0?l(t):Math.max(0,e);return Date.now()+r>u?!1:(await c(r,o,n),!0)}}}function s(e,t){if(e?.aborted===!0)throw t(e.reason)}function c(e,t,n){return t?.aborted===!0?Promise.reject(n(t.reason)):new Promise((r,i)=>{let a=()=>{clearTimeout(o),i(n(t?.reason))},o=setTimeout(()=>{t?.removeEventListener(`abort`,a),r()},e);t?.addEventListener(`abort`,a,{once:!0})})}function l(e){return Math.max(0,Math.round(e*(.9+Math.random()*.2)))}function u(e,t){if(typeof e!=`object`||!e)return;let n=e[t];return typeof n==`string`&&n!==``?n:void 0}function d(e){let t=typeof e==`object`&&e?e.error:void 0;return u(e,`message`)??u(e,`Message`)??u(t,`message`)??u(t,`Message`)??``}function f(e){let t=e.params.serverMessage;if(typeof t==`string`&&t!==``)return t;let n=d(e.body);return n===``?void 0:n}const p=[`wrong_length`,`bad_encoding`,`not_on_curve`,`no_key_provided`],m=[`timeout`,`transport`],h=`0,500,3000,10000`,g={HTTP_ERROR:{template:`Unexpected HTTP error {status} from {url}.`,params:{status:`number`,url:`string`,serverMessage:`string`},unrendered:[`serverMessage`]},REQUEST_TIMEOUT:{template:`Request to {url} timed out after {timeoutMs} ms.`,params:{url:`string`,timeoutMs:`number`}},TRANSPORT_ERROR:{template:`The request to {url} failed before the server answered.`,params:{url:`string`}},REQUEST_FAILED:{template:`The {operation} request failed.`,params:{operation:`string`}},INVALID_TIMEOUT:{template:`{field} must be a positive number of milliseconds, or Infinity for no timeout (got {value}).`,params:{field:`string`,value:`number`}},METHOD_NOT_SUPPORTED:{template:`The method {method} is not supported; swaps are queued through RequestTrade.`,params:{method:`string`}},SUBMISSION_OUTCOME_UNKNOWN:{template:`The submission outcome is unknown ({reason}): the request may have reached the gateway. Confirm before retrying.`,params:{reason:m}},GATEWAY_REPORTED_ERROR:{template:`The gateway reported an error for this write: {serverMessage}`,params:{serverMessage:`string`}},GATEWAY_DATA_MISSING:{template:`The gateway response is missing its data object.`,params:{}},GATEWAY_MODE_INVALID:{template:`Gateway response must contain data.mode="sync" with data.result, or data.mode="queued".`,params:{}},GATEWAY_SYNC_REQUEST_TRADE:{template:`The gateway executed RequestTrade synchronously, which this SDK refuses; RequestTrade must be queued.`,params:{}},MISSING_UNIQUE_KEY:{template:`The gateway acknowledged RequestTrade without echoing its uniqueKey, so it cannot be tied to the signed request.`,params:{}},UNIQUE_KEY_MISMATCH:{template:`Gateway response data.uniqueKey must match the signed RequestTrade uniqueKey.`,params:{}},SHADOW_NOT_QUEUED:{template:`The swap backend did not queue the shadow request.`,params:{}},SHADOW_SUBMIT_NEEDS_WALLET_ADDRESS:{template:`A shadow submission needs a walletAddress (the X-Wallet-Address header): pass one to the GSwap constructor or to this call.`,params:{}},METHOD_NOT_ALLOWED:{template:`The gateway does not expose this contract method: {serverMessage}`,params:{serverMessage:`string`}},SIGNATURE_INVALID:{template:`The gateway could not verify the signature: {serverMessage}`,params:{serverMessage:`string`}},SIGNER_MISMATCH:{template:`The recovered signer does not match an actor named by the operation: {serverMessage}`,params:{serverMessage:`string`}},DTO_INVALID:{template:`The gateway rejected the DTO shape: {serverMessage}`,params:{serverMessage:`string`}},BOUNDS_VIOLATION:{template:`The gateway rejected a numeric, tick, symbol or range bound: {serverMessage}`,params:{serverMessage:`string`}},SYMBOL_CONFLICT:{template:`The CreatePool symbol is already owned by another class: {serverMessage}`,params:{serverMessage:`string`}},RATE_LIMITED:{template:`The gateway rate-limited this signer: {serverMessage}`,params:{serverMessage:`string`}},CHAIN_DISPATCH_FAILED:{template:`The chain dispatch failed (chain error key "{errorKey}"): {serverMessage}`,params:{errorKey:`string`,serverMessage:`string`}},GATEWAY_REJECTED:{template:`Gateway rejected {gatewayCode}: {serverMessage}`,params:{gatewayCode:`string`,serverMessage:`string`}},CHAIN_REJECTED:{template:`GalaChain error {errorKey}: {serverMessage}`,params:{errorKey:`string`,serverMessage:`string`}},INVALID_CHAIN_RESPONSE:{template:`Backend returned an invalid {resource}.`,params:{resource:`string`}},INVALID_POSITION_RESPONSE:{template:`Backend returned an invalid position ({reason}).`,params:{reason:`string`}},CONFIRMATION_TIMEOUT:{template:`Transaction confirmation timed out; the trade may still apply. Confirm the same uniqueKey again later instead of resubmitting.`,params:{}},CONFIRMATION_ABORTED:{template:`Transaction confirmation was aborted.`,params:{}},CONFIRMATION_FAILED:{template:`Transaction confirmation failed with HTTP {status}.`,params:{status:`number`,serverMessage:`string`},unrendered:[`serverMessage`]},CONFIRMATION_MALFORMED:{template:`Transaction confirmation returned a malformed body.`,params:{}},CONFIRMATION_KEY_MISMATCH:{template:`Apply result key did not match the requested key.`,params:{}},NO_SIGNER:{template:`This method requires a signer. Please provide a signer to the GSwap constructor.`,params:{}},NO_WALLET_ADDRESS:{template:`Cannot confirm this write: no walletAddress was provided to the GSwap constructor, so the resulting position cannot be looked up to confirm it landed on chain.`,params:{}},NO_POOL_AVAILABLE:{template:`No pool is available for {tokenIn}/{tokenOut} (fee tier {fee}).`,params:{tokenIn:`string`,tokenOut:`string`,fee:`string`}},INSUFFICIENT_LIQUIDITY:{template:`The selected pool has insufficient liquidity for {tokenIn}/{tokenOut} (fee tier {fee}).`,params:{tokenIn:`string`,tokenOut:`string`,fee:`string`}},UNKNOWN_TOKEN:{template:`Token {token} is not registered on the DEX contract: it has no trading symbol.`,params:{token:`string`}},SYMBOL_NOT_FOUND:{template:`Token {token} could not be resolved to a trading symbol.`,params:{token:`string`}},STREAM_API_KEY_UNUSABLE:{template:`GdexStreamConfig.apiKey needs a non-empty key and an explicit webSocketImpl that accepts upgrade headers as its third argument (the "ws" package, or React Native). A browser WebSocket cannot send x-api-key, so the key would be silently dropped.`,params:{}},STREAM_WEBSOCKET_UNAVAILABLE:{template:`GdexStreamService requires a standards-compatible WebSocket constructor. Node.js versions before 22 must provide one with config.webSocketImpl (for example, from the "ws" package).`,params:{}},STREAM_NOT_CONNECTED:{template:`GDEX stream is not connected. Call connect() first.`,params:{}},STREAM_DISCONNECTED:{template:`GDEX stream disconnected.`,params:{}},STREAM_REQUEST_TIMEOUT:{template:`GDEX request "{method}" timed out after {timeoutMs} ms.`,params:{method:`string`,timeoutMs:`number`}},STREAM_CONNECT_FAILED:{template:`Failed to connect to GDEX stream at {url}.`,params:{url:`string`}},STREAM_CLOSED_BEFORE_CONNECT:{template:`GDEX stream closed before connecting (code {closeCode}).`,params:{closeCode:`number`}},STREAM_CONNECTION_CLOSED:{template:`GDEX stream connection closed (code {closeCode}).`,params:{closeCode:`number`}},GALA_WALLET_NOT_AVAILABLE:{template:`Gala wallet is not available. Please ensure the Gala wallet is connected.`,params:{}},WALLET_UNAVAILABLE:{template:`No wallet is connected.`,params:{}},MALFORMED_WALLET_REQUEST:{template:`Wallet {method} request is malformed.`,params:{method:`string`}},UNSUPPORTED_WALLET_METHOD:{template:`Unsupported wallet method {method}.`,params:{method:`string`}},INVALID_SIGNATURE:{template:`Wallet returned an invalid {scheme} signature.`,params:{scheme:`string`}},INVALID_CHAIN_ID:{template:`Wallet returned an invalid chain id ({chainId}).`,params:{chainId:`string`}},SIGNER_ADDRESS_MISMATCH:{template:`The signing key does not belong to the expected account.`,params:{}},INVALID_PRIVATE_KEY:{template:`Invalid private key: {reason}.`,params:{reason:p}},INVALID_SIGNING_HASH_LENGTH:{template:`secp256k1 can only sign a 32-byte hash (got {length}).`,params:{length:`number`}},MISSING_WALLET_ADDRESS:{template:`Invalid wallet address: No wallet address provided. Either provide a wallet address to the function you are calling, or set one when instantiating GSwapSDK.`,params:{}},INVALID_WALLET_ADDRESS:{template:`Invalid {field}: "{value}" is not an accepted wallet address form.`,params:{field:`string`,value:`string`}},INVALID_DECIMAL:{template:`Invalid decimal quantity: {value}`,params:{value:`string`}},PERSONAL_SIGN_NOT_JSON:{template:`Personal-sign DTO is not valid JSON`,params:{}},PERSONAL_SIGN_NOT_OBJECT:{template:`Personal-sign DTO must be a JSON object`,params:{}},PERSONAL_SIGN_BAD_PREFIX:{template:`Personal-sign DTO prefix is not an EIP-191 "Ethereum Signed Message" header`,params:{}},PERSONAL_SIGN_ENVELOPE_FIELDS:{template:`Personal-sign DTO carries signing-envelope field(s): {fields}`,params:{fields:`string`}},PERSONAL_SIGN_NOT_CANONICAL:{template:`Personal-sign DTO is not in canonical serialized form`,params:{}},EIP712_NAME_COLLISION:{template:`Name collisions are not supported when deriving EIP-712 types ({name}).`,params:{name:`string`}},EIP712_UNSUPPORTED_VALUE:{template:`Unsupported EIP-712 value of type {valueType}.`,params:{valueType:`string`}},TYPED_DATA_NOT_STRING:{template:`Invalid typed data: {what} must be a string`,params:{what:`string`}},TYPED_DATA_UNPAIRED_SURROGATE:{template:`Invalid typed data: {what} has an unpaired surrogate`,params:{what:`string`}},TYPED_DATA_NOT_HEX_BYTES:{template:`Invalid typed data: {what} must be an even-length 0x hex string`,params:{what:`string`}},TYPED_DATA_NOT_SAFE_INTEGER:{template:`Invalid typed data: {what} must be a safe integer`,params:{what:`string`}},TYPED_DATA_NOT_INTEGER:{template:`Invalid typed data: {what} must be an integer`,params:{what:`string`}},TYPED_DATA_NOT_BOOLEAN:{template:`Invalid typed data: bool must be a boolean`,params:{}},TYPED_DATA_BAD_ADDRESS:{template:`Invalid typed data: address must be 0x followed by 40 hex digits`,params:{}},TYPED_DATA_BAD_CHECKSUM:{template:`Invalid typed data: address has a bad checksum`,params:{}},TYPED_DATA_BYTES_LENGTH:{template:`Invalid typed data: {type} must be exactly {width} bytes`,params:{type:`string`,width:`number`}},TYPED_DATA_OUT_OF_BOUNDS:{template:`Invalid typed data: value out of bounds for {type}`,params:{type:`string`}},TYPED_DATA_UNSUPPORTED_TYPE:{template:`Invalid typed data: unsupported type "{type}"`,params:{type:`string`}},TYPED_DATA_FIELDS_NOT_LIST:{template:`Invalid typed data: type {typeName} must be a list of fields`,params:{typeName:`string`}},TYPED_DATA_FIELD_MALFORMED:{template:`Invalid typed data: type {typeName} has a field without a string name and type`,params:{typeName:`string`}},TYPED_DATA_INVALID_FIELD_NAME:{template:`Invalid typed data: invalid field name "{name}"`,params:{name:`string`}},TYPED_DATA_DUPLICATE_FIELD:{template:`Invalid typed data: duplicate field "{name}" in {typeName}`,params:{name:`string`,typeName:`string`}},TYPED_DATA_INVALID_TYPE_NAME:{template:`Invalid typed data: invalid type name "{name}"`,params:{name:`string`}},TYPED_DATA_CIRCULAR_TYPE:{template:`Invalid typed data: circular type reference in {typeName}`,params:{typeName:`string`}},TYPED_DATA_UNKNOWN_FIELD_TYPE:{template:`Invalid typed data: unknown type "{type}" in {typeName}`,params:{type:`string`,typeName:`string`}},TYPED_DATA_NO_PRIMARY_TYPE:{template:`Invalid typed data: missing primary type`,params:{}},TYPED_DATA_AMBIGUOUS_PRIMARY_TYPE:{template:`Invalid typed data: ambiguous primary types or unused types ({roots})`,params:{roots:`string`}},TYPED_DATA_ARRAY_EXPECTED:{template:`Invalid typed data: {type} array value must be an array`,params:{type:`string`}},TYPED_DATA_ARRAY_LENGTH_MISMATCH:{template:`Invalid typed data: array length mismatch`,params:{}},TYPED_DATA_STRUCT_NOT_OBJECT:{template:`Invalid typed data: {typeName} value must be an object`,params:{typeName:`string`}},TYPED_DATA_MISSING_FIELD:{template:`Invalid typed data: {typeName} value is missing field "{field}"`,params:{typeName:`string`,field:`string`}},TYPED_DATA_DOMAIN_NOT_OBJECT:{template:`Invalid typed data: domain must be an object`,params:{}},TYPED_DATA_INVALID_DOMAIN_KEY:{template:`Invalid typed data: invalid typed-data domain key {key}`,params:{key:`string`}},NON_CANONICAL_PAIR:{template:`The pair {token0}/{token1} is not in canonical order: token0 must sort before token1.`,params:{token0:`string`,token1:`string`}},UNORDERABLE_SYMBOLS:{template:`Unable to order trading symbols: expected a pair of symbols, got {received}.`,params:{received:`string`}},INVALID_TOKEN_CLASS_KEY:{template:`Invalid token class key "{tokenClassKey}": expected a collection followed by category, type and additionalKey`,params:{tokenClassKey:`string`}},INCOMPLETE_TOKEN_CLASS_KEY:{template:`Token class key "{compositeKey}" is missing {part}.`,params:{compositeKey:`string`,part:`string`}},INVALID_TRADING_SYMBOL:{template:`Invalid trading symbol "{symbol}": must be 1-32 ASCII letters and digits and not a reserved word (Token, Unit, none).`,params:{symbol:`string`}},NO_VALID_TRADING_SYMBOL:{template:`No valid trading symbol for token class {classKey}: "{displaySymbol}" is not an acceptable symbol and none is registered`,params:{classKey:`string`,displaySymbol:`string`}},TOKEN_SYMBOL_NOT_REGISTERED:{template:`Token {token} is not registered in the trading-symbol registry yet; pass token0Symbol/token1Symbol (the token class symbol) to propose one. A symbol cannot be derived from a class key.`,params:{token:`string`}},SYMBOL_DISAGREES_WITH_REGISTRY:{template:`Supplied symbol {suppliedSymbol} for {token} disagrees with the registered trading symbol {registeredSymbol}.`,params:{token:`string`,suppliedSymbol:`string`,registeredSymbol:`string`}},CREATE_POOL_NEEDS_CLASS_KEY:{template:`createPool needs each token as a class key; {token} is a bare trading symbol, which does not carry one.`,params:{token:`string`}},INVALID_UNIQUE_KEY:{template:`The uniqueKey "{uniqueKey}" must be 1-128 characters of A-Z, a-z, 0-9, ".", "_", ":" or "-".`,params:{uniqueKey:`string`}},INVALID_UNIQUE_KEY_PREFIX:{template:`uniqueKeyPrefix "{uniqueKeyPrefix}" must be at most {maxLength} characters of A-Z, a-z, 0-9, ".", "_", ":" or "-".`,params:{uniqueKeyPrefix:`string`,maxLength:`number`}},AMOUNT_IS_JS_NUMBER:{template:`Invalid {field}: use a decimal string or BigNumber, not a JavaScript number`,params:{field:`string`}},AMOUNT_NOT_FINITE:{template:`Invalid {field}: must be a finite number (got {value})`,params:{field:`string`,value:`string`}},AMOUNT_NOT_POSITIVE:{template:`Invalid {field}: must be positive (got {value})`,params:{field:`string`,value:`string`}},AMOUNT_NEGATIVE:{template:`Invalid {field}: must not be negative (got {value})`,params:{field:`string`,value:`string`}},PRICE_VALUES_IS_JS_NUMBER:{template:`Invalid price values: use decimal strings or BigNumber values, not JavaScript numbers`,params:{}},INVALID_PRICE_VALUES:{template:`Invalid price values: all prices must be finite and positive (spot {spotPrice}, lower {lowerPrice}, upper {upperPrice})`,params:{spotPrice:`string`,lowerPrice:`string`,upperPrice:`string`}},INVALID_PRICE_RANGE:{template:`Invalid price range: lower price {lowerPrice} must be less than or equal to upper price {upperPrice}`,params:{lowerPrice:`string`,upperPrice:`string`}},INVALID_PRICE_BOUNDS:{template:`Price bounds must be finite and positive (minPrice {minPrice}, maxPrice {maxPrice}).`,params:{minPrice:`string`,maxPrice:`string`}},PRICE_BOUNDS_ORDER:{template:`minPrice {minPrice} must be less than or equal to maxPrice {maxPrice}.`,params:{minPrice:`string`,maxPrice:`string`}},INVALID_STARTING_PRICE:{template:`Starting price must be finite and positive (got {value}).`,params:{value:`string`}},INVALID_SQRT_PRICE:{template:`Cannot invert a non-positive sqrt price ({sqrtPrice}).`,params:{sqrtPrice:`string`}},INVALID_TOKEN_DECIMALS:{template:`Invalid {field}: must be a non-negative integer (got {value})`,params:{field:`string`,value:`number`}},TICKS_NOT_INTEGERS:{template:`Invalid tick values: ticks must be integers (got {tickLower} and {tickUpper})`,params:{tickLower:`number`,tickUpper:`number`}},INVALID_TICK_RANGE:{template:`Invalid tick range: tickLower {tickLower} must be less than tickUpper {tickUpper}`,params:{tickLower:`number`,tickUpper:`number`}},TICKS_OUT_OF_BOUNDS:{template:`Invalid tick range: ticks {tickLower} and {tickUpper} must be between {minTick} and {maxTick}`,params:{tickLower:`number`,tickUpper:`number`,minTick:`number`,maxTick:`number`}},TICKS_NOT_ALIGNED:{template:`Ticks {tickLower} and {tickUpper} must be aligned to spacing {spacing}.`,params:{tickLower:`number`,tickUpper:`number`,spacing:`number`}},INVALID_TICK_SPACING:{template:`Invalid tick spacing: must be a positive integer (got {value})`,params:{value:`number`}},INVALID_FEE:{template:`Invalid {field}: {value} is not a supported fee tier; must be one of {allowed}.`,params:{field:`string`,value:`number`,allowed:`string`}},EXACT_AMOUNT_REQUIRED:{template:`{field} is required for this swap.`,params:{field:`string`}},EXACTLY_ONE_OF_REQUIRED:{template:`Provide exactly one of {first} or {second}.`,params:{first:`string`,second:`string`}},AT_MOST_ONE_OF_ALLOWED:{template:`Provide at most one of {first} or {second}.`,params:{first:`string`,second:`string`}},POOL_MISMATCH:{template:`tokenIn {tokenIn} and tokenOut {tokenOut} must be the two tokens of the pinned pool {poolToken0}/{poolToken1}.`,params:{tokenIn:`string`,tokenOut:`string`,poolToken0:`string`,poolToken1:`string`}},INVALID_DTO:{template:`{method} DTO field {field} is invalid (expected {expected}).`,params:{method:`string`,field:`string`,expected:`string`}},DTO_NOT_CANONICAL:{template:`The {method} DTO is not in the form the SDK builders produce; build it with the matching build function and submit that.`,params:{method:`string`}},SEARCH_TOO_LONG:{template:`search must be at most {maxLength} characters (got {length}).`,params:{length:`number`,maxLength:`number`}},INVALID_SORT_BY:{template:`sortBy "{value}" is not allowed; it must be one of {allowed}.`,params:{value:`string`,allowed:`string`}},INVALID_SORT_ORDER:{template:`sortOrder "{value}" is not allowed; it must be asc or desc.`,params:{value:`string`}},INVALID_PAGE:{template:`page must be an integer of at least 1 (got {value}).`,params:{value:`number`}},INVALID_LIMIT:{template:`limit must be an integer from {min} to {max} (got {value}).`,params:{value:`number`,min:`number`,max:`number`}}},ee=Object.fromEntries(Object.entries(g).map(([e,t])=>[e,t.template])),te=/\{([A-Za-z0-9_]+)\}/gu;function _(e,t){return e.replace(te,(e,n)=>{let r=t[n];return typeof r==`string`||typeof r==`number`||typeof r==`boolean`?String(r):e})}function v(e){"@babel/helpers - typeof";return v=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},v(e)}function ne(e,t){if(v(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(v(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function re(e){var t=ne(e,`string`);return v(t)==`symbol`?t:t+``}function y(e,t,n){return(t=re(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b=class e extends Error{constructor(e,t,n={}){super(_(g[e].template,t),n.cause===void 0?void 0:{cause:n.cause}),y(this,`code`,void 0),y(this,`params`,void 0),y(this,`retryAfterMs`,void 0),y(this,`status`,void 0),y(this,`body`,void 0),y(this,`bodyText`,void 0),y(this,`url`,void 0),y(this,`uniqueKey`,void 0),y(this,`requestTransactionId`,void 0),y(this,`applyTransactionId`,void 0),y(this,`blockNumber`,void 0),this.name=`GSwapSDKError`,this.code=e,this.params=t,this.retryAfterMs=n.retryAfterMs,this.status=n.status,this.body=typeof n.body==`string`?void 0:n.body,this.bodyText=typeof n.body==`string`?n.body:void 0,this.url=n.url,this.uniqueKey=n.uniqueKey,this.requestTransactionId=n.requestTransactionId,this.applyTransactionId=n.applyTransactionId,this.blockNumber=n.blockNumber}get notFound(){return this.status===404||this.code===`NO_POOL_AVAILABLE`||this.code===`UNKNOWN_TOKEN`}static noSignerError(){return new e(`NO_SIGNER`,{})}static noWalletAddressError(){return new e(`NO_WALLET_ADDRESS`,{})}static noPoolAvailableError(t,n,r,i){return new e(`NO_POOL_AVAILABLE`,{tokenIn:x(t),tokenOut:x(n),fee:ie(r)},ae(i))}static insufficientLiquidityError(t,n,r,i){return new e(`INSUFFICIENT_LIQUIDITY`,{tokenIn:x(t),tokenOut:x(n),fee:ie(r)},ae(i))}static fromGatewayBounce(t,n,r,i,a,o,s){let c={status:r,body:i,url:a,retryAfterMs:o,uniqueKey:s},l={serverMessage:n};switch(t){case`METHOD_NOT_ALLOWED`:return new e(`METHOD_NOT_ALLOWED`,l,c);case`SIGNATURE_INVALID`:return new e(`SIGNATURE_INVALID`,l,c);case`SIGNER_MISMATCH`:return new e(`SIGNER_MISMATCH`,l,c);case`DTO_INVALID`:return new e(`DTO_INVALID`,l,c);case`BOUNDS_VIOLATION`:return new e(`BOUNDS_VIOLATION`,l,c);case`SYMBOL_CONFLICT`:return new e(`SYMBOL_CONFLICT`,l,c);case`RATE_LIMITED`:return new e(`RATE_LIMITED`,l,c);case`CHAIN_DISPATCH_FAILED`:return new e(`CHAIN_DISPATCH_FAILED`,{...l,errorKey:C(i,`errorKey`)??``},c);default:return new e(`GATEWAY_REJECTED`,{gatewayCode:t,serverMessage:n},c)}}static fromChainError(t,n,r){return new e(`CHAIN_REJECTED`,{errorKey:t,serverMessage:n},r)}static unknownTokenError(t,n){return new e(`UNKNOWN_TOKEN`,{token:x(t)},ae(n))}static confirmationTimeoutError(t,n){return new e(`CONFIRMATION_TIMEOUT`,{},{uniqueKey:t,cause:n})}static async fromErrorResponse(t,n){let r=await n.text(),i=se(r),a=oe(i,`error`),o=C(a,`ErrorKey`),s=C(a,`Message`),c={status:n.status,body:i??r,url:t};return o!==void 0&&s!==void 0?new e(`CHAIN_REJECTED`,{errorKey:o,serverMessage:s},c):new e(`HTTP_ERROR`,{status:n.status,url:t,serverMessage:d(i)},c)}};function x(e){return typeof e==`string`?e:[e.collection,e.category,e.type,e.additionalKey].join(`$`)}function ie(e){return e===void 0?`any`:String(e)}function ae(e){return e===void 0?{}:{status:e.status,body:e.body??e.bodyText,url:e.url}}function S(e,t){return e instanceof b&&(t===void 0||e.code===t)}function oe(e,t){if(typeof e!=`object`||!e||!(t in e))return;let n=e[t];return typeof n==`object`&&n?n:void 0}function C(e,t){if(typeof e!=`object`||!e||!(t in e))return;let n=e[t];return typeof n==`string`?n:void 0}function se(e){try{return JSON.parse(e)}catch{return}}const ce=`galaswap-operation-`,le=/^[A-Za-z0-9._:-]*$/u;function ue(e){if(e===void 0)return ce;if(!le.test(e)||e.length>92)throw new b(`INVALID_UNIQUE_KEY_PREFIX`,{uniqueKeyPrefix:e,maxLength:92});return e}const de=/^[A-Za-z0-9._:-]{1,128}$/u;function w(e){return typeof e==`string`&&de.test(e)}function T(e){if(!w(e))throw new b(`INVALID_UNIQUE_KEY`,{uniqueKey:String(e)})}function fe(e){return`${e}${globalThis.crypto.randomUUID()}`}function pe(e,t){if(t===1/0)return()=>void 0;let n=setTimeout(()=>e.abort(),t);return()=>clearTimeout(n)}function me(e,t){if(e===1/0||Number.isFinite(e)&&e>0)return e;throw new b(`INVALID_TIMEOUT`,{field:t,value:e})}const he=/[A-Za-z0-9\-._~!'()*$|:,]/u;function ge(e){let t=``;for(let n of e)n===` `?t+=`+`:he.test(n)?t+=n:t+=_e(n);return t}function _e(e){try{return encodeURIComponent(e)}catch{return`%EF%BF%BD`}}function ve(e,t=`standard`){return t===`readable`?Object.entries(e).map(([e,t])=>`${ge(e)}=${ge(t)}`).join(`&`):new URLSearchParams(e).toString()}function E(e,t={}){let n=/* @__PURE__ */ new Map,r=(e,t=!1)=>{for(let[r,i]of Object.entries(e??{}))t&&n.delete(r.toLowerCase()),n.set(r.toLowerCase(),[r,i])};return e?.userAgent!==!1&&r({"User-Agent":e?.userAgent??`GalaChain-SDK/1.2.0-rc.4`}),r(t.defaults),r(e?.headers),t.json===!0&&!n.has(`content-type`)&&r({"Content-Type":`application/json`}),r(t.fixed,!0),Object.fromEntries(n.values())}const ye=async(e,t)=>{try{return await fetch(e,t)}catch(n){throw t?.signal?.aborted===!0?n:new b(`TRANSPORT_ERROR`,{url:e},{url:e,cause:n})}};async function be(e,t,n,r){let i=new AbortController,a=pe(i,r),o=n.signal,s=()=>i.abort();o?.addEventListener(`abort`,s,{once:!0});try{return await e(t,{...n,signal:i.signal})}catch(e){throw o?.aborted===!0?e:i.signal.aborted?new b(`REQUEST_TIMEOUT`,{url:t,timeoutMs:r},{url:t,cause:e}):e}finally{a(),o?.removeEventListener(`abort`,s)}}async function xe(e){let t=await e.text();return se(t)??t}function Se(e,t){let n=e.headers;if(n===void 0)return;if(Te(n)){let e=n.get(t);return e===null||e===``?void 0:e}let r=Object.entries(n).find(([e])=>e.toLowerCase()===t.toLowerCase())?.[1];return r===void 0||r===``?void 0:r}function Ce(e){let t=Se(e,`retry-after`);if(t===void 0)return;let n=Number(t);if(Number.isFinite(n)&&n>=0)return n*1e3;let r=Date.parse(t);return Number.isNaN(r)?void 0:Math.max(0,r-Date.now())}function we(e,t=`x-block-number`){let n=Se(e,t);if(n===void 0)return;let r=Number(n);return Number.isInteger(r)&&r>=0?r:void 0}function Te(e){return`get`in e&&typeof e.get==`function`}var D=class extends b{constructor(e,t,n={}){super(e,t,n),this.name=`AppliedTradeError`}};async function Ee(e,t,n){let{uniqueKey:r}=t;if(!w(r))throw new D(`INVALID_UNIQUE_KEY`,{uniqueKey:String(r)},{uniqueKey:r});let i=e.httpRequestor??ye,a=e.requestTimeoutMs??3e4,c=n?.signal,l=e=>new D(`CONFIRMATION_ABORTED`,{},{uniqueKey:r,cause:e}),u=`${e.dexBackendBaseUrl.replace(/\/$/u,``)}/v1/chain/apply-results/${encodeURIComponent(r)}?channel=asset&contract=dex-contract`,f=o(n,3e3,l);await f.waitForRead();let p;for(;;){s(c,l);let n,o;try{n=await be(i,u,{method:`GET`,headers:E(e.wire),...c===void 0?{}:{signal:c}},a),o=await xe(n)}catch(e){if(s(c,l),p=e,!await f.waitForRead())break;continue}if(s(c,l),n.status===200)return De(t,n,o,u);if(n.status===404||n.status===429||Ae(n.status)){let e=n.status===429?Ce(n):void 0;if(!await f.waitForRead(e))break;continue}throw new D(`CONFIRMATION_FAILED`,{status:n.status,serverMessage:d(o)},{uniqueKey:r,status:n.status,body:o,url:u})}throw new D(`CONFIRMATION_TIMEOUT`,{},{uniqueKey:r,requestTransactionId:t.requestTransactionId,url:u,cause:p})}function De(e,t,n,r){let{uniqueKey:i}=e,a=je(n),o=a?.uniqueKey??a?.UniqueKey;if(typeof o==`string`&&o!==i)throw new D(`CONFIRMATION_KEY_MISMATCH`,{},{uniqueKey:i,status:t.status,body:n,url:r});let s=a?.Status,c=Se(t,`x-apply-transaction-id`)??null,l=we(t,`x-apply-block-number`)??null;if(s===0)throw new D(`CHAIN_REJECTED`,{errorKey:C(a,`ErrorKey`)??`CHAIN_ERROR`,serverMessage:C(a,`Message`)??``},{uniqueKey:i,requestTransactionId:e.requestTransactionId,applyTransactionId:c,blockNumber:l,status:t.status,body:n,url:r});if(s!==1)throw Oe(e,t,n,r);let u=ke(a?.Data);if(u===void 0)throw Oe(e,t,n,r);return{uniqueKey:i,transactionId:c,blockNumber:l,requestTransactionId:e.requestTransactionId,result:u}}function Oe(e,t,n,r){return new D(`CONFIRMATION_MALFORMED`,{},{uniqueKey:e.uniqueKey,status:t.status,body:n,url:r})}function ke(e){let t=je(e);if(t===void 0||typeof t.token0!=`string`||typeof t.token1!=`string`||typeof t.fee!=`number`)return;let n=[`sell0Qty`,`sell1Qty`,`buy0Qty`,`buy1Qty`,`tradingFees`,`protocolFees`,`totalFees`];for(let e of n)if(e in t&&typeof t[e]!=`string`)return;return{token0:t.token0,token1:t.token1,fee:t.fee,...Object.fromEntries(n.flatMap(e=>typeof t[e]==`string`?[[e,t[e]]]:[]))}}function Ae(e){return e===500||e===502||e===503||e===504}function je(e){return typeof e==`object`&&e?e:void 0}let Me=/* @__PURE__ */ function(e){return e[e.PERCENT_00_00=0]=`PERCENT_00_00`,e[e.PERCENT_00_05=500]=`PERCENT_00_05`,e[e.PERCENT_00_30=3e3]=`PERCENT_00_30`,e[e.PERCENT_01_00=1e4]=`PERCENT_01_00`,e}({});const Ne={0:200,500:10,3e3:60,1e4:200},Pe=[0,500,3e3,1e4],Fe=-887272,Ie=887272,Le=e.clone({DECIMAL_PLACES:60,ROUNDING_MODE:e.ROUND_DOWN}),O=t.clone({precision:60});function Re(t){return new e(new O(1.0001).pow(t/2).toString())}function ze(e){let t;try{t=new Le(e)}catch{return NaN}if(!t.isFinite()||t.isLessThanOrEqualTo(0))return NaN;let n=Math.log(t.toNumber()**2)/Math.log(1.0001);if(!Number.isFinite(n))return NaN;let r=Math.min(Ie,Math.max(Fe,Math.floor(n)));for(;r<887272&&Re(r+1).isLessThanOrEqualTo(t);)r+=1;for(;r>-887272&&Re(r).isGreaterThan(t);)--r;return r}function Be(t){let n=typeof t==`string`?t:typeof t==`number`||e.isBigNumber(t)?t.toString():`NaN`,r=new O(n);if(!r.isFinite()||r.lessThanOrEqualTo(0)||!Number.isFinite(r.toNumber()))return NaN;let i=r.ln().dividedBy(new O(1.0001).ln()).floor().toNumber();return Number.isFinite(i)?i:NaN}function Ve(e,t){return Ue(t),Math.floor(e/t)*t}function He(e,t){return Ue(t),Math.ceil(e/t)*t}function k(e,t,n){let r=Ne[n];if(r===void 0)throw new b(`INVALID_FEE`,{field:`fee`,value:n,allowed:h});if(!Number.isInteger(e)||!Number.isInteger(t))throw new b(`TICKS_NOT_INTEGERS`,{tickLower:e,tickUpper:t});if(e>=t)throw new b(`INVALID_TICK_RANGE`,{tickLower:e,tickUpper:t});if(e<-887272||t>887272)throw new b(`TICKS_OUT_OF_BOUNDS`,{tickLower:e,tickUpper:t,minTick:Fe,maxTick:Ie});if(e%r!==0||t%r!==0)throw new b(`TICKS_NOT_ALIGNED`,{tickLower:e,tickUpper:t,spacing:r})}function Ue(e){if(!Number.isInteger(e)||e<=0)throw new b(`INVALID_TICK_SPACING`,{value:e})}function We(e){if(e.flippedFromRequest!==!0)return{sqrtPrice:e.sqrtPrice,tick:e.tick};let t=new O(1).dividedBy(new O(e.sqrtPrice));if(!t.isFinite()||t.lessThanOrEqualTo(0))throw new b(`INVALID_SQRT_PRICE`,{sqrtPrice:e.sqrtPrice});let n=t.toString();return{sqrtPrice:n,tick:ze(n)}}function A(t,n,r=!1){if(typeof t==`number`)throw new b(`AMOUNT_IS_JS_NUMBER`,{field:n});let i;try{i=e(t)}catch{i=e(NaN)}if(!i.isFinite())throw new b(`AMOUNT_NOT_FINITE`,{field:n,value:String(t)});if(!r&&i.isZero())throw new b(`AMOUNT_NOT_POSITIVE`,{field:n,value:String(t)});if(i.isNegative())throw new b(`AMOUNT_NEGATIVE`,{field:n,value:String(t)})}function Ge(t,n,r){if([t,n,r].some(e=>typeof e==`number`))throw new b(`PRICE_VALUES_IS_JS_NUMBER`,{});let i=t=>{try{return e(t)}catch{return e(NaN)}},a=i(t),o=i(n),s=i(r);if(s=s.isFinite()?s:e(0xde0b6b3a7640000),!a.isFinite()||!o.isFinite()||!s.isFinite()||!a.isPositive()||!o.isPositive()||!s.isPositive())throw new b(`INVALID_PRICE_VALUES`,{spotPrice:String(t),lowerPrice:String(n),upperPrice:String(r)});if(o.isGreaterThan(s))throw new b(`INVALID_PRICE_RANGE`,{lowerPrice:String(n),upperPrice:String(r)})}function Ke(e,t){if(e<0||!Number.isInteger(e))throw new b(`INVALID_TOKEN_DECIMALS`,{field:t,value:e})}function qe(e,t){if(!Number.isInteger(e)||!Number.isInteger(t))throw new b(`TICKS_NOT_INTEGERS`,{tickLower:e,tickUpper:t});if(e>=t)throw new b(`INVALID_TICK_RANGE`,{tickLower:e,tickUpper:t});if(e<-887272||t>887272)throw new b(`TICKS_OUT_OF_BOUNDS`,{tickLower:e,tickUpper:t,minTick:Fe,maxTick:Ie})}function j(e){if(!Pe.some(t=>Number(t)===e))throw new b(`INVALID_FEE`,{field:`fee`,value:e,allowed:h})}function Je(e){if(!Number.isInteger(e)||e<=0)throw new b(`INVALID_TICK_SPACING`,{value:e})}function Ye(e){if(e===void 0)throw new b(`MISSING_WALLET_ADDRESS`,{});if(!e||typeof e!=`string`||e.trim().length===0)throw new b(`INVALID_WALLET_ADDRESS`,{field:`walletAddress`,value:String(e)})}const Xe=/* @__PURE__ */ new Set([`Token`,`Unit`,`none`]),Ze=/^[A-Za-z0-9]+$/u;function Qe(e){return Ze.test(e)&&e.length<=32&&!Xe.has(e)}function M(e,t){if(!(e<t))throw new b(`NON_CANONICAL_PAIR`,{token0:e,token1:t})}var $e=class{constructor(e,t){this.dexBackendBaseUrl=e,this.httpClient=t}async getUserAssets(e,t=1,n=10){if(Ye(e),!Number.isInteger(t)||t<1)throw new b(`INVALID_PAGE`,{value:t});if(!Number.isInteger(n)||n<1||n>100)throw new b(`INVALID_LIMIT`,{value:n,min:1,max:100});return et(await this.httpClient.sendGetRequest(this.dexBackendBaseUrl,`/user/assets`,``,{address:e,page:t.toString(),limit:n.toString()}))}};function et(e){let t=oe(e,`data`),n=t?.token;if(!Array.isArray(n)||!n.every(tt))throw new b(`INVALID_CHAIN_RESPONSE`,{resource:`user assets response`},{body:e});let r=t?.count;return{tokens:n.map(e=>({...e,decimals:parseInt(e.decimals,10)})),count:typeof r==`number`?r:0}}function tt(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.image==`string`&&typeof t.name==`string`&&typeof t.decimals==`string`&&/^\d+$/u.test(t.decimals)&&typeof t.verify==`boolean`&&typeof t.symbol==`string`&&typeof t.quantity==`string`}const nt=[`Swap`,`RequestTrade`,`AddLiquidity`,`RemoveLiquidity`,`CollectPositionFees`,`CreatePool`],rt=`DryRun`,it=`galaconnect-operation-`;function at(e){return typeof e==`string`&&nt.includes(e)}function ot(e,t){return at(t)&&typeof e?.token0==`string`&&typeof e.token1==`string`}function st(e){let t={...e};for(let e of[`signature`,`prefix`,`types`,`domain`,`trace`])delete t[e];return t}function ct(e,t,n,r,i=it){return e.signObject(rt,{callerPublicKey:t,method:n,dto:r,uniqueKey:`${i}${globalThis.crypto.randomUUID()}`})}var lt=class{constructor(e,t){this.signer=t,y(this,`requestor`,void 0),y(this,`baseUrl`,void 0),y(this,`requestTimeoutMs`,void 0),y(this,`wire`,void 0),this.requestor=e.httpRequestor??ye,this.baseUrl=e.dexBackendBaseUrl.replace(/\/$/u,``),this.requestTimeoutMs=e.requestTimeoutMs??3e4,this.wire=e.wire}async quote(e,t,n,r={}){if(this.signer===void 0)throw b.noSignerError();let i=r.channel??`asset`,a=r.contract??`dexv3-contract`,o=await ct(this.signer,e,t,st(n)),s=`${this.baseUrl}/wallet/connect/galachain/api/${encodeURIComponent(i)}/${encodeURIComponent(a)}/${encodeURIComponent(t)}/fee`,c,l,u;try{let e=await be(this.requestor,s,{method:`POST`,headers:E(this.wire,{json:!0,defaults:{Accept:`application/json`}}),body:JSON.stringify(o)},this.requestTimeoutMs);c=e.status,l=e.ok,u=l?await xe(e):void 0}catch{return null}return l?ut(u):a===`dex-contract`&&(c===403||c===404)?{source:`default`,fees:[{feeInGala:`0`}]}:null}};function ut(e){if(typeof e!=`object`||!e)return null;let t=e.fees;return!Array.isArray(t)||typeof t[0]?.feeInGala!=`string`?null:e}var dt=class{constructor(e){y(this,`method`,void 0),y(this,`uniqueKey`,void 0),y(this,`transactionId`,void 0),y(this,`blockNumber`,void 0),y(this,`mode`,void 0),y(this,`status`,void 0),y(this,`result`,void 0),y(this,`envelope`,void 0),y(this,`backendBaseUrl`,void 0),y(this,`requestor`,void 0),y(this,`requestTimeoutMs`,void 0),y(this,`wire`,void 0),y(this,`positionConfirmation`,void 0),this.method=e.method,this.uniqueKey=e.uniqueKey,this.transactionId=e.transactionId,this.blockNumber=e.blockNumber??null,this.mode=e.mode,this.status=e.mode===`queued`?`queued`:`executed`,this.result=e.result,this.envelope=e.envelope,this.backendBaseUrl=e.dexBackendBaseUrl.replace(/\/$/u,``),this.requestor=e.httpRequestor,this.requestTimeoutMs=e.requestTimeoutMs??3e4,this.wire=e.wire,this.positionConfirmation=e.positionConfirmation}async confirm(e){return this.method===`RequestTrade`?this.confirmApplied(e):this.confirmPosition(e)}confirmApplied(e){return Ee({dexBackendBaseUrl:this.backendBaseUrl,httpRequestor:this.requestor,requestTimeoutMs:this.requestTimeoutMs,wire:this.wire},{uniqueKey:this.uniqueKey,requestTransactionId:this.transactionId},e)}async confirmPosition(e){if(this.positionConfirmation===void 0)throw b.noWalletAddressError();let t=e?.signal,n=e=>new b(`CONFIRMATION_ABORTED`,{},{uniqueKey:this.uniqueKey,cause:e}),r=o(e,0,n);for(await r.waitForRead();;){let e=new AbortController,i=pe(e,this.requestTimeoutMs),a=()=>e.abort();t?.addEventListener(`abort`,a,{once:!0});try{let t=await this.positionConfirmation(e.signal);if(t.confirmed)return t.position}catch(e){throw s(t,n),e}finally{i(),t?.removeEventListener(`abort`,a)}if(!await r.waitForRead())break}throw b.confirmationTimeoutError(this.uniqueKey)}},ft=class{constructor(e){y(this,`requestor`,void 0),y(this,`walletAddress`,void 0),y(this,`chainCallTimeoutMs`,void 0),y(this,`isTransportFailure`,void 0),y(this,`requestTimeoutMs`,void 0),y(this,`dexBackendBaseUrl`,void 0),y(this,`wire`,void 0),this.dexBackendBaseUrl=pt(e.dexBackendBaseUrl),this.requestor=e.httpRequestor??ye,this.walletAddress=e.walletAddress,this.chainCallTimeoutMs=me(e.chainCallTimeoutMs??3e4,`chainCallTimeoutMs`),this.requestTimeoutMs=this.chainCallTimeoutMs,this.wire=e.wire??{},this.isTransportFailure=e.isTransportFailure}async submit(e,t,n){if(e===`Trade`)throw new b(`METHOD_NOT_SUPPORTED`,{method:e});let r=this.writeUrl(e),i=n?.walletAddress??this.walletAddress,a=E(this.wire,{json:!0,fixed:i===void 0?{}:{"X-Wallet-Address":i}}),{response:o,body:s}=await this.post(r,a,t),c=C(t,`uniqueKey`)??``,l=mt(o,s,r,c);if(!o.ok)throw gt(o,s,r,c);let u=_t(s);if(u?.error===!0)throw new b(`GATEWAY_REPORTED_ERROR`,{serverMessage:d(u)},l);let f=_t(u?.data??u?.Data);if(f===void 0)throw new b(`GATEWAY_DATA_MISSING`,{},l);let p=C(f,`transactionId`),m=C(f,`mode`),h=f.transactionId,g=f.blockNumber,ee=()=>new b(`GATEWAY_MODE_INVALID`,{},l);if(m!==`sync`&&m!==`queued`||`transactionId`in f&&typeof h!=`string`||g!=null&&!vt(g))throw ee();if(e===`RequestTrade`&&m===`sync`)throw new b(`GATEWAY_SYNC_REQUEST_TRADE`,{},l);if(e===`RequestTrade`&&m===`queued`)ht(o,s,r,f,t);else if(m===`queued`||!(`result`in f))throw ee();if(m===`sync`){let e=_t(f.result);if(e!==void 0){let t=e.Status;if(t!==void 0&&t!==1)throw b.fromChainError(C(e,`ErrorKey`)??`CHAIN_ERROR`,C(e,`Message`)??``,l)}}let te=Se(o,`x-transaction-id`),_=p===void 0||p===``?te:p,v=g==null?we(o):vt(g)?g:void 0;return new dt({method:e,uniqueKey:c,transactionId:_===void 0||_===``?null:_,blockNumber:v??null,mode:m,result:m===`queued`?void 0:f.result,envelope:s,dexBackendBaseUrl:this.dexBackendBaseUrl,httpRequestor:this.requestor,requestTimeoutMs:this.chainCallTimeoutMs,wire:this.wire,...n?.positionConfirmation===void 0?{}:{positionConfirmation:n.positionConfirmation}})}async submitShadow(e,t,n){if(e===`Trade`)throw new b(`METHOD_NOT_SUPPORTED`,{method:e});let r=n?.walletAddress??this.walletAddress;if(r===void 0)throw new b(`SHADOW_SUBMIT_NEEDS_WALLET_ADDRESS`,{});let i=E(this.wire,{json:!0,fixed:{"X-Wallet-Address":r,"X-Shadow":`true`}}),{response:a,body:o}=await this.post(this.writeUrl(e),i,t);return{httpStatus:a.status,body:o}}writeUrl(e){return`${this.dexBackendBaseUrl}/v1/chain/asset/dex-contract/${e}`}async post(e,t,n){let r=(t,r)=>new b(`SUBMISSION_OUTCOME_UNKNOWN`,{reason:t},{uniqueKey:C(n,`uniqueKey`)??``,url:e,cause:r}),i;try{i=await be(this.requestor,e,{method:`POST`,headers:t,body:JSON.stringify(n)},this.chainCallTimeoutMs)}catch(e){throw S(e,`REQUEST_TIMEOUT`)?r(`timeout`,e):S(e,`TRANSPORT_ERROR`)||this.isTransportRejection(e)?r(`transport`,e):e}try{return{response:i,body:await xe(i)}}catch(e){throw r(`transport`,e)}}isTransportRejection(e){try{return this.isTransportFailure?.(e)===!0}catch{return!1}}get httpRequestor(){return this.requestor}};function pt(e){return e.replace(/\/$/u,``)}function mt(e,t,n,r){return{status:e.status,body:t,url:n,...r===void 0||r===``?{}:{uniqueKey:r}}}function ht(e,t,n,r,i){let a=C(i,`uniqueKey`)??``,o=r.uniqueKey;if(typeof o==`string`&&o!==``&&o===a)return;let s=o==null||o===``,c={...mt(e,t,n),uniqueKey:a};throw s?new b(`MISSING_UNIQUE_KEY`,{},c):new b(`UNIQUE_KEY_MISMATCH`,{},c)}function gt(e,t,n,r){let i=_t(t),a=oe(t,`error`),o=C(i,`code`)??C(a,`code`)??C(a,`ErrorKey`)??`HTTP_ERROR`,s=d(t),c=e.status===429?Ce(e):void 0;return o===`HTTP_ERROR`?new b(`HTTP_ERROR`,{status:e.status,url:n,serverMessage:s},mt(e,t,n,r)):b.fromGatewayBounce(o,s,e.status,t,n,c,r===``?void 0:r)}function _t(e){return typeof e==`object`&&e?e:void 0}function vt(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0}const yt={prod:{dexBackendBaseUrl:`https://dex-backend-prod1.defi.gala.com`,dexBackendWsUrl:`wss://dex-backend-prod1.defi.gala.com/ws`},stage:{dexBackendBaseUrl:`https://swap-backend.stage.defi.ovh.gala.com`,dexBackendWsUrl:`wss://swap-backend.stage.defi.ovh.gala.com/ws`}},N=n(`GSWAP_SDK`);var bt=class{constructor(e){this.options=e,y(this,`attempts`,0),y(this,`delayMs`,void 0),y(this,`maxDelayMs`,void 0),this.delayMs=e.baseDelayMs,this.maxDelayMs=e.maxDelayMs??3e4}shouldRetry(){return this.attempts<this.options.maxAttempts}nextDelayMs(){return this.delayMs}recordAttempt(){this.attempts+=1,this.delayMs=Math.min(this.delayMs*2,this.maxDelayMs)}reset(){this.attempts=0,this.delayMs=this.options.baseDelayMs}get attemptCount(){return this.attempts}get maxAttempts(){return this.options.maxAttempts}};const xt=`gdex.jsonrpc.v1`,St=[`add`,`remove`,`collect`];function Ct(e){let{pool:t}=e;return(e.version===`v1`||e.version===`v2`)&&typeof t==`object`&&!!t&&typeof e.poolHash==`string`&&typeof e.transactionId==`string`&&St.includes(e.action)&&typeof e.owner==`string`&&typeof e.amount0==`string`&&typeof e.amount1==`string`&&typeof e.blockNumber==`number`&&typeof e.timestamp==`string`}var wt=class extends Error{constructor(e,t,n){super(t),y(this,`code`,void 0),y(this,`data`,void 0),this.name=`GdexStreamError`,this.code=e,n!==void 0&&(this.data=n)}};function Tt(e){let t=typeof e==`object`&&e?e.subscriptionId:void 0;if(typeof t!=`string`)throw new wt(-32603,`GDEX subscribe response is missing its subscriptionId`);return t}var Et=class{constructor(e={}){y(this,`url`,void 0),y(this,`requestTimeoutMs`,void 0),y(this,`apiKey`,void 0),y(this,`webSocketConstructor`,void 0),y(this,`backoff`,void 0),y(this,`socket`,void 0),y(this,`connectPromise`,void 0),y(this,`nextRequestId`,0),y(this,`pending`,/* @__PURE__ */ new Map),y(this,`subscriptionsByServerId`,/* @__PURE__ */ new Map),y(this,`activeSubscriptions`,/* @__PURE__ */ new Set),y(this,`intentionalClose`,!1),y(this,`reconnecting`,!1),y(this,`reconnectTimer`,void 0),y(this,`reconnectDelayResolve`,void 0),this.url=e.url??yt.prod.dexBackendWsUrl,this.requestTimeoutMs=e.requestTimeoutMs??15e3,this.backoff=new bt({maxAttempts:e.reconnectAttempts??5,baseDelayMs:e.reconnectDelayMs??2e3});let t=e.webSocketImpl??globalThis.WebSocket;if(typeof t!=`function`)throw new b(`STREAM_WEBSOCKET_UNAVAILABLE`,{});if(this.webSocketConstructor=t,e.apiKey!==void 0){if(e.apiKey===``||e.webSocketImpl===void 0)throw new b(`STREAM_API_KEY_UNUSABLE`,{});this.apiKey=e.apiKey}}connect(){return this.isConnected()?Promise.resolve():this.connectPromise?this.connectPromise:(this.intentionalClose=!1,this.clearReconnectTimer(),this.connectPromise=this.openSocket(),this.connectPromise)}disconnect(){this.intentionalClose=!0,this.reconnecting=!1,this.clearReconnectTimer(),this.rejectPending(new b(`STREAM_DISCONNECTED`,{}));let e=this.socket;this.socket=void 0,this.connectPromise=void 0,e?.close(1e3,`client disconnect`)}isConnected(){return this.socket?.readyState===1}request(e,t){return this.send(e,t)}send(e,t,n){if(!this.isConnected()||!this.socket)return Promise.reject(new b(`STREAM_NOT_CONNECTED`,{}));let r=++this.nextRequestId,i={jsonrpc:`2.0`,id:r,method:e};return t!==void 0&&(i.params=t),new Promise((t,a)=>{let o=setTimeout(()=>{this.pending.delete(r),a(new b(`STREAM_REQUEST_TIMEOUT`,{method:e,timeoutMs:this.requestTimeoutMs}))},this.requestTimeoutMs);this.pending.set(r,{resolve:e=>t(e),reject:a,timeout:o,onResult:n});try{this.socket?.send(JSON.stringify(i))}catch(e){clearTimeout(o),this.pending.delete(r),a(e instanceof Error?e:Error(String(e)))}})}serverInfo(){return this.request(`gdex_serverInfo`)}ping(){return this.request(`gdex_ping`)}getPool(e){return this.request(`gdex_getPool`,e)}getBalance(e,t){return this.request(`gdex_getBalance`,t===void 0?{owner:e}:{owner:e,tokenClassKey:t})}getPositions(e){return this.request(`gdex_getPositions`,e)}getBlockHeight(){return this.request(`gdex_getBlockHeight`)}quote(e){return this.request(`gdex_quote`,e)}getToken(e){return this.request(`gdex_getToken`,{tokenClassKey:e})}subscribeSwaps(e,t={}){return this.subscribe(`swap`,e,t)}subscribePool(e,t,n={}){return this.subscribe(`pool`,t,{...e,...n})}subscribeBalances(e,t,n={}){return this.subscribe(`balance`,t,{owner:e,...n})}subscribePoolCreated(e,t={}){return this.subscribe(`poolCreated`,e,t)}subscribeLiquidity(e,t={}){return this.subscribe(`liquidity`,t=>{Ct(t)?e(t):N(`Ignoring a malformed liquidity event from the GDEX stream`)},t)}subscribeBlocks(e,t={}){return this.subscribe(`blocks`,e,t)}openSocket(){return new Promise((e,t)=>{let n=!1,r=this.apiKey===void 0?new this.webSocketConstructor(this.url,xt):new this.webSocketConstructor(this.url,xt,{headers:{"x-api-key":this.apiKey}});this.socket=r,r.onopen=()=>{this.socket===r&&(n=!0,this.connectPromise=void 0,this.reconnecting||this.backoff.reset(),N(`Connected to GDEX stream`),e())},r.onmessage=e=>this.handleMessage(e.data),r.onerror=()=>{n||t(new b(`STREAM_CONNECT_FAILED`,{url:this.url}))},r.onclose=e=>{this.socket===r&&(this.socket=void 0,this.connectPromise=void 0,n||t(new b(`STREAM_CLOSED_BEFORE_CONNECT`,{closeCode:e.code??0})),this.rejectPending(new b(`STREAM_CONNECTION_CLOSED`,{closeCode:e.code??0})),!this.intentionalClose&&!this.reconnecting&&this.startReconnectLoop())}})}handleMessage(e){if(typeof e!=`string`){N(`Ignoring non-text GDEX WebSocket frame`);return}let t;try{t=JSON.parse(e)}catch{N(`Ignoring invalid JSON from GDEX stream`);return}if(typeof t.id==`number`){let e=this.pending.get(t.id);if(!e)return;if(clearTimeout(e.timeout),this.pending.delete(t.id),t.error){let n=typeof t.error.code==`number`?t.error.code:-32603,r=typeof t.error.message==`string`?t.error.message:`GDEX request failed`;e.reject(new wt(n,r,t.error.data))}else{try{e.onResult?.(t.result)}catch(t){e.reject(t instanceof Error?t:Error(String(t)));return}e.resolve(t.result)}return}if(t.method!==`gdex_subscription`||!this.isRecord(t.params))return;let n=t.params.subscription,r=t.params.result;if(typeof n!=`string`||!this.isRecord(r))return;let i=this.subscriptionsByServerId.get(n);if(i?.active)try{i.callback(r)}catch(e){N(`GDEX subscription callback failed`,e)}}async subscribe(e,t,n){let r={channel:e,...n},i={subscriptionId:``,unsubscribe:async()=>this.unsubscribe(a)},a={serverId:``,params:r,callback:t,handle:i,active:!0};return await this.send(`gdex_subscribe`,r,e=>{let t=Tt(e);a.serverId=t,i.subscriptionId=t,this.activeSubscriptions.add(a),this.subscriptionsByServerId.set(t,a)}),i}async unsubscribe(e){e.active&&(e.active=!1,this.activeSubscriptions.delete(e),this.subscriptionsByServerId.delete(e.serverId),this.isConnected()&&await this.request(`gdex_unsubscribe`,{subscriptionId:e.serverId}))}startReconnectLoop(){this.reconnecting||this.intentionalClose||(this.reconnecting=!0,this.reconnectLoop())}async reconnectLoop(){for(;!this.intentionalClose&&this.backoff.shouldRetry();){let e=this.backoff.nextDelayMs();if(this.backoff.recordAttempt(),N(`GDEX reconnect attempt ${this.backoff.attemptCount}/${this.backoff.maxAttempts} in ${e}ms`),await this.waitForReconnectDelay(e),this.intentionalClose)break;try{await this.openSocket(),await this.resubscribeAll(),this.backoff.reset(),this.reconnecting=!1;return}catch(e){N(`GDEX reconnect failed: ${e instanceof Error?e.message:String(e)}`)}}this.reconnecting=!1,this.intentionalClose||N(`GDEX reconnection attempts exhausted`)}async resubscribeAll(){this.subscriptionsByServerId.clear();for(let e of this.activeSubscriptions){if(!e.active)continue;let t={...e.params,snapshot:!0},n=await this.resubscribeWithRateLimitRetry(t,t=>{let n=Tt(t);e.active&&(e.serverId=n,e.handle.subscriptionId=n,this.subscriptionsByServerId.set(n,e))});e.active||await this.request(`gdex_unsubscribe`,{subscriptionId:n.subscriptionId})}}async resubscribeWithRateLimitRetry(e,t){for(let n=0;;n++)try{return await this.send(`gdex_subscribe`,e,t)}catch(e){if(!(e instanceof wt)||e.code!==-32003||n>=5)throw e;let t=this.readRetryAfterMs(e.data);N(`GDEX resubscribe rate limited; retrying in ${t}ms`),await new Promise(e=>setTimeout(e,t))}}waitForReconnectDelay(e){return new Promise(t=>{this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.reconnectDelayResolve=void 0,t()},e),this.reconnectDelayResolve=t})}clearReconnectTimer(){this.reconnectTimer!==void 0&&clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0;let e=this.reconnectDelayResolve;this.reconnectDelayResolve=void 0,e?.()}rejectPending(e){for(let t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}readRetryAfterMs(e){return!this.isRecord(e)||typeof e.retryAfterMs!=`number`||e.retryAfterMs<0?1e3:e.retryAfterMs}isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}},P=class{constructor(e=ye,t=3e4,n={}){this.httpRequestor=e,this.timeoutMs=t,this.wire=n}async sendRequest(e,t,n,r,i,a){let o=`${t}${n}${r}`;N(`Sending request to ${o} with body:`,i);let s=!!i,c=await be(this.httpRequestor,o,{method:e,headers:E(this.wire,{json:s}),...s?{body:JSON.stringify(i)}:{},...a?.signal===void 0?{}:{signal:a.signal}},this.timeoutMs);if(!c.ok)throw await b.fromErrorResponse(o,c);let l=await xe(c);return N(`Response from ${t}${n}${r}:`,l),l}async sendPostRequest(e,t,n,r){return this.sendRequest(`POST`,e,t,n,r)}async sendGetRequest(e,t,n,r,i){let a=r?`${n}?${ve(r,this.wire.queryEncoding)}`:n;return this.sendRequest(`GET`,e,t,a,void 0,i)}};function Dt(e){return{ok:!0,value:e}}function F(e){return{ok:!1,reason:e}}function Ot(e,t,n,r){if(!Array.isArray(t))throw new b(`INVALID_CHAIN_RESPONSE`,{resource:`${e} list`},{body:t});let i=[];return t.forEach((t,a)=>{let o=n(t);if(o.ok){i.push(o.value);return}try{r?.({source:e,index:a,entry:t,reason:o.reason})}catch{}}),i}function kt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function At(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:void 0}}function I(e,t){return e<t?[e,t]:[t,e]}function jt(e){if(Array.isArray(e)&&e.length>=2){let t=e[0],n=e[1];if(typeof t==`string`&&typeof n==`string`)return{token0:t,token1:n}}if(typeof e==`object`&&e){let t=e,n=t.token0,r=t.token1;if(typeof n==`string`&&typeof r==`string`)return{token0:n,token1:r}}throw new b(`UNORDERABLE_SYMBOLS`,{received:Array.isArray(e)?`array`:e===null?`null`:typeof e})}function L(e){return[e.collection,e.category,e.type,e.additionalKey].join(`$`)}function R(e){if(typeof e==`object`)return{collection:e.collection,category:e.category,type:e.type,additionalKey:e.additionalKey};let t=e.includes(`|`)?`|`:`$`,n=e.split(t),r=n.slice(-3),i=n.slice(0,-3).join(t);if(n.length<4||i.length===0||r.some(e=>e.length===0))throw new b(`INVALID_TOKEN_CLASS_KEY`,{tokenClassKey:e});let[a,o,s]=r;return{collection:i,category:a,type:o,additionalKey:s}}var Mt=class{constructor(e,t={}){this.gateway=e,this.options=t,y(this,`cachedSymbols`,void 0),y(this,`cachedAt`,0),y(this,`refreshInFlight`,void 0),y(this,`http`,void 0),this.http=new P(e.httpRequestor,e.requestTimeoutMs,e.wire)}async list(){return this.cachedSymbols!==void 0&&Date.now()-this.cachedAt<6e4?this.cachedSymbols:(this.refreshInFlight===void 0&&(this.refreshInFlight=this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,`/symbols`).then(e=>Ot(`symbols`,e.data,Nt,this.options.onInvalidEntry)).then(e=>(this.cachedSymbols=e,this.cachedAt=Date.now(),e)).finally(()=>{this.refreshInFlight=void 0})),this.refreshInFlight)}invalidate(){this.cachedSymbols=void 0,this.cachedAt=0}async refresh(){return this.invalidate(),this.refreshInFlight=void 0,this.list()}async resolve(e){let t=await this.list(),n=typeof e==`string`?Pt(e)?L(R(e)):void 0:L(e),r=t.find(t=>t.symbol===e||n!==void 0&&L(t)===n);if(r===void 0){t=await this.refresh();let r=t.find(t=>t.symbol===e||n!==void 0&&L(t)===n);if(r===void 0)throw b.unknownTokenError(e);return r}return r}async proposeSymbol(e,t,n={}){let r=[];try{r=await this.list()}catch(e){if(n.registryFailure!==`ignore`)throw e}let i=L(e),a=r.find(t=>t.collection===e.collection&&t.category===e.category&&t.type===e.type&&t.additionalKey===e.additionalKey);if(a!==void 0)return a.symbol;if(Qe(t))return t;throw new b(`NO_VALID_TRADING_SYMBOL`,{classKey:i,displaySymbol:t})}async orderPair(e,t){let[n,r]=await Promise.all([this.resolve(e),this.resolve(t)]),[i,a]=I(n.symbol,r.symbol);return{token0:i===n.symbol?n:r,token1:a===r.symbol?r:n,flipped:i!==n.symbol}}};function Nt(e){let t=kt(e);if(t===void 0)return F(`the row is not an object`);let{symbol:n,collection:r,category:i,type:a,additionalKey:o,decimals:s}=t;return typeof n==`string`?n.length===0?F(`symbol is empty`):typeof r==`string`?typeof i==`string`?typeof a==`string`?typeof o==`string`?typeof s!=`number`||!Number.isInteger(s)||s<0?F(`decimals is not a non-negative integer`):Dt({symbol:n,collection:r,category:i,type:a,additionalKey:o,decimals:s}):F(`additionalKey is not a string`):F(`type is not a string`):F(`category is not a string`):F(`collection is not a string`):F(`symbol is not a string`)}function Pt(e){return e.includes(`|`)||e.includes(`$`)}function z(e){return typeof e==`string`?e:L(e)}async function B(e,t){let n=await e.resolve(t);if(n.symbol.length>0)return n.symbol;throw new b(`SYMBOL_NOT_FOUND`,{token:z(t)})}async function V(e,t){return e.passthrough===!0?z(t):B(e,t)}var Ft=class{constructor(){y(this,`passthrough`,!0)}resolve(e){return typeof e==`string`&&!Pt(e)?Promise.resolve({symbol:e,collection:``,category:``,type:``,additionalKey:``,decimals:0}):Promise.reject(b.unknownTokenError(e))}async orderPair(e,t){let[n,r]=await Promise.all([this.resolve(e),this.resolve(t)]),[i]=I(n.symbol,r.symbol),a=i!==n.symbol;return{token0:a?r:n,token1:a?n:r,flipped:a}}invalidate(){}},It=class{constructor(e,t,n={}){this.gateway=e,this.symbols=t,this.options=n,y(this,`http`,void 0),this.http=new P(e.httpRequestor,e.requestTimeoutMs??3e4,e.wire)}async getPools(e){return Ot(`pools`,(await this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,`/pools`,zt(e),e?.signal===void 0?void 0:{signal:e.signal})).data,Ut,e?.onInvalidEntry??this.options.onInvalidEntry)}async getPool(e,t,n){return j(n),this.getBackend(`/pool`,await this.backendParams(e,t,n))}async getSlot0(e,t,n){return j(n),this.getBackend(`/slot0`,await this.backendParams(e,t,n))}async getCompositePool(e,t,n){if(j(n),this.symbols.passthrough===!0)return this.getBackend(`/composite-pool`,{token0:z(e),token1:z(t),fee:String(n)});let r=jt(I(await B(this.symbols,e),await B(this.symbols,t)));return this.getBackend(`/composite-pool`,{token0:r.token0,token1:r.token1,fee:String(n)})}async backendParams(e,t,n){return{token0:await V(this.symbols,e),token1:await V(this.symbols,t),fee:String(n)}}async getBackend(e,t){try{return(await this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,e,t)).data}catch(e){throw e instanceof b?e:new b(`REQUEST_FAILED`,{operation:`pool`},{cause:e})}}};const Lt=[`tvl`,`volume1d`,`volume30d`],Rt=1e3;function zt(e){if(e===void 0)return;let t={};if(e.search!==void 0){if(e.search.length>64)throw new b(`SEARCH_TOO_LONG`,{length:e.search.length,maxLength:64});t.search=e.search}if(e.sortBy!==void 0){if(!Lt.includes(e.sortBy))throw new b(`INVALID_SORT_BY`,{value:String(e.sortBy),allowed:Lt.join(`,`)});t.sortBy=e.sortBy}if(e.sortOrder!==void 0){if(e.sortOrder!==`asc`&&e.sortOrder!==`desc`)throw new b(`INVALID_SORT_ORDER`,{value:String(e.sortOrder)});t.sortOrder=e.sortOrder}if(e.page!==void 0){if(!Number.isInteger(e.page)||e.page<1)throw new b(`INVALID_PAGE`,{value:e.page});t.page=String(e.page)}if(e.limit!==void 0){if(!Number.isInteger(e.limit)||e.limit<1||e.limit>Rt)throw new b(`INVALID_LIMIT`,{value:e.limit,min:1,max:Rt});t.limit=String(e.limit)}return Object.keys(t).length===0?void 0:t}const Bt=[`poolName`,`token0CompositeKey`,`token1CompositeKey`,`token0Image`,`token1Image`,`creator`,`price`,`sqrtPrice`,`token0Tvl`,`token1Tvl`],Vt=[`tickSpacing`,`protocolFees`,`tradingFees`,`tick`,`volume1d`,`volume7d`,`volume30d`,`trades1d`,`fee24h`,`token0Price`,`token1Price`],Ht=[`fee`,`tvlUsd`,`apr1d`];function Ut(e){let t=kt(e);if(t===void 0)return F(`the row is not an object`);for(let e of[`token0`,`token1`,`poolRef`])if(typeof t[e]!=`string`)return F(`${e} is not a string`);if(t.contractVersion!==void 0&&t.contractVersion!==`v2`)return F(`contractVersion is not v2`);let n={...t};for(let e of Ht){let r=t[e];if(r===void 0&&e!==`fee`)continue;let i=At(r);if(i===void 0)return F(`${e} is not a number`);n[e]=i}for(let e of Bt)if(t[e]!==void 0&&typeof t[e]!=`string`)return F(`${e} is not a string`);for(let e of Vt){let n=t[e];if(n!==void 0&&(typeof n!=`number`||!Number.isFinite(n)))return F(`${e} is not a number`)}return Dt(n)}const H=t=>new e(t).toFixed();function Wt(e){j(e.fee),M(e.token0,e.token1),T(e.uniqueKey);let t={token0:e.token0,token1:e.token1,fee:e.fee,uniqueKey:e.uniqueKey};if(`exactIn`in e){let n=e.exactIn;if(n===void 0)throw new b(`EXACT_AMOUNT_REQUIRED`,{field:`exactIn`});A(n,`exactIn`),t[e.tokenInIsToken0?`sell0Qty`:`sell1Qty`]=H(n),e.amountOutMinimum!==void 0&&(A(e.amountOutMinimum,`amountOutMinimum`,!0),t.amountOutMinimum=H(e.amountOutMinimum))}else{let n=e.exactOut;if(n===void 0)throw new b(`EXACT_AMOUNT_REQUIRED`,{field:`exactOut`});A(n,`exactOut`),t[e.tokenInIsToken0?`buy1Qty`:`buy0Qty`]=H(n),e.amountInMaximum!==void 0&&(A(e.amountInMaximum,`amountInMaximum`,!0),t.amountInMaximum=H(e.amountInMaximum))}return e.priceLimit!==void 0&&(A(e.priceLimit,`priceLimit`),t.priceLimit=H(e.priceLimit)),t}function Gt(e){j(e.fee),M(e.token0,e.token1),k(e.tickLower,e.tickUpper,e.fee),T(e.uniqueKey)}function Kt(e){Gt(e);let t=Zt(e.depositQuantityToken0,e.depositQuantityToken1,`depositQuantityToken0`,`depositQuantityToken1`);if(t===void 0)throw new b(`EXACTLY_ONE_OF_REQUIRED`,{first:`depositQuantityToken0`,second:`depositQuantityToken1`});return A(t.amount,t.name),{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper,uniqueKey:e.uniqueKey,[t.name]:H(t.amount)}}function qt(e){Gt(e);let t=Zt(e.withdrawalQuantityToken0,e.withdrawalQuantityToken1,`withdrawalQuantityToken0`,`withdrawalQuantityToken1`,!0);return t!==void 0&&A(t.amount,t.name),{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper,uniqueKey:e.uniqueKey,...t===void 0?{}:{[t.name]:H(t.amount)}}}function Jt(e){return Gt(e),{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper,uniqueKey:e.uniqueKey}}function Yt(t){j(t.fee),T(t.uniqueKey),M(t.token0Symbol,t.token1Symbol);for(let e of[t.token0Symbol,t.token1Symbol])if(!Qe(e))throw new b(`INVALID_TRADING_SYMBOL`,{symbol:e});for(let e of[t.token0Key,t.token1Key])Xt(e);let n=Zt(t.startingPrice,t.startingSqrtPrice,`startingPrice`,`startingSqrtPrice`);if(n===void 0)throw new b(`EXACTLY_ONE_OF_REQUIRED`,{first:`startingPrice`,second:`startingSqrtPrice`});if(typeof n.amount==`number`)throw new b(`AMOUNT_IS_JS_NUMBER`,{field:n.name});let r=new e(n.amount);if(!r.isFinite()||r.isLessThanOrEqualTo(0))throw new b(`INVALID_STARTING_PRICE`,{value:String(n.amount)});return{token0Key:t.token0Key,token1Key:t.token1Key,fee:t.fee,[n.name]:r.toFixed(),token0Symbol:t.token0Symbol,token1Symbol:t.token1Symbol,uniqueKey:t.uniqueKey,...t.name===void 0||t.name===``?{}:{name:t.name},...t.isPrivate===void 0?{}:{isPrivate:t.isPrivate},...t.privateAccess===void 0?{}:{privateAccess:t.privateAccess}}}function Xt(e){for(let t of[`collection`,`category`,`type`,`additionalKey`])if(typeof e[t]!=`string`||e[t].length===0)throw new b(`INCOMPLETE_TOKEN_CLASS_KEY`,{compositeKey:[e.collection,e.category,e.type,e.additionalKey].join(`$`),part:t})}function Zt(e,t,n,r,i=!1){if(e!==void 0&&t!==void 0)throw i?new b(`AT_MOST_ONE_OF_ALLOWED`,{first:n,second:r}):new b(`EXACTLY_ONE_OF_REQUIRED`,{first:n,second:r});if(e!==void 0)return{name:n,amount:e};if(t!==void 0)return{name:r,amount:t}}function U(e,t,n){return new b(`INVALID_DTO`,{method:e,field:t,expected:n})}function Qt(e,t){let n=n=>{let r=t[n];if(typeof r!=`string`)throw U(e,n,`string`);return r},r=n=>{let r=t[n];if(typeof r!=`number`)throw U(e,n,`number`);return r},i=e=>t[e]===void 0?void 0:n(e),a=n=>{let r=t[n];if(typeof r!=`object`||!r)throw U(e,n,`class_key`);let i=r,a=t=>{if(typeof i[t]!=`string`)throw U(e,`${n}.${t}`,`string`);return i[t]};return{collection:a(`collection`),category:a(`category`),type:a(`type`),additionalKey:a(`additionalKey`)}},o=()=>({token0:n(`token0`),token1:n(`token1`),fee:r(`fee`)}),s=n(`uniqueKey`),c=()=>({...o(),uniqueKey:s,tickLower:r(`tickLower`),tickUpper:r(`tickUpper`)});switch(e){case`RequestTrade`:{let r=[`sell0Qty`,`sell1Qty`,`buy0Qty`,`buy1Qty`].filter(e=>t[e]!==void 0),[a]=r;if(r.length!==1||a===void 0)throw U(e,`sell0Qty|sell1Qty|buy0Qty|buy1Qty`,`exactly_once`);let c=a===`sell0Qty`||a===`buy1Qty`,l={...o(),uniqueKey:s,tokenInIsToken0:c},u=i(`priceLimit`);return a.startsWith(`sell`)?Wt({...l,exactIn:n(a),amountOutMinimum:i(`amountOutMinimum`),priceLimit:u}):Wt({...l,exactOut:n(a),amountInMaximum:i(`amountInMaximum`),priceLimit:u})}case`AddLiquidity`:{let e=i(`depositQuantityToken0`),t=i(`depositQuantityToken1`);return Kt({...c(),...e===void 0?{depositQuantityToken1:t}:{depositQuantityToken0:e}})}case`RemoveLiquidity`:return qt({...c(),withdrawalQuantityToken0:i(`withdrawalQuantityToken0`),withdrawalQuantityToken1:i(`withdrawalQuantityToken1`)});case`CollectPositionFees`:return Jt(c());case`CreatePool`:{let o=i(`startingPrice`),c=i(`startingSqrtPrice`),l=t.privateAccess;if(l!==void 0&&(!Array.isArray(l)||l.some(e=>typeof e!=`string`)))throw U(e,`privateAccess`,`string_array`);if(t.isPrivate!==void 0&&typeof t.isPrivate!=`boolean`)throw U(e,`isPrivate`,`boolean`);return Yt({token0Key:a(`token0Key`),token1Key:a(`token1Key`),token0Symbol:n(`token0Symbol`),token1Symbol:n(`token1Symbol`),fee:r(`fee`),uniqueKey:s,name:i(`name`),isPrivate:t.isPrivate,privateAccess:l,...o===void 0?{startingSqrtPrice:c}:{startingPrice:o}})}}}function W(e,t){let n=Qt(e,t);if(JSON.stringify(n)!==JSON.stringify(t))throw new b(`DTO_NOT_CANONICAL`,{method:e})}function $t(e){return{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper}}var en=class{constructor(e,t,n,r,i={}){this.gateway=e,this.symbols=t,this.signer=n,this.walletAddress=r,y(this,`http`,void 0),y(this,`uniqueKeyPrefix`,void 0),y(this,`onInvalidEntry`,void 0),this.http=new P(e.httpRequestor,e.requestTimeoutMs??3e4,e.wire),this.uniqueKeyPrefix=ue(i.uniqueKeyPrefix),this.onInvalidEntry=i.onInvalidEntry}async getUserPositions(e){return Ot(`positions`,(await this.get(`/positions`,{user:e})).data,an,this.onInvalidEntry)}async getPosition(e,t){let n=await this.getNullable(`/position`,await this.positionParams(e),t);return n===null?null:on(n.data)}async readPosition(e,t){try{let n=await this.getPosition(e,t);return n===null?{kind:`not_found`}:{kind:`found`,data:n}}catch(e){if(t?.aborted===!0)throw e;return{kind:`unknown`,error:S(e)?e:new b(`REQUEST_FAILED`,{operation:`position`},{cause:e})}}}async positionParams(e){if(this.symbols.passthrough===!0)return{token0:z(e.token0),token1:z(e.token1),fee:`${e.fee}`,owner:e.owner,tickLower:`${e.tickLower}`,tickUpper:`${e.tickUpper}`};let t=await this.symbols.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);return{token0:t.token0.symbol,token1:t.token1.symbol,fee:`${e.fee}`,owner:e.owner,tickLower:`${n.tickLower}`,tickUpper:`${n.tickUpper}`}}async estimateAddLiquidity(t){return A(t.amount,`amount`),(await this.get(`/add-liq-estimate`,{token0:z(t.token0),token1:z(t.token1),fee:`${t.fee}`,tickLower:`${t.tickLower}`,tickUpper:`${t.tickUpper}`,amount:new e(t.amount).toFixed(),amountIsToken0:String(t.amountIsToken0)})).data}async estimateRemoveLiquidity(t){return A(t.liquidity,`liquidity`),(await this.get(`/remove-liq-estimate`,{token0:z(t.token0),token1:z(t.token1),fee:`${t.fee}`,tickLower:`${t.tickLower}`,tickUpper:`${t.tickUpper}`,liquidity:new e(t.liquidity).toFixed()})).data}async addLiquidityByTicks(e){return this.submitAddLiquidity(await this.buildAddLiquidity(e))}async buildAddLiquidity(e){j(e.fee);let t=await this.symbols.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);k(n.tickLower,n.tickUpper,e.fee),A(e.amount,`amount`);let r={token0:t.token0.symbol,token1:t.token1.symbol,fee:e.fee,tickLower:n.tickLower,tickUpper:n.tickUpper,uniqueKey:this.uniqueKeyFor(e.uniqueKey)};return t.flipped===e.amountIsToken0?Kt({...r,depositQuantityToken1:e.amount}):Kt({...r,depositQuantityToken0:e.amount})}async submitAddLiquidity(e){return W(`AddLiquidity`,e),this.submit(`AddLiquidity`,e,{kind:`add`,identity:$t(e)})}async addLiquidityByPrice(t){j(t.fee),this.rejectNumber(t.minPrice,`minPrice`),this.rejectNumber(t.maxPrice,`maxPrice`);let n=new e(t.minPrice),r=new e(t.maxPrice);if(!n.isFinite()||!r.isFinite()||n.isLessThanOrEqualTo(0)||r.isLessThanOrEqualTo(0))throw new b(`INVALID_PRICE_BOUNDS`,{minPrice:String(t.minPrice),maxPrice:String(t.maxPrice)});if(n.isGreaterThan(r))throw new b(`PRICE_BOUNDS_ORDER`,{minPrice:String(t.minPrice),maxPrice:String(t.maxPrice)});let i=this.tickSpacing(t.fee),a=Ve(Be(n),i),o=He(Be(r),i);return this.addLiquidityByTicks({token0:t.token0,token1:t.token1,fee:t.fee,tickLower:a,tickUpper:o,amount:t.amount,amountIsToken0:t.amountIsToken0,uniqueKey:t.uniqueKey})}async removeLiquidity(e){return this.submitRemoveLiquidity(await this.buildRemoveLiquidity(e))}async buildRemoveLiquidity(e){j(e.fee);let t=await this.symbols.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);if(k(n.tickLower,n.tickUpper,e.fee),e.amount0!==void 0&&e.amount1!==void 0)throw new b(`AT_MOST_ONE_OF_ALLOWED`,{first:`amount0`,second:`amount1`});e.amount0!==void 0&&A(e.amount0,`amount0`),e.amount1!==void 0&&A(e.amount1,`amount1`);let[r,i]=t.flipped?[e.amount1,e.amount0]:[e.amount0,e.amount1];return qt({token0:t.token0.symbol,token1:t.token1.symbol,fee:e.fee,tickLower:n.tickLower,tickUpper:n.tickUpper,uniqueKey:this.uniqueKeyFor(e.uniqueKey),withdrawalQuantityToken0:r,withdrawalQuantityToken1:i})}async submitRemoveLiquidity(e){W(`RemoveLiquidity`,e);let t=e.withdrawalQuantityToken0===void 0&&e.withdrawalQuantityToken1===void 0;return this.submit(`RemoveLiquidity`,e,{kind:t?`removeFull`:`removePartial`,identity:$t(e)})}async collectPositionFees(e){return this.submitCollectPositionFees(await this.buildCollectPositionFees(e))}async buildCollectPositionFees(e){j(e.fee);let t=await this.symbols.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);return k(n.tickLower,n.tickUpper,e.fee),Jt({token0:t.token0.symbol,token1:t.token1.symbol,fee:e.fee,tickLower:n.tickLower,tickUpper:n.tickUpper,uniqueKey:this.uniqueKeyFor(e.uniqueKey)})}async submitCollectPositionFees(e){return W(`CollectPositionFees`,e),this.submit(`CollectPositionFees`,e,{kind:`collect`,identity:$t(e)})}async createPool(e){return this.submitCreatePool(await this.buildCreatePool(e))}async buildCreatePool(t){let n=t.startingPrice!==void 0;if(n===(t.startingSqrtPrice!==void 0))throw new b(`EXACTLY_ONE_OF_REQUIRED`,{first:`startingPrice`,second:`startingSqrtPrice`});j(t.fee);let[r,i]=await Promise.all([this.resolveCreateToken(t.token0,t.token0Symbol),this.resolveCreateToken(t.token1,t.token1Symbol)]),a=r.symbol>i.symbol,[o,s]=a?[i,r]:[r,i],c=n?t.startingPrice:t.startingSqrtPrice;this.rejectNumber(c,n?`startingPrice`:`startingSqrtPrice`);let l=new e(c);if(!l.isFinite()||l.isLessThanOrEqualTo(0))throw new b(`INVALID_STARTING_PRICE`,{value:String(c)});let u=a?new e(1).dividedBy(l):l,d={token0Key:o.classKey,token1Key:s.classKey,token0Symbol:o.symbol,token1Symbol:s.symbol,fee:t.fee,uniqueKey:this.uniqueKeyFor(t.uniqueKey),name:t.name,isPrivate:t.isPrivate,privateAccess:t.privateAccess};return Yt(n?{...d,startingPrice:u}:{...d,startingSqrtPrice:u})}async submitCreatePool(e){W(`CreatePool`,e);let t=await this.submit(`CreatePool`,e,{kind:`createPool`,token0:e.token0Symbol,token1:e.token1Symbol,fee:e.fee});return this.symbols.invalidate?.(),t}async submit(e,t,n){if(this.signer===void 0)throw b.noSignerError();let r=await this.signer.signObject(e,t),i=this.walletAddress===void 0?{}:{walletAddress:this.walletAddress},a=this.walletAddress,o=this.buildPositionConfirmation(n,a),s={...i,...o===void 0?{}:{positionConfirmation:o}};return this.gateway.submit(e,r,s)}buildPositionConfirmation(t,n){if(t===void 0)return;if(t.kind===`createPool`){let{token0:e,token1:n,fee:r}=t;return async t=>await this.getNullable(`/pool`,{token0:e,token1:n,fee:`${r}`},t)===null?{confirmed:!1}:{confirmed:!0,position:null}}if(n===void 0)return;let{kind:r,identity:i}=t,a;return async t=>{let o=await this.getPosition({...i,owner:n},t);if(a===void 0)return a={liquidity:new e(o?.liquidity??0),fees:new e(o?.fees0??0).plus(new e(o?.fees1??0))},r===`removeFull`&&o===null?{confirmed:!0,position:null}:{confirmed:!1};switch(r){case`add`:return o!==null&&new e(o.liquidity).isGreaterThan(a.liquidity)?{confirmed:!0,position:o}:{confirmed:!1};case`removePartial`:return o!==null&&new e(o.liquidity).isLessThan(a.liquidity)?{confirmed:!0,position:o}:{confirmed:!1};case`removeFull`:return o===null?{confirmed:!0,position:null}:{confirmed:!1};case`collect`:{if(o===null)return{confirmed:!1};let t=new e(o.fees0??0).plus(new e(o.fees1??0));return t.isLessThan(a.fees)||a.fees.isZero()&&t.isZero()?{confirmed:!0,position:o}:{confirmed:!1}}}}}async get(e,t,n){return this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,e,t,n===void 0?void 0:{signal:n})}async getNullable(e,t,n){try{return await this.get(e,t,n)}catch(e){if(this.isNotFound(e))return null;throw e}}isNotFound(e){return e instanceof b&&e.status===404}canonicalTicks(e,t,n){return n?{tickLower:-t,tickUpper:-e}:{tickLower:e,tickUpper:t}}tickSpacing(e){let t=Ne[e];if(t===void 0)throw new b(`INVALID_FEE`,{field:`fee`,value:e,allowed:h});return t}rejectNumber(e,t){if(typeof e==`number`)throw new b(`AMOUNT_IS_JS_NUMBER`,{field:t})}uniqueKeyFor(e){return e===void 0?fe(this.uniqueKeyPrefix):(T(e),e)}async resolveCreateToken(e,t){try{let n=typeof e==`object`?L(e):e,r=await this.symbols.resolve(n);if(t!==void 0&&t!==``&&t!==r.symbol)throw new b(`SYMBOL_DISAGREES_WITH_REGISTRY`,{token:z(e),suppliedSymbol:t,registeredSymbol:r.symbol});let i=this.tryParseClassKey(e);if(i===void 0&&r.collection===``)throw new b(`CREATE_POOL_NEEDS_CLASS_KEY`,{token:z(e)});return{symbol:r.symbol,classKey:i??R({collection:r.collection,category:r.category,type:r.type,additionalKey:r.additionalKey})}}catch(n){if(!(n instanceof b)||n.code!==`UNKNOWN_TOKEN`)throw n;let r;try{r=R(e)}catch{throw n}if(t===void 0||t===``)throw new b(`TOKEN_SYMBOL_NOT_REGISTERED`,{token:z(e)});if(!Qe(t))throw new b(`INVALID_TRADING_SYMBOL`,{symbol:t});return{symbol:t,classKey:r}}}tryParseClassKey(e){try{return R(e)}catch{return}}};const tn=[`token0Symbol`,`token1Symbol`,`owner`,`liquidity`,`amount0`,`amount1`],nn=[`fee`,`tickLower`,`tickUpper`],rn=[`token0CompositeKey`,`token1CompositeKey`,`token0Image`,`token1Image`,`sqrtPrice`,`fees0`,`fees1`];function an(e){let t=kt(e);if(t===void 0)return F(`the row is not an object`);for(let e of tn)if(typeof t[e]!=`string`)return F(`${e} is not a string`);for(let e of nn){let n=t[e];if(typeof n!=`number`||!Number.isFinite(n))return F(`${e} is not a number`)}if(typeof t.inRange!=`boolean`)return F(`inRange is not a boolean`);for(let e of rn)if(t[e]!==void 0&&typeof t[e]!=`string`)return F(`${e} is not a string`);let n=t.currentTick;if(n!==void 0&&(typeof n!=`number`||!Number.isFinite(n)))return F(`currentTick is not a number`);let r=t.poolRef??t.pool??``;if(typeof r!=`string`)return F(`pool is not a string`);let i=Object.fromEntries([...rn,`currentTick`].flatMap(e=>t[e]===void 0?[]:[[e,t[e]]]));return Dt({token0Symbol:t.token0Symbol,token1Symbol:t.token1Symbol,fee:t.fee,tickLower:t.tickLower,tickUpper:t.tickUpper,liquidity:t.liquidity,amount0:t.amount0,amount1:t.amount1,inRange:t.inRange,pool:r,owner:t.owner,...i})}function on(e){let t=an(e);if(t.ok)return t.value;throw new b(`INVALID_POSITION_RESPONSE`,{reason:t.reason},{body:e})}var sn=class{constructor(e,t){this.gateway=e,this.symbols=t,y(this,`http`,void 0),this.http=new P(e.httpRequestor,e.requestTimeoutMs??3e4,e.wire)}async quoteExactInput(e,t,n,r){return A(n,`amountIn`),this.quote(e,t,{amountIn:vn(n)},r)}async quoteExactOutput(e,t,n,r){return A(n,`amountOut`),this.quote(e,t,{amountOut:vn(n)},r)}async quote(e,t,n,r){_n(r);let i={tokenIn:await V(this.symbols,e),tokenOut:await V(this.symbols,t),...n};r!==void 0&&(i.fee=String(r));try{return cn((await this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,`/quote`,i)).data)}catch(n){throw gn(n,e,t,r,{tokenIn:i.tokenIn??``,tokenOut:i.tokenOut??``})}}};function cn(t){if(!dn(t))throw new b(`INVALID_CHAIN_RESPONSE`,{resource:`quote`},{body:t});let n=t,r=n.currentPrice===void 0?un(n.currentSqrtPrice,n.tokenInIsToken0):new e(n.currentPrice),i=n.newPrice===void 0?un(n.newSqrtPrice,n.tokenInIsToken0):new e(n.newPrice),a=i.minus(r).dividedBy(r);return{contractVersion:n.contractVersion,fee:n.fee,amountIn:n.amountIn,amountOut:n.amountOut,...n.currentSqrtPrice===void 0?{}:{currentSqrtPrice:n.currentSqrtPrice},...n.newSqrtPrice===void 0?{}:{newSqrtPrice:n.newSqrtPrice},feeTier:n.fee,newTick:n.newTick,tradingFees:n.tradingFees,protocolFees:n.protocolFees,totalFees:n.totalFees,feeTokenSymbol:n.feeTokenSymbol,token0Symbol:n.token0Symbol,token1Symbol:n.token1Symbol,tokenInIsToken0:n.tokenInIsToken0,currentPrice:r,newPrice:i,priceImpact:a}}const ln=e.clone({DECIMAL_PLACES:60});function un(e,t){let n=new ln(e).pow(2);return t?n:new ln(1).dividedBy(n)}function dn(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.contractVersion===`v2`&&typeof t.fee==`number`&&Number.isFinite(t.fee)&&[`amountIn`,`amountOut`,`tradingFees`,`protocolFees`,`totalFees`,`feeTokenSymbol`,`token0Symbol`,`token1Symbol`].every(e=>typeof t[e]==`string`)&&typeof t.newTick==`number`&&Number.isInteger(t.newTick)&&typeof t.tokenInIsToken0==`boolean`&&fn(t.currentSqrtPrice)&&fn(t.newSqrtPrice)&&fn(t.currentPrice)&&fn(t.newPrice)&&(t.currentSqrtPrice!==void 0||t.currentPrice!==void 0)&&(t.newSqrtPrice!==void 0||t.newPrice!==void 0)}function fn(t){if(t===void 0)return!0;if(typeof t!=`string`)return!1;try{let n=new e(t);return n.isFinite()&&n.isGreaterThan(0)}catch{return!1}}const pn=/no pool|no pools|pool does not exist/iu,mn=/Token (\S+) has no trading symbol on the new DEX contract/u;function hn(e,t,n,r){return e===t.tokenIn?n:e===t.tokenOut?r:e}function gn(e,t,n,r,i){if(S(e)){let a=f(e)??``,o=mn.exec(a)?.[1];return o===void 0?e.status===404||pn.test(a)?b.noPoolAvailableError(t,n,r,e):e.status===400&&/insufficient liquidity/iu.test(a)?b.insufficientLiquidityError(t,n,r,e):e:b.unknownTokenError(hn(o,i,t,n),e)}return new b(`REQUEST_FAILED`,{operation:`quote`},{cause:e})}function _n(e){if(e!==void 0&&!Pe.some(t=>Number(t)===Number(e)))throw new b(`INVALID_FEE`,{field:`fee`,value:Number(e),allowed:h})}function vn(t){return new e(t).toFixed()}function yn(e){return e===503?`unavailable`:e===400?`disabled`:`unknown`}function bn(e,t){return t===`SHADOW_UNAVAILABLE`?`unavailable`:t===`SHADOW_RELAY_REJECTED`?`rejected`:t===`SHADOW_DISABLED`||t===`SHADOW_UNSUPPORTED_TYPE`?`disabled`:yn(e)}function xn(e,t,n){let{httpStatus:r,body:i}=n,a=Sn(i);if(r>=200&&r<300&&a?.error===!1){let n=Sn(a.data),o=typeof n?.transactionId==`string`?n.transactionId:void 0;if(e===`RequestTrade`){let e=t.uniqueKey;if(n?.mode!==`queued`||typeof e!=`string`||n.uniqueKey!==e)throw new b(`SHADOW_NOT_QUEUED`,{},{status:r,body:i,...typeof e==`string`?{uniqueKey:e}:{}});return{ok:!0,bundleId:o??``,queued:{uniqueKey:e,requestTransactionId:o??null}}}if(n?.mode===`sync`)return{ok:!0,bundleId:o??``}}let o=bn(r,C(i,`code`));return o===`rejected`?{ok:!1,kind:`rejected`,retryable:!1,message:C(i,`message`)??``}:o===`unavailable`?{ok:!1,kind:o,retryable:!0}:{ok:!1,kind:o,retryable:!1}}function Sn(e){return typeof e==`object`&&e?e:void 0}function Cn(e){j(e.fee),M(e.token0Symbol,e.token1Symbol);let[t,n]=e.tokenInIsToken0?[e.token0Symbol,e.token1Symbol]:[e.token1Symbol,e.token0Symbol];return{tokenIn:t,tokenOut:n,fee:e.fee,pool:{token0:e.token0Symbol,token1:e.token1Symbol}}}var wn=class{constructor(e,t,n,r,i={}){this.gateway=e,this.symbols=t,this.signer=n,this.walletAddress=r,y(this,`uniqueKeyPrefix`,void 0),this.uniqueKeyPrefix=ue(i.uniqueKeyPrefix)}async swap(e,t,n,r,i){return this.submitSwap(await this.buildSwap(e,t,n,r,i))}async swapShadow(e,t,n,r,i){return this.submitSwapShadow(await this.buildSwap(e,t,n,r,i))}async buildSwap(e,t,n,r,i){j(n);let a=i?.uniqueKey??fe(this.uniqueKeyPrefix);T(a);let o=await B(this.symbols,e),s=await B(this.symbols,t),c=this.orientPool(o,s,i?.pool);return Wt({token0:c.token0,token1:c.token1,fee:n,tokenInIsToken0:o===c.token0,uniqueKey:a,...r})}async submitSwap(e){let t=await this.signRequestTrade(e);return this.gateway.submit(`RequestTrade`,t,this.submitOptions())}async submitSwapShadow(e){let t=await this.signRequestTrade(e);return xn(`RequestTrade`,t,await this.gateway.submitShadow(`RequestTrade`,t,this.submitOptions()))}submitOptions(){return this.walletAddress===void 0?{}:{walletAddress:this.walletAddress}}async signRequestTrade(e){if(W(`RequestTrade`,e),this.signer===void 0)throw b.noSignerError();return this.signer.signObject(`RequestTrade`,e)}orientPool(e,t,n){if(n===void 0)return jt(I(e,t));if(!(e===n.token0&&t===n.token1||e===n.token1&&t===n.token0))throw new b(`POOL_MISMATCH`,{tokenIn:e,tokenOut:t,poolToken0:n.token0,poolToken1:n.token1});return{token0:n.token0,token1:n.token1}}async confirmSwap(e,t){return T(e),new dt({method:`RequestTrade`,uniqueKey:e,transactionId:null,mode:`queued`,result:void 0,dexBackendBaseUrl:this.gateway.dexBackendBaseUrl,httpRequestor:this.gateway.httpRequestor,requestTimeoutMs:this.gateway.requestTimeoutMs,wire:this.gateway.wire}).confirm({initialDelayMs:0,...t})}},Tn=class{constructor(e){y(this,`dexBackendBaseUrl`,void 0),y(this,`chainCallTimeoutMs`,void 0),y(this,`signer`,void 0),y(this,`walletAddress`,void 0),y(this,`gateway`,void 0),y(this,`symbols`,void 0),y(this,`quoting`,void 0),y(this,`pools`,void 0),y(this,`positions`,void 0),y(this,`swaps`,void 0),y(this,`assets`,void 0),y(this,`fees`,void 0),y(this,`dexBackendWsUrl`,void 0),y(this,`webSocketImpl`,void 0),y(this,`streamApiKey`,void 0),y(this,`streamClient`,void 0);let t=yt[e?.env??`prod`];this.dexBackendBaseUrl=En(e?.dexBackendBaseUrl??t.dexBackendBaseUrl),this.chainCallTimeoutMs=e?.chainCallTimeoutMs??3e4,this.signer=e?.signer,this.walletAddress=e?.walletAddress;let n=new P(e?.httpRequestor,this.chainCallTimeoutMs,e?.wire);this.gateway=new ft({dexBackendBaseUrl:this.dexBackendBaseUrl,chainCallTimeoutMs:this.chainCallTimeoutMs,...e?.wire===void 0?{}:{wire:e.wire},...e?.httpRequestor===void 0?{}:{httpRequestor:e.httpRequestor},...this.walletAddress===void 0?{}:{walletAddress:this.walletAddress}});let r={onInvalidEntry:e?.onInvalidEntry};this.symbols=new Mt(this.gateway,r);let i=e?.symbolResolution===`canonical`?new Ft:this.symbols;this.quoting=new sn(this.gateway,i),this.pools=new It(this.gateway,i,r);let a={uniqueKeyPrefix:e?.uniqueKeyPrefix,...r};this.positions=new en(this.gateway,i,this.signer,this.walletAddress,a),this.swaps=new wn(this.gateway,i,this.signer,this.walletAddress,a),this.assets=new $e(this.dexBackendBaseUrl,n),this.fees=new lt(this.gateway,this.signer),this.dexBackendWsUrl=e?.dexBackendWsUrl??(e?.dexBackendBaseUrl===void 0?t.dexBackendWsUrl:`${this.dexBackendBaseUrl.replace(/^http/u,`ws`)}/ws`),this.webSocketImpl=e?.webSocketImpl,this.streamApiKey=e?.streamApiKey}get stream(){return this.streamClient??(this.streamClient=new Et({url:this.dexBackendWsUrl,...this.webSocketImpl===void 0?{}:{webSocketImpl:this.webSocketImpl},...this.streamApiKey===void 0?{}:{apiKey:this.streamApiKey}})),this.streamClient}};function En(e){return e.replace(/\/$/u,``)}const Dn=`pendingSwaps.v1`,On=6048e5,kn=[`expired`,`invalid_unique_key`];var An=class{constructor(e,t={}){this.storage=e,y(this,`storageKey`,void 0),y(this,`darkFlagField`,void 0),y(this,`insertAt`,void 0),y(this,`listOrder`,void 0),y(this,`now`,void 0),y(this,`onPrune`,void 0),y(this,`queue`,Promise.resolve()),y(this,`toStored`,e=>({uniqueKey:e.uniqueKey,requestTransactionId:e.requestTransactionId,wallet:e.wallet,token0Symbol:e.token0Symbol,token1Symbol:e.token1Symbol,[this.darkFlagField]:e.isDarkSwap,createdAt:e.createdAt})),this.storageKey=t.storageKey??`pendingSwaps.v1`,this.darkFlagField=t.darkFlagField??`isDarkSwap`,this.insertAt=t.insertAt??`end`,this.listOrder=t.listOrder??`stored`,this.now=t.now??Date.now,this.onPrune=t.onPrune}remember(e){return w(e.uniqueKey)?this.enqueue(async t=>{let n=(await this.read(t)).filter(t=>t.uniqueKey!==e.uniqueKey).map(this.toStored),r=this.toStored(e);await t.set(this.storageKey,this.insertAt===`end`?[...n,r]:[r,...n])}):(this.report([{swap:e,reason:`invalid_unique_key`}]),Promise.resolve())}forget(e){return this.enqueue(async t=>{let n=await this.read(t);await t.set(this.storageKey,n.filter(t=>t.uniqueKey!==e).map(this.toStored))})}async list(e){return await this.enqueue(async t=>{let n=await this.read(t),r=this.now(),i=[],a=[];for(let e of n){let t=this.pruneReasonOf(e,r);t===void 0?a.push(e):i.push({swap:e,reason:t})}i.length>0&&(await t.set(this.storageKey,a.map(this.toStored)),this.report(i));let o=a.filter(t=>t.wallet===e);return this.listOrder===`newest-first`?o.sort((e,t)=>t.createdAt-e.createdAt):o})??[]}pruneReasonOf(e,t){return w(e.uniqueKey)?t-e.createdAt<6048e5?void 0:`expired`:`invalid_unique_key`}report(e){for(let t of e)try{this.onPrune?.(t)}catch{}}enqueue(e){let t=this.storage;if(t===void 0)return Promise.resolve(void 0);let n=this.queue.then(async()=>{try{return await e(t)}catch{return}});return this.queue=n,n}async read(e){let t=await e.get(this.storageKey);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=this.fromStored(e);t!==void 0&&n.push(t)}return n}fromStored(e){if(typeof e!=`object`||!e)return;let t=e,n=t[this.darkFlagField],{uniqueKey:r,requestTransactionId:i,wallet:a,token0Symbol:o,token1Symbol:s,createdAt:c}=t;if(!(typeof r!=`string`||typeof i!=`string`&&i!==null||typeof a!=`string`||typeof o!=`string`||typeof s!=`string`||typeof n!=`boolean`||typeof c!=`number`||!Number.isFinite(c)))return{uniqueKey:r,requestTransactionId:i,wallet:a,token0Symbol:o,token1Symbol:s,isDarkSwap:n,createdAt:c}}};function jn(e,t){let n={};n[e]=[];function r(e){let t=n[e];
|
|
1
|
+
import e from"bignumber.js";import{Decimal as t}from"decimal.js";import n from"debug";import{secp256k1 as r}from"@noble/curves/secp256k1";import{keccak_256 as i}from"@noble/hashes/sha3";import{bytesToHex as a}from"@noble/hashes/utils";function o(e,t,n){let r=Math.max(0,e?.timeoutMs??6e4),i=Math.max(500,e?.pollIntervalMs??2e3),a=Math.max(0,e?.initialDelayMs??t),o=e?.signal,u=Date.now()+r,d=!0,f=0;return{async waitForRead(e){if(s(o,n),d){d=!1;let e=Math.max(0,u-Date.now());return await c(Math.min(a,e),o,n),!0}let t=Math.min(8e3,i*2**Math.min(f,5));f+=1;let r=e===void 0?l(t):Math.max(0,e);return Date.now()+r>u?!1:(await c(r,o,n),!0)}}}function s(e,t){if(e?.aborted===!0)throw t(e.reason)}function c(e,t,n){return t?.aborted===!0?Promise.reject(n(t.reason)):new Promise((r,i)=>{let a=()=>{clearTimeout(o),i(n(t?.reason))},o=setTimeout(()=>{t?.removeEventListener(`abort`,a),r()},e);t?.addEventListener(`abort`,a,{once:!0})})}function l(e){return Math.max(0,Math.round(e*(.9+Math.random()*.2)))}function u(e,t){if(typeof e!=`object`||!e)return;let n=e[t];return typeof n==`string`&&n!==``?n:void 0}function d(e){let t=typeof e==`object`&&e?e.error:void 0;return u(e,`message`)??u(e,`Message`)??u(t,`message`)??u(t,`Message`)??``}function f(e){let t=e.params.serverMessage;if(typeof t==`string`&&t!==``)return t;let n=d(e.body);return n===``?void 0:n}const p=[`pre_send`,`in_flight`,`post_send`],m=[`wrong_length`,`bad_encoding`,`not_on_curve`,`no_key_provided`],h=[`timeout`,`transport`],g=[`user_rejected`,`failed`],_=`0,500,3000,10000`,v={HTTP_ERROR:{phase:`post_send`,template:`Unexpected HTTP error {status} from {url}.`,params:{status:`number`,url:`string`,serverMessage:`string`},unrendered:[`serverMessage`]},UPDATE_REQUIRED:{phase:`post_send`,template:`The backend refused this app version and requires an update (HTTP {status}); nothing was queued.`,params:{status:`number`}},REQUEST_TIMEOUT:{phase:`in_flight`,template:`Request to {url} timed out after {timeoutMs} ms.`,params:{url:`string`,timeoutMs:`number`}},TRANSPORT_ERROR:{phase:`in_flight`,template:`The request to {url} failed before the server answered.`,params:{url:`string`}},REQUEST_FAILED:{phase:`in_flight`,template:`The {operation} request failed.`,params:{operation:`string`}},INVALID_TIMEOUT:{phase:`pre_send`,template:`{field} must be a positive number of milliseconds, or Infinity for no timeout (got {value}).`,params:{field:`string`,value:`number`}},METHOD_NOT_SUPPORTED:{phase:`pre_send`,template:`The method {method} is not supported; swaps are queued through RequestTrade.`,params:{method:`string`}},SUBMISSION_OUTCOME_UNKNOWN:{phase:`in_flight`,template:`The submission outcome is unknown ({reason}): the request may have reached the gateway. Confirm before retrying.`,params:{reason:h}},GATEWAY_REPORTED_ERROR:{phase:`post_send`,template:`The gateway reported an error for this write: {serverMessage}`,params:{serverMessage:`string`}},GATEWAY_DATA_MISSING:{phase:`post_send`,template:`The gateway response is missing its data object.`,params:{}},GATEWAY_MODE_INVALID:{phase:`post_send`,template:`Gateway response must contain data.mode="sync" with data.result, or data.mode="queued".`,params:{}},GATEWAY_SYNC_REQUEST_TRADE:{phase:`post_send`,template:`The gateway executed RequestTrade synchronously, which this SDK refuses; RequestTrade must be queued.`,params:{}},MISSING_UNIQUE_KEY:{phase:`post_send`,template:`The gateway acknowledged RequestTrade without echoing its uniqueKey, so it cannot be tied to the signed request.`,params:{}},UNIQUE_KEY_MISMATCH:{phase:`post_send`,template:`Gateway response data.uniqueKey must match the signed RequestTrade uniqueKey.`,params:{}},SHADOW_NOT_QUEUED:{phase:`post_send`,template:`The swap backend did not queue the shadow request.`,params:{}},SHADOW_SUBMIT_NEEDS_WALLET_ADDRESS:{phase:`pre_send`,template:`A shadow submission needs a walletAddress (the X-Wallet-Address header): pass one to the GSwap constructor or to this call.`,params:{}},METHOD_NOT_ALLOWED:{phase:`post_send`,template:`The gateway does not expose this contract method: {serverMessage}`,params:{serverMessage:`string`}},SIGNATURE_INVALID:{phase:`post_send`,template:`The gateway could not verify the signature: {serverMessage}`,params:{serverMessage:`string`}},SIGNER_MISMATCH:{phase:`post_send`,template:`The recovered signer does not match an actor named by the operation: {serverMessage}`,params:{serverMessage:`string`}},DTO_INVALID:{phase:`post_send`,template:`The gateway rejected the DTO shape: {serverMessage}`,params:{serverMessage:`string`}},BOUNDS_VIOLATION:{phase:`post_send`,template:`The gateway rejected a numeric, tick, symbol or range bound: {serverMessage}`,params:{serverMessage:`string`}},SYMBOL_CONFLICT:{phase:`post_send`,template:`The CreatePool symbol is already owned by another class: {serverMessage}`,params:{serverMessage:`string`}},RATE_LIMITED:{phase:`post_send`,template:`The gateway rate-limited this signer: {serverMessage}`,params:{serverMessage:`string`}},CHAIN_DISPATCH_FAILED:{phase:`post_send`,template:`The chain dispatch failed (chain error key "{errorKey}"): {serverMessage}`,params:{errorKey:`string`,serverMessage:`string`}},GATEWAY_REJECTED:{phase:`post_send`,template:`Gateway rejected {gatewayCode}: {serverMessage}`,params:{gatewayCode:`string`,serverMessage:`string`}},CHAIN_REJECTED:{phase:`post_send`,template:`GalaChain error {errorKey}: {serverMessage}`,params:{errorKey:`string`,serverMessage:`string`}},INVALID_CHAIN_RESPONSE:{phase:`post_send`,template:`Backend returned an invalid {resource}.`,params:{resource:`string`}},INVALID_POSITION_RESPONSE:{phase:`post_send`,template:`Backend returned an invalid position ({reason}).`,params:{reason:`string`}},CONFIRMATION_TIMEOUT:{phase:`post_send`,template:`Transaction confirmation timed out; the trade may still apply. Confirm the same uniqueKey again later instead of resubmitting.`,params:{}},CONFIRMATION_ABORTED:{phase:`post_send`,template:`Transaction confirmation was aborted.`,params:{}},CONFIRMATION_FAILED:{phase:`post_send`,template:`Transaction confirmation failed with HTTP {status}.`,params:{status:`number`,serverMessage:`string`},unrendered:[`serverMessage`]},CONFIRMATION_MALFORMED:{phase:`post_send`,template:`Transaction confirmation returned a malformed body.`,params:{}},CONFIRMATION_KEY_MISMATCH:{phase:`post_send`,template:`Apply result key did not match the requested key.`,params:{}},NO_SIGNER:{phase:`pre_send`,template:`This method requires a signer. Please provide a signer to the GSwap constructor.`,params:{}},NO_WALLET_ADDRESS:{phase:`post_send`,template:`Cannot confirm this write: no walletAddress was provided to the GSwap constructor, so the resulting position cannot be looked up to confirm it landed on chain.`,params:{}},NO_POOL_AVAILABLE:{phase:`post_send`,template:`No pool is available for {tokenIn}/{tokenOut} (fee tier {fee}).`,params:{tokenIn:`string`,tokenOut:`string`,fee:`string`}},INSUFFICIENT_LIQUIDITY:{phase:`post_send`,template:`The selected pool has insufficient liquidity for {tokenIn}/{tokenOut} (fee tier {fee}).`,params:{tokenIn:`string`,tokenOut:`string`,fee:`string`}},UNKNOWN_TOKEN:{phase:`pre_send`,template:`Token {token} is not registered on the DEX contract: it has no trading symbol.`,params:{token:`string`}},SYMBOL_NOT_FOUND:{phase:`pre_send`,template:`Token {token} could not be resolved to a trading symbol.`,params:{token:`string`}},STREAM_API_KEY_UNUSABLE:{phase:`pre_send`,template:`GdexStreamConfig.apiKey needs a non-empty key and an explicit webSocketImpl that accepts upgrade headers as its third argument (the "ws" package, or React Native). A browser WebSocket cannot send x-api-key, so the key would be silently dropped.`,params:{}},STREAM_WEBSOCKET_UNAVAILABLE:{phase:`pre_send`,template:`GdexStreamService requires a standards-compatible WebSocket constructor. Node.js versions before 22 must provide one with config.webSocketImpl (for example, from the "ws" package).`,params:{}},STREAM_NOT_CONNECTED:{phase:`pre_send`,template:`GDEX stream is not connected. Call connect() first.`,params:{}},STREAM_DISCONNECTED:{phase:`in_flight`,template:`GDEX stream disconnected.`,params:{}},STREAM_REQUEST_TIMEOUT:{phase:`in_flight`,template:`GDEX request "{method}" timed out after {timeoutMs} ms.`,params:{method:`string`,timeoutMs:`number`}},STREAM_CONNECT_FAILED:{phase:`in_flight`,template:`Failed to connect to GDEX stream at {url}.`,params:{url:`string`}},STREAM_CLOSED_BEFORE_CONNECT:{phase:`in_flight`,template:`GDEX stream closed before connecting (code {closeCode}).`,params:{closeCode:`number`}},STREAM_CONNECTION_CLOSED:{phase:`in_flight`,template:`GDEX stream connection closed (code {closeCode}).`,params:{closeCode:`number`}},GALA_WALLET_NOT_AVAILABLE:{phase:`pre_send`,template:`Gala wallet is not available. Please ensure the Gala wallet is connected.`,params:{}},WALLET_UNAVAILABLE:{phase:`pre_send`,template:`No wallet is connected.`,params:{}},MALFORMED_WALLET_REQUEST:{phase:`pre_send`,template:`Wallet {method} request is malformed.`,params:{method:`string`}},UNSUPPORTED_WALLET_METHOD:{phase:`pre_send`,template:`Unsupported wallet method {method}.`,params:{method:`string`}},INVALID_SIGNATURE:{phase:`pre_send`,template:`Wallet returned an invalid {scheme} signature.`,params:{scheme:`string`}},INVALID_CHAIN_ID:{phase:`pre_send`,template:`Wallet returned an invalid chain id ({chainId}).`,params:{chainId:`string`}},SIGNER_ADDRESS_MISMATCH:{phase:`pre_send`,template:`The signing key does not belong to the expected account.`,params:{}},INVALID_PRIVATE_KEY:{phase:`pre_send`,template:`Invalid private key: {reason}.`,params:{reason:m}},SIGNING_FAILED:{phase:`pre_send`,template:`Signing the {method} request failed ({reason}); nothing was sent.`,params:{method:`string`,reason:g}},KEY_PROVIDER_FAILED:{phase:`pre_send`,template:`The signing key could not be fetched; nothing was sent.`,params:{}},TOKEN_RESOLUTION_FAILED:{phase:`pre_send`,template:`Token {token} could not be looked up; nothing was sent.`,params:{token:`string`}},INVALID_SIGNING_HASH_LENGTH:{phase:`pre_send`,template:`secp256k1 can only sign a 32-byte hash (got {length}).`,params:{length:`number`}},MISSING_WALLET_ADDRESS:{phase:`pre_send`,template:`Invalid wallet address: No wallet address provided. Either provide a wallet address to the function you are calling, or set one when instantiating GSwapSDK.`,params:{}},INVALID_WALLET_ADDRESS:{phase:`pre_send`,template:`Invalid {field}: "{value}" is not an accepted wallet address form.`,params:{field:`string`,value:`string`}},INVALID_DECIMAL:{phase:`pre_send`,template:`Invalid decimal quantity: {value}`,params:{value:`string`}},PERSONAL_SIGN_NOT_JSON:{phase:`pre_send`,template:`Personal-sign DTO is not valid JSON`,params:{}},PERSONAL_SIGN_NOT_OBJECT:{phase:`pre_send`,template:`Personal-sign DTO must be a JSON object`,params:{}},PERSONAL_SIGN_BAD_PREFIX:{phase:`pre_send`,template:`Personal-sign DTO prefix is not an EIP-191 "Ethereum Signed Message" header`,params:{}},PERSONAL_SIGN_ENVELOPE_FIELDS:{phase:`pre_send`,template:`Personal-sign DTO carries signing-envelope field(s): {fields}`,params:{fields:`string`}},PERSONAL_SIGN_NOT_CANONICAL:{phase:`pre_send`,template:`Personal-sign DTO is not in canonical serialized form`,params:{}},EIP712_NAME_COLLISION:{phase:`pre_send`,template:`Name collisions are not supported when deriving EIP-712 types ({name}).`,params:{name:`string`}},EIP712_UNSUPPORTED_VALUE:{phase:`pre_send`,template:`Unsupported EIP-712 value of type {valueType}.`,params:{valueType:`string`}},TYPED_DATA_NOT_STRING:{phase:`pre_send`,template:`Invalid typed data: {what} must be a string`,params:{what:`string`}},TYPED_DATA_UNPAIRED_SURROGATE:{phase:`pre_send`,template:`Invalid typed data: {what} has an unpaired surrogate`,params:{what:`string`}},TYPED_DATA_NOT_HEX_BYTES:{phase:`pre_send`,template:`Invalid typed data: {what} must be an even-length 0x hex string`,params:{what:`string`}},TYPED_DATA_NOT_SAFE_INTEGER:{phase:`pre_send`,template:`Invalid typed data: {what} must be a safe integer`,params:{what:`string`}},TYPED_DATA_NOT_INTEGER:{phase:`pre_send`,template:`Invalid typed data: {what} must be an integer`,params:{what:`string`}},TYPED_DATA_NOT_BOOLEAN:{phase:`pre_send`,template:`Invalid typed data: bool must be a boolean`,params:{}},TYPED_DATA_BAD_ADDRESS:{phase:`pre_send`,template:`Invalid typed data: address must be 0x followed by 40 hex digits`,params:{}},TYPED_DATA_BAD_CHECKSUM:{phase:`pre_send`,template:`Invalid typed data: address has a bad checksum`,params:{}},TYPED_DATA_BYTES_LENGTH:{phase:`pre_send`,template:`Invalid typed data: {type} must be exactly {width} bytes`,params:{type:`string`,width:`number`}},TYPED_DATA_OUT_OF_BOUNDS:{phase:`pre_send`,template:`Invalid typed data: value out of bounds for {type}`,params:{type:`string`}},TYPED_DATA_UNSUPPORTED_TYPE:{phase:`pre_send`,template:`Invalid typed data: unsupported type "{type}"`,params:{type:`string`}},TYPED_DATA_FIELDS_NOT_LIST:{phase:`pre_send`,template:`Invalid typed data: type {typeName} must be a list of fields`,params:{typeName:`string`}},TYPED_DATA_FIELD_MALFORMED:{phase:`pre_send`,template:`Invalid typed data: type {typeName} has a field without a string name and type`,params:{typeName:`string`}},TYPED_DATA_INVALID_FIELD_NAME:{phase:`pre_send`,template:`Invalid typed data: invalid field name "{name}"`,params:{name:`string`}},TYPED_DATA_DUPLICATE_FIELD:{phase:`pre_send`,template:`Invalid typed data: duplicate field "{name}" in {typeName}`,params:{name:`string`,typeName:`string`}},TYPED_DATA_INVALID_TYPE_NAME:{phase:`pre_send`,template:`Invalid typed data: invalid type name "{name}"`,params:{name:`string`}},TYPED_DATA_CIRCULAR_TYPE:{phase:`pre_send`,template:`Invalid typed data: circular type reference in {typeName}`,params:{typeName:`string`}},TYPED_DATA_UNKNOWN_FIELD_TYPE:{phase:`pre_send`,template:`Invalid typed data: unknown type "{type}" in {typeName}`,params:{type:`string`,typeName:`string`}},TYPED_DATA_NO_PRIMARY_TYPE:{phase:`pre_send`,template:`Invalid typed data: missing primary type`,params:{}},TYPED_DATA_AMBIGUOUS_PRIMARY_TYPE:{phase:`pre_send`,template:`Invalid typed data: ambiguous primary types or unused types ({roots})`,params:{roots:`string`}},TYPED_DATA_ARRAY_EXPECTED:{phase:`pre_send`,template:`Invalid typed data: {type} array value must be an array`,params:{type:`string`}},TYPED_DATA_ARRAY_LENGTH_MISMATCH:{phase:`pre_send`,template:`Invalid typed data: array length mismatch`,params:{}},TYPED_DATA_STRUCT_NOT_OBJECT:{phase:`pre_send`,template:`Invalid typed data: {typeName} value must be an object`,params:{typeName:`string`}},TYPED_DATA_MISSING_FIELD:{phase:`pre_send`,template:`Invalid typed data: {typeName} value is missing field "{field}"`,params:{typeName:`string`,field:`string`}},TYPED_DATA_DOMAIN_NOT_OBJECT:{phase:`pre_send`,template:`Invalid typed data: domain must be an object`,params:{}},TYPED_DATA_INVALID_DOMAIN_KEY:{phase:`pre_send`,template:`Invalid typed data: invalid typed-data domain key {key}`,params:{key:`string`}},NON_CANONICAL_PAIR:{phase:`pre_send`,template:`The pair {token0}/{token1} is not in canonical order: token0 must sort before token1.`,params:{token0:`string`,token1:`string`}},UNORDERABLE_SYMBOLS:{phase:`pre_send`,template:`Unable to order trading symbols: expected a pair of symbols, got {received}.`,params:{received:`string`}},INVALID_TOKEN_CLASS_KEY:{phase:`pre_send`,template:`Invalid token class key "{tokenClassKey}": expected a collection followed by category, type and additionalKey`,params:{tokenClassKey:`string`}},INCOMPLETE_TOKEN_CLASS_KEY:{phase:`pre_send`,template:`Token class key "{compositeKey}" is missing {part}.`,params:{compositeKey:`string`,part:`string`}},INVALID_TRADING_SYMBOL:{phase:`pre_send`,template:`Invalid trading symbol "{symbol}": must be 1-32 ASCII letters and digits and not a reserved word (Token, Unit, none).`,params:{symbol:`string`}},NO_VALID_TRADING_SYMBOL:{phase:`pre_send`,template:`No valid trading symbol for token class {classKey}: "{displaySymbol}" is not an acceptable symbol and none is registered`,params:{classKey:`string`,displaySymbol:`string`}},TOKEN_SYMBOL_NOT_REGISTERED:{phase:`pre_send`,template:`Token {token} is not registered in the trading-symbol registry yet; pass token0Symbol/token1Symbol (the token class symbol) to propose one. A symbol cannot be derived from a class key.`,params:{token:`string`}},SYMBOL_DISAGREES_WITH_REGISTRY:{phase:`pre_send`,template:`Supplied symbol {suppliedSymbol} for {token} disagrees with the registered trading symbol {registeredSymbol}.`,params:{token:`string`,suppliedSymbol:`string`,registeredSymbol:`string`}},CREATE_POOL_NEEDS_CLASS_KEY:{phase:`pre_send`,template:`createPool needs each token as a class key; {token} is a bare trading symbol, which does not carry one.`,params:{token:`string`}},INVALID_UNIQUE_KEY:{phase:`pre_send`,template:`The uniqueKey "{uniqueKey}" must be 1-128 characters of A-Z, a-z, 0-9, ".", "_", ":" or "-".`,params:{uniqueKey:`string`}},INVALID_UNIQUE_KEY_PREFIX:{phase:`pre_send`,template:`uniqueKeyPrefix "{uniqueKeyPrefix}" must be at most {maxLength} characters of A-Z, a-z, 0-9, ".", "_", ":" or "-".`,params:{uniqueKeyPrefix:`string`,maxLength:`number`}},AMOUNT_IS_JS_NUMBER:{phase:`pre_send`,template:`Invalid {field}: use a decimal string or BigNumber, not a JavaScript number`,params:{field:`string`}},AMOUNT_NOT_FINITE:{phase:`pre_send`,template:`Invalid {field}: must be a finite number (got {value})`,params:{field:`string`,value:`string`}},AMOUNT_NOT_POSITIVE:{phase:`pre_send`,template:`Invalid {field}: must be positive (got {value})`,params:{field:`string`,value:`string`}},AMOUNT_NEGATIVE:{phase:`pre_send`,template:`Invalid {field}: must not be negative (got {value})`,params:{field:`string`,value:`string`}},PRICE_VALUES_IS_JS_NUMBER:{phase:`pre_send`,template:`Invalid price values: use decimal strings or BigNumber values, not JavaScript numbers`,params:{}},INVALID_PRICE_VALUES:{phase:`pre_send`,template:`Invalid price values: all prices must be finite and positive (spot {spotPrice}, lower {lowerPrice}, upper {upperPrice})`,params:{spotPrice:`string`,lowerPrice:`string`,upperPrice:`string`}},INVALID_PRICE_RANGE:{phase:`pre_send`,template:`Invalid price range: lower price {lowerPrice} must be less than or equal to upper price {upperPrice}`,params:{lowerPrice:`string`,upperPrice:`string`}},INVALID_PRICE_BOUNDS:{phase:`pre_send`,template:`Price bounds must be finite and positive (minPrice {minPrice}, maxPrice {maxPrice}).`,params:{minPrice:`string`,maxPrice:`string`}},PRICE_BOUNDS_ORDER:{phase:`pre_send`,template:`minPrice {minPrice} must be less than or equal to maxPrice {maxPrice}.`,params:{minPrice:`string`,maxPrice:`string`}},INVALID_STARTING_PRICE:{phase:`pre_send`,template:`Starting price must be finite and positive (got {value}).`,params:{value:`string`}},INVALID_SQRT_PRICE:{phase:`pre_send`,template:`Cannot invert a non-positive sqrt price ({sqrtPrice}).`,params:{sqrtPrice:`string`}},INVALID_TOKEN_DECIMALS:{phase:`pre_send`,template:`Invalid {field}: must be a non-negative integer (got {value})`,params:{field:`string`,value:`number`}},TICKS_NOT_INTEGERS:{phase:`pre_send`,template:`Invalid tick values: ticks must be integers (got {tickLower} and {tickUpper})`,params:{tickLower:`number`,tickUpper:`number`}},INVALID_TICK_RANGE:{phase:`pre_send`,template:`Invalid tick range: tickLower {tickLower} must be less than tickUpper {tickUpper}`,params:{tickLower:`number`,tickUpper:`number`}},TICKS_OUT_OF_BOUNDS:{phase:`pre_send`,template:`Invalid tick range: ticks {tickLower} and {tickUpper} must be between {minTick} and {maxTick}`,params:{tickLower:`number`,tickUpper:`number`,minTick:`number`,maxTick:`number`}},TICKS_NOT_ALIGNED:{phase:`pre_send`,template:`Ticks {tickLower} and {tickUpper} must be aligned to spacing {spacing}.`,params:{tickLower:`number`,tickUpper:`number`,spacing:`number`}},INVALID_TICK_SPACING:{phase:`pre_send`,template:`Invalid tick spacing: must be a positive integer (got {value})`,params:{value:`number`}},INVALID_FEE:{phase:`pre_send`,template:`Invalid {field}: {value} is not a supported fee tier; must be one of {allowed}.`,params:{field:`string`,value:`number`,allowed:`string`}},EXACT_AMOUNT_REQUIRED:{phase:`pre_send`,template:`{field} is required for this swap.`,params:{field:`string`}},EXACTLY_ONE_OF_REQUIRED:{phase:`pre_send`,template:`Provide exactly one of {first} or {second}.`,params:{first:`string`,second:`string`}},AT_MOST_ONE_OF_ALLOWED:{phase:`pre_send`,template:`Provide at most one of {first} or {second}.`,params:{first:`string`,second:`string`}},POOL_MISMATCH:{phase:`pre_send`,template:`tokenIn {tokenIn} and tokenOut {tokenOut} must be the two tokens of the pinned pool {poolToken0}/{poolToken1}.`,params:{tokenIn:`string`,tokenOut:`string`,poolToken0:`string`,poolToken1:`string`}},INVALID_DTO:{phase:`pre_send`,template:`{method} DTO field {field} is invalid (expected {expected}).`,params:{method:`string`,field:`string`,expected:`string`}},DTO_NOT_CANONICAL:{phase:`pre_send`,template:`The {method} DTO is not in the form the SDK builders produce; build it with the matching build function and submit that.`,params:{method:`string`}},SEARCH_TOO_LONG:{phase:`pre_send`,template:`search must be at most {maxLength} characters (got {length}).`,params:{length:`number`,maxLength:`number`}},INVALID_SORT_BY:{phase:`pre_send`,template:`sortBy "{value}" is not allowed; it must be one of {allowed}.`,params:{value:`string`,allowed:`string`}},INVALID_SORT_ORDER:{phase:`pre_send`,template:`sortOrder "{value}" is not allowed; it must be asc or desc.`,params:{value:`string`}},INVALID_PAGE:{phase:`pre_send`,template:`page must be an integer of at least 1 (got {value}).`,params:{value:`number`}},INVALID_LIMIT:{phase:`pre_send`,template:`limit must be an integer from {min} to {max} (got {value}).`,params:{value:`number`,min:`number`,max:`number`}}},ee=Object.fromEntries(Object.entries(v).map(([e,t])=>[e,t.template])),te=/\{([A-Za-z0-9_]+)\}/gu;function ne(e,t){return e.replace(te,(e,n)=>{let r=t[n];return typeof r==`string`||typeof r==`number`||typeof r==`boolean`?String(r):e})}function y(e){"@babel/helpers - typeof";return y=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},y(e)}function re(e,t){if(y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ie(e){var t=re(e,`string`);return y(t)==`symbol`?t:t+``}function b(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ae=426;var x=class e extends Error{constructor(e,t,n={}){super(ne(v[e].template,t),n.cause===void 0?void 0:{cause:n.cause}),b(this,`code`,void 0),b(this,`params`,void 0),b(this,`retryAfterMs`,void 0),b(this,`status`,void 0),b(this,`body`,void 0),b(this,`bodyText`,void 0),b(this,`url`,void 0),b(this,`uniqueKey`,void 0),b(this,`requestTransactionId`,void 0),b(this,`applyTransactionId`,void 0),b(this,`blockNumber`,void 0),b(this,`phase`,void 0),b(this,`shadow`,void 0),b(this,`walletCode`,void 0),this.name=`GSwapSDKError`,this.code=e,this.params=t,this.retryAfterMs=n.retryAfterMs,this.status=n.status,this.body=typeof n.body==`string`?void 0:n.body,this.bodyText=typeof n.body==`string`?n.body:void 0,this.url=n.url,this.uniqueKey=n.uniqueKey,this.requestTransactionId=n.requestTransactionId,this.applyTransactionId=n.applyTransactionId,this.blockNumber=n.blockNumber,this.phase=n.phase??v[e].phase,this.shadow=n.shadow??!1,this.walletCode=n.walletCode}get notFound(){return this.status===404||this.code===`NO_POOL_AVAILABLE`||this.code===`UNKNOWN_TOKEN`}static noSignerError(){return new e(`NO_SIGNER`,{})}static noWalletAddressError(){return new e(`NO_WALLET_ADDRESS`,{})}static noPoolAvailableError(t,n,r,i){return new e(`NO_POOL_AVAILABLE`,{tokenIn:S(t),tokenOut:S(n),fee:oe(r)},se(i))}static insufficientLiquidityError(t,n,r,i){return new e(`INSUFFICIENT_LIQUIDITY`,{tokenIn:S(t),tokenOut:S(n),fee:oe(r)},se(i))}static fromGatewayBounce(t,n,r,i,a,o,s){let c={status:r,body:i,url:a,retryAfterMs:o,uniqueKey:s},l={serverMessage:n};switch(t){case`METHOD_NOT_ALLOWED`:return new e(`METHOD_NOT_ALLOWED`,l,c);case`SIGNATURE_INVALID`:return new e(`SIGNATURE_INVALID`,l,c);case`SIGNER_MISMATCH`:return new e(`SIGNER_MISMATCH`,l,c);case`DTO_INVALID`:return new e(`DTO_INVALID`,l,c);case`BOUNDS_VIOLATION`:return new e(`BOUNDS_VIOLATION`,l,c);case`SYMBOL_CONFLICT`:return new e(`SYMBOL_CONFLICT`,l,c);case`RATE_LIMITED`:return new e(`RATE_LIMITED`,l,c);case`CHAIN_DISPATCH_FAILED`:return new e(`CHAIN_DISPATCH_FAILED`,{...l,errorKey:w(i,`errorKey`)??``},c);default:return new e(`GATEWAY_REJECTED`,{gatewayCode:t,serverMessage:n},c)}}static fromChainError(t,n,r){return new e(`CHAIN_REJECTED`,{errorKey:t,serverMessage:n},r)}static unknownTokenError(t,n){return new e(`UNKNOWN_TOKEN`,{token:S(t)},se(n))}static confirmationTimeoutError(t,n){return new e(`CONFIRMATION_TIMEOUT`,{},{uniqueKey:t,cause:n})}static async fromErrorResponse(t,n){let r=await n.text(),i=ue(r),a=le(i,`error`),o=w(a,`ErrorKey`),s=w(a,`Message`),c={status:n.status,body:i??r,url:t};return n.status===426?new e(`UPDATE_REQUIRED`,{status:n.status},c):o!==void 0&&s!==void 0?new e(`CHAIN_REJECTED`,{errorKey:o,serverMessage:s},c):new e(`HTTP_ERROR`,{status:n.status,url:t,serverMessage:d(i)},c)}};function S(e){return typeof e==`string`?e:[e.collection,e.category,e.type,e.additionalKey].join(`$`)}function oe(e){return e===void 0?`any`:String(e)}function se(e){return e===void 0?{}:{status:e.status,body:e.body??e.bodyText,url:e.url,phase:`post_send`}}function C(e,t){return e instanceof x&&(t===void 0||e.code===t)}function ce(e){return C(e)&&e.phase===`pre_send`}function le(e,t){if(typeof e!=`object`||!e||!(t in e))return;let n=e[t];return typeof n==`object`&&n?n:void 0}function w(e,t){if(typeof e!=`object`||!e||!(t in e))return;let n=e[t];return typeof n==`string`?n:void 0}function ue(e){try{return JSON.parse(e)}catch{return}}const de=`galaswap-operation-`,fe=/^[A-Za-z0-9._:-]*$/u;function pe(e){if(e===void 0)return de;if(!fe.test(e)||e.length>92)throw new x(`INVALID_UNIQUE_KEY_PREFIX`,{uniqueKeyPrefix:e,maxLength:92});return e}const me=/^[A-Za-z0-9._:-]{1,128}$/u;function T(e){return typeof e==`string`&&me.test(e)}function E(e){if(!T(e))throw new x(`INVALID_UNIQUE_KEY`,{uniqueKey:String(e)})}function he(e){return`${e}${globalThis.crypto.randomUUID()}`}function ge(e,t){if(t===1/0)return()=>void 0;let n=setTimeout(()=>e.abort(),t);return()=>clearTimeout(n)}function _e(e,t){if(e===1/0||Number.isFinite(e)&&e>0)return e;throw new x(`INVALID_TIMEOUT`,{field:t,value:e})}const ve=/[A-Za-z0-9\-._~!'()*$|:,]/u;function ye(e){let t=``;for(let n of e)n===` `?t+=`+`:ve.test(n)?t+=n:t+=be(n);return t}function be(e){try{return encodeURIComponent(e)}catch{return`%EF%BF%BD`}}function xe(e,t=`standard`){return t===`readable`?Object.entries(e).map(([e,t])=>`${ye(e)}=${ye(t)}`).join(`&`):new URLSearchParams(e).toString()}function D(e,t={}){let n=/* @__PURE__ */ new Map,r=(e,t=!1)=>{for(let[r,i]of Object.entries(e??{}))t&&n.delete(r.toLowerCase()),n.set(r.toLowerCase(),[r,i])};return e?.userAgent!==!1&&r({"User-Agent":e?.userAgent??`GalaChain-SDK/1.2.0-rc.6`}),r(t.defaults),r(e?.headers),t.json===!0&&!n.has(`content-type`)&&r({"Content-Type":`application/json`}),r(t.fixed,!0),Object.fromEntries(n.values())}const Se=async(e,t)=>{try{return await fetch(e,t)}catch(n){throw t?.signal?.aborted===!0?n:new x(`TRANSPORT_ERROR`,{url:e},{url:e,cause:n})}};async function Ce(e,t,n,r){let i=new AbortController,a=ge(i,r),o=n.signal,s=()=>i.abort();o?.addEventListener(`abort`,s,{once:!0});try{return await e(t,{...n,signal:i.signal})}catch(e){throw o?.aborted===!0?e:i.signal.aborted?new x(`REQUEST_TIMEOUT`,{url:t,timeoutMs:r},{url:t,cause:e}):e}finally{a(),o?.removeEventListener(`abort`,s)}}async function we(e){let t=await e.text();return ue(t)??t}function Te(e,t){let n=e.headers;if(n===void 0)return;if(Oe(n)){let e=n.get(t);return e===null||e===``?void 0:e}let r=Object.entries(n).find(([e])=>e.toLowerCase()===t.toLowerCase())?.[1];return r===void 0||r===``?void 0:r}function Ee(e){let t=Te(e,`retry-after`);if(t===void 0)return;let n=Number(t);if(Number.isFinite(n)&&n>=0)return n*1e3;let r=Date.parse(t);return Number.isNaN(r)?void 0:Math.max(0,r-Date.now())}function De(e,t=`x-block-number`){let n=Te(e,t);if(n===void 0)return;let r=Number(n);return Number.isInteger(r)&&r>=0?r:void 0}function Oe(e){return`get`in e&&typeof e.get==`function`}var O=class extends x{constructor(e,t,n={}){super(e,t,n),this.name=`AppliedTradeError`}};async function ke(e,t,n){let{uniqueKey:r}=t;if(!T(r))throw new O(`INVALID_UNIQUE_KEY`,{uniqueKey:String(r)},{uniqueKey:r});let i=e.httpRequestor??Se,a=e.requestTimeoutMs??3e4,c=n?.signal,l=e=>new O(`CONFIRMATION_ABORTED`,{},{uniqueKey:r,cause:e}),u=`${e.dexBackendBaseUrl.replace(/\/$/u,``)}/v1/chain/apply-results/${encodeURIComponent(r)}?channel=asset&contract=dex-contract`,f=o(n,3e3,l);await f.waitForRead();let p;for(;;){s(c,l);let n,o;try{n=await Ce(i,u,{method:`GET`,headers:D(e.wire),...c===void 0?{}:{signal:c}},a),o=await we(n)}catch(e){if(s(c,l),p=e,!await f.waitForRead())break;continue}if(s(c,l),n.status===200)return Ae(t,n,o,u);if(n.status===404||n.status===429||Ne(n.status)){let e=n.status===429?Ee(n):void 0;if(!await f.waitForRead(e))break;continue}throw new O(`CONFIRMATION_FAILED`,{status:n.status,serverMessage:d(o)},{uniqueKey:r,status:n.status,body:o,url:u})}throw new O(`CONFIRMATION_TIMEOUT`,{},{uniqueKey:r,requestTransactionId:t.requestTransactionId,url:u,cause:p})}function Ae(e,t,n,r){let{uniqueKey:i}=e,a=Pe(n),o=a?.uniqueKey??a?.UniqueKey;if(typeof o==`string`&&o!==i)throw new O(`CONFIRMATION_KEY_MISMATCH`,{},{uniqueKey:i,status:t.status,body:n,url:r});let s=a?.Status,c=Te(t,`x-apply-transaction-id`)??null,l=De(t,`x-apply-block-number`)??null;if(s===0)throw new O(`CHAIN_REJECTED`,{errorKey:w(a,`ErrorKey`)??`CHAIN_ERROR`,serverMessage:w(a,`Message`)??``},{uniqueKey:i,requestTransactionId:e.requestTransactionId,applyTransactionId:c,blockNumber:l,status:t.status,body:n,url:r});if(s!==1)throw je(e,t,n,r);let u=Me(a?.Data);if(u===void 0)throw je(e,t,n,r);return{uniqueKey:i,transactionId:c,blockNumber:l,requestTransactionId:e.requestTransactionId,result:u}}function je(e,t,n,r){return new O(`CONFIRMATION_MALFORMED`,{},{uniqueKey:e.uniqueKey,status:t.status,body:n,url:r})}function Me(e){let t=Pe(e);if(t===void 0||typeof t.token0!=`string`||typeof t.token1!=`string`||typeof t.fee!=`number`)return;let n=[`sell0Qty`,`sell1Qty`,`buy0Qty`,`buy1Qty`,`tradingFees`,`protocolFees`,`totalFees`];for(let e of n)if(e in t&&typeof t[e]!=`string`)return;return{token0:t.token0,token1:t.token1,fee:t.fee,...Object.fromEntries(n.flatMap(e=>typeof t[e]==`string`?[[e,t[e]]]:[]))}}function Ne(e){return e===500||e===502||e===503||e===504}function Pe(e){return typeof e==`object`&&e?e:void 0}let Fe=/* @__PURE__ */ function(e){return e[e.PERCENT_00_00=0]=`PERCENT_00_00`,e[e.PERCENT_00_05=500]=`PERCENT_00_05`,e[e.PERCENT_00_30=3e3]=`PERCENT_00_30`,e[e.PERCENT_01_00=1e4]=`PERCENT_01_00`,e}({});const Ie={0:200,500:10,3e3:60,1e4:200},Le=[0,500,3e3,1e4],Re=-887272,ze=887272,Be=e.clone({DECIMAL_PLACES:60,ROUNDING_MODE:e.ROUND_DOWN}),k=t.clone({precision:60});function Ve(t){return new e(new k(1.0001).pow(t/2).toString())}function He(e){let t;try{t=new Be(e)}catch{return NaN}if(!t.isFinite()||t.isLessThanOrEqualTo(0))return NaN;let n=Math.log(t.toNumber()**2)/Math.log(1.0001);if(!Number.isFinite(n))return NaN;let r=Math.min(ze,Math.max(Re,Math.floor(n)));for(;r<887272&&Ve(r+1).isLessThanOrEqualTo(t);)r+=1;for(;r>-887272&&Ve(r).isGreaterThan(t);)--r;return r}function Ue(t){let n=typeof t==`string`?t:typeof t==`number`||e.isBigNumber(t)?t.toString():`NaN`,r=new k(n);if(!r.isFinite()||r.lessThanOrEqualTo(0)||!Number.isFinite(r.toNumber()))return NaN;let i=r.ln().dividedBy(new k(1.0001).ln()).floor().toNumber();return Number.isFinite(i)?i:NaN}function We(e,t){return Ke(t),Math.floor(e/t)*t}function Ge(e,t){return Ke(t),Math.ceil(e/t)*t}function A(e,t,n){let r=Ie[n];if(r===void 0)throw new x(`INVALID_FEE`,{field:`fee`,value:n,allowed:_});if(!Number.isInteger(e)||!Number.isInteger(t))throw new x(`TICKS_NOT_INTEGERS`,{tickLower:e,tickUpper:t});if(e>=t)throw new x(`INVALID_TICK_RANGE`,{tickLower:e,tickUpper:t});if(e<-887272||t>887272)throw new x(`TICKS_OUT_OF_BOUNDS`,{tickLower:e,tickUpper:t,minTick:Re,maxTick:ze});if(e%r!==0||t%r!==0)throw new x(`TICKS_NOT_ALIGNED`,{tickLower:e,tickUpper:t,spacing:r})}function Ke(e){if(!Number.isInteger(e)||e<=0)throw new x(`INVALID_TICK_SPACING`,{value:e})}function qe(e){if(e.flippedFromRequest!==!0)return{sqrtPrice:e.sqrtPrice,tick:e.tick};let t=new k(1).dividedBy(new k(e.sqrtPrice));if(!t.isFinite()||t.lessThanOrEqualTo(0))throw new x(`INVALID_SQRT_PRICE`,{sqrtPrice:e.sqrtPrice});let n=t.toString();return{sqrtPrice:n,tick:He(n)}}function j(t,n,r=!1){if(typeof t==`number`)throw new x(`AMOUNT_IS_JS_NUMBER`,{field:n});let i;try{i=e(t)}catch{i=e(NaN)}if(!i.isFinite())throw new x(`AMOUNT_NOT_FINITE`,{field:n,value:String(t)});if(!r&&i.isZero())throw new x(`AMOUNT_NOT_POSITIVE`,{field:n,value:String(t)});if(i.isNegative())throw new x(`AMOUNT_NEGATIVE`,{field:n,value:String(t)})}function Je(t,n,r){if([t,n,r].some(e=>typeof e==`number`))throw new x(`PRICE_VALUES_IS_JS_NUMBER`,{});let i=t=>{try{return e(t)}catch{return e(NaN)}},a=i(t),o=i(n),s=i(r);if(s=s.isFinite()?s:e(0xde0b6b3a7640000),!a.isFinite()||!o.isFinite()||!s.isFinite()||!a.isPositive()||!o.isPositive()||!s.isPositive())throw new x(`INVALID_PRICE_VALUES`,{spotPrice:String(t),lowerPrice:String(n),upperPrice:String(r)});if(o.isGreaterThan(s))throw new x(`INVALID_PRICE_RANGE`,{lowerPrice:String(n),upperPrice:String(r)})}function Ye(e,t){if(e<0||!Number.isInteger(e))throw new x(`INVALID_TOKEN_DECIMALS`,{field:t,value:e})}function Xe(e,t){if(!Number.isInteger(e)||!Number.isInteger(t))throw new x(`TICKS_NOT_INTEGERS`,{tickLower:e,tickUpper:t});if(e>=t)throw new x(`INVALID_TICK_RANGE`,{tickLower:e,tickUpper:t});if(e<-887272||t>887272)throw new x(`TICKS_OUT_OF_BOUNDS`,{tickLower:e,tickUpper:t,minTick:Re,maxTick:ze})}function M(e){if(!Le.some(t=>Number(t)===e))throw new x(`INVALID_FEE`,{field:`fee`,value:e,allowed:_})}function Ze(e){if(!Number.isInteger(e)||e<=0)throw new x(`INVALID_TICK_SPACING`,{value:e})}function Qe(e){if(e===void 0)throw new x(`MISSING_WALLET_ADDRESS`,{});if(!e||typeof e!=`string`||e.trim().length===0)throw new x(`INVALID_WALLET_ADDRESS`,{field:`walletAddress`,value:String(e)})}const $e=/* @__PURE__ */ new Set([`Token`,`Unit`,`none`]),et=/^[A-Za-z0-9]+$/u;function tt(e){return et.test(e)&&e.length<=32&&!$e.has(e)}function N(e,t){if(!(e<t))throw new x(`NON_CANONICAL_PAIR`,{token0:e,token1:t})}var nt=class{constructor(e,t){this.dexBackendBaseUrl=e,this.httpClient=t}async getUserAssets(e,t=1,n=10){if(Qe(e),!Number.isInteger(t)||t<1)throw new x(`INVALID_PAGE`,{value:t});if(!Number.isInteger(n)||n<1||n>100)throw new x(`INVALID_LIMIT`,{value:n,min:1,max:100});return rt(await this.httpClient.sendGetRequest(this.dexBackendBaseUrl,`/user/assets`,``,{address:e,page:t.toString(),limit:n.toString()}))}};function rt(e){let t=le(e,`data`),n=t?.token;if(!Array.isArray(n)||!n.every(it))throw new x(`INVALID_CHAIN_RESPONSE`,{resource:`user assets response`},{body:e});let r=t?.count;return{tokens:n.map(e=>({...e,decimals:parseInt(e.decimals,10)})),count:typeof r==`number`?r:0}}function it(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.image==`string`&&typeof t.name==`string`&&typeof t.decimals==`string`&&/^\d+$/u.test(t.decimals)&&typeof t.verify==`boolean`&&typeof t.symbol==`string`&&typeof t.quantity==`string`}const at=[4001,`ACTION_REJECTED`,`USER_REJECTED`],ot=[`user rejected`,`user denied`,`user cancel`,`rejected the request`,`request rejected`,`rejected by user`,`action_rejected`,`cancelled`,`canceled`],st=[`message`,`Message`,`shortMessage`,`details`,`errorDetails`,`reason`];function ct(e){return typeof e==`object`&&!!e}function lt(e,t=0){return typeof e==`string`?[e]:!ct(e)||t>=3?[]:st.flatMap(n=>lt(e[n],t+1))}function ut(e){let t=e.toLowerCase();return ot.some(e=>t.includes(e))||t.includes(`signature`)&&t.includes(`cancel`)}function dt(e){return C(e)?e.code===`SIGNING_FAILED`&&e.params.reason===`user_rejected`:ct(e)&&(at.includes(e.code)||e.name===`UserRejectedRequestError`)?!0:lt(e).some(ut)}function ft(e){if(typeof e!=`object`||!e)return;let{code:t}=e;if(typeof t==`number`)return Number.isFinite(t)?t:void 0;if(typeof t==`string`&&t.length>0&&t.length<=64)return t}async function pt(e,t,n){let r;try{r=await e.signObject(t,n)}catch(e){throw C(e)?e:new x(`SIGNING_FAILED`,{method:t,reason:dt(e)?`user_rejected`:`failed`},{cause:e,walletCode:ft(e)})}if(typeof r!=`object`||!r)throw new x(`SIGNING_FAILED`,{method:t,reason:`failed`},{cause:r});return r}async function mt(e,t){try{return await t()}catch(t){throw C(t)?t:new x(`TOKEN_RESOLUTION_FAILED`,{token:e},{cause:t})}}const ht=[`Swap`,`RequestTrade`,`AddLiquidity`,`RemoveLiquidity`,`CollectPositionFees`,`CreatePool`],gt=`DryRun`,_t=`galaconnect-operation-`;function vt(e){return typeof e==`string`&&ht.includes(e)}function yt(e,t){return vt(t)&&typeof e?.token0==`string`&&typeof e.token1==`string`}function bt(e){let t={...e};for(let e of[`signature`,`prefix`,`types`,`domain`,`trace`])delete t[e];return t}function xt(e,t,n,r,i=_t){return pt(e,gt,{callerPublicKey:t,method:n,dto:r,uniqueKey:`${i}${globalThis.crypto.randomUUID()}`})}var St=class{constructor(e,t){this.signer=t,b(this,`requestor`,void 0),b(this,`baseUrl`,void 0),b(this,`requestTimeoutMs`,void 0),b(this,`wire`,void 0),this.requestor=e.httpRequestor??Se,this.baseUrl=e.dexBackendBaseUrl.replace(/\/$/u,``),this.requestTimeoutMs=e.requestTimeoutMs??3e4,this.wire=e.wire}async quote(e,t,n,r={}){if(this.signer===void 0)throw x.noSignerError();let i=r.channel??`asset`,a=r.contract??`dexv3-contract`,o=await xt(this.signer,e,t,bt(n)),s=`${this.baseUrl}/wallet/connect/galachain/api/${encodeURIComponent(i)}/${encodeURIComponent(a)}/${encodeURIComponent(t)}/fee`,c,l,u;try{let e=await Ce(this.requestor,s,{method:`POST`,headers:D(this.wire,{json:!0,defaults:{Accept:`application/json`}}),body:JSON.stringify(o)},this.requestTimeoutMs);c=e.status,l=e.ok,u=l?await we(e):void 0}catch{return null}return l?Ct(u):a===`dex-contract`&&(c===403||c===404)?{source:`default`,fees:[{feeInGala:`0`}]}:null}};function Ct(e){if(typeof e!=`object`||!e)return null;let t=e.fees;return!Array.isArray(t)||typeof t[0]?.feeInGala!=`string`?null:e}const wt=/* @__PURE__ */ new WeakSet;function Tt(e){return C(e)?e.shadow:typeof e==`object`&&!!e&&wt.has(e)}function Et(e){if(C(e)){if(e.shadow)return e;let t=new x(e.code,e.params,{status:e.status,body:e.body??e.bodyText,url:e.url,uniqueKey:e.uniqueKey,requestTransactionId:e.requestTransactionId,applyTransactionId:e.applyTransactionId,blockNumber:e.blockNumber,retryAfterMs:e.retryAfterMs,cause:e.cause,phase:e.phase,shadow:!0});return e.stack!==void 0&&(t.stack=e.stack),t}return typeof e==`object`&&e&&wt.add(e),e}async function Dt(e){try{return await e()}catch(e){throw Et(e)}}var Ot=class{constructor(e){b(this,`method`,void 0),b(this,`uniqueKey`,void 0),b(this,`transactionId`,void 0),b(this,`blockNumber`,void 0),b(this,`mode`,void 0),b(this,`status`,void 0),b(this,`result`,void 0),b(this,`envelope`,void 0),b(this,`backendBaseUrl`,void 0),b(this,`requestor`,void 0),b(this,`requestTimeoutMs`,void 0),b(this,`wire`,void 0),b(this,`positionConfirmation`,void 0),this.method=e.method,this.uniqueKey=e.uniqueKey,this.transactionId=e.transactionId,this.blockNumber=e.blockNumber??null,this.mode=e.mode,this.status=e.mode===`queued`?`queued`:`executed`,this.result=e.result,this.envelope=e.envelope,this.backendBaseUrl=e.dexBackendBaseUrl.replace(/\/$/u,``),this.requestor=e.httpRequestor,this.requestTimeoutMs=e.requestTimeoutMs??3e4,this.wire=e.wire,this.positionConfirmation=e.positionConfirmation}async confirm(e){return this.method===`RequestTrade`?this.confirmApplied(e):this.confirmPosition(e)}confirmApplied(e){return ke({dexBackendBaseUrl:this.backendBaseUrl,httpRequestor:this.requestor,requestTimeoutMs:this.requestTimeoutMs,wire:this.wire},{uniqueKey:this.uniqueKey,requestTransactionId:this.transactionId},e)}async confirmPosition(e){if(this.positionConfirmation===void 0)throw x.noWalletAddressError();let t=e?.signal,n=e=>new x(`CONFIRMATION_ABORTED`,{},{uniqueKey:this.uniqueKey,cause:e}),r=o(e,0,n);for(await r.waitForRead();;){let e=new AbortController,i=ge(e,this.requestTimeoutMs),a=()=>e.abort();t?.addEventListener(`abort`,a,{once:!0});try{let t=await this.positionConfirmation(e.signal);if(t.confirmed)return t.position}catch(e){throw s(t,n),e}finally{i(),t?.removeEventListener(`abort`,a)}if(!await r.waitForRead())break}throw x.confirmationTimeoutError(this.uniqueKey)}},kt=class{constructor(e){b(this,`requestor`,void 0),b(this,`walletAddress`,void 0),b(this,`chainCallTimeoutMs`,void 0),b(this,`isTransportFailure`,void 0),b(this,`answerOfRejectionHook`,void 0),b(this,`requestTimeoutMs`,void 0),b(this,`dexBackendBaseUrl`,void 0),b(this,`wire`,void 0),this.dexBackendBaseUrl=At(e.dexBackendBaseUrl),this.requestor=e.httpRequestor??Se,this.walletAddress=e.walletAddress,this.chainCallTimeoutMs=_e(e.chainCallTimeoutMs??3e4,`chainCallTimeoutMs`),this.requestTimeoutMs=this.chainCallTimeoutMs,this.wire=e.wire??{},this.isTransportFailure=e.isTransportFailure,this.answerOfRejectionHook=e.answerOfRejection}async submit(e,t,n){if(e===`Trade`)throw new x(`METHOD_NOT_SUPPORTED`,{method:e});let r=this.writeUrl(e),i=n?.walletAddress??this.walletAddress,a=D(this.wire,{json:!0,fixed:i===void 0?{}:{"X-Wallet-Address":i}}),{response:o,body:s}=await this.post(e,r,a,t),c=w(t,`uniqueKey`)??``,l=jt(o,s,r,c);if(!o.ok)throw Nt(o,s,r,c);let u=Pt(s);if(u?.error===!0)throw new x(`GATEWAY_REPORTED_ERROR`,{serverMessage:d(u)},l);let f=Pt(u?.data??u?.Data);if(f===void 0)throw new x(`GATEWAY_DATA_MISSING`,{},l);let p=w(f,`transactionId`),m=w(f,`mode`),h=f.transactionId,g=f.blockNumber,_=()=>new x(`GATEWAY_MODE_INVALID`,{},l);if(m!==`sync`&&m!==`queued`||`transactionId`in f&&typeof h!=`string`||g!=null&&!Ft(g))throw _();if(e===`RequestTrade`&&m===`sync`)throw new x(`GATEWAY_SYNC_REQUEST_TRADE`,{},l);if(e===`RequestTrade`&&m===`queued`)Mt(o,s,r,f,t);else if(m===`queued`||!(`result`in f))throw _();if(m===`sync`){let e=Pt(f.result);if(e!==void 0){let t=e.Status;if(t!==void 0&&t!==1)throw x.fromChainError(w(e,`ErrorKey`)??`CHAIN_ERROR`,w(e,`Message`)??``,l)}}let v=Te(o,`x-transaction-id`),ee=p===void 0||p===``?v:p,te=g==null?De(o):Ft(g)?g:void 0;return new Ot({method:e,uniqueKey:c,transactionId:ee===void 0||ee===``?null:ee,blockNumber:te??null,mode:m,result:m===`queued`?void 0:f.result,envelope:s,dexBackendBaseUrl:this.dexBackendBaseUrl,httpRequestor:this.requestor,requestTimeoutMs:this.chainCallTimeoutMs,wire:this.wire,...n?.positionConfirmation===void 0?{}:{positionConfirmation:n.positionConfirmation}})}async submitShadow(e,t,n){return Dt(()=>this.sendShadow(e,t,n))}async sendShadow(e,t,n){if(e===`Trade`)throw new x(`METHOD_NOT_SUPPORTED`,{method:e});let r=n?.walletAddress??this.walletAddress;if(r===void 0)throw new x(`SHADOW_SUBMIT_NEEDS_WALLET_ADDRESS`,{});let i=D(this.wire,{json:!0,fixed:{"X-Wallet-Address":r,"X-Shadow":`true`}}),{response:a,body:o}=await this.post(e,this.writeUrl(e),i,t);return{httpStatus:a.status,body:o}}writeUrl(e){return`${this.dexBackendBaseUrl}/v1/chain/asset/dex-contract/${e}`}async post(e,t,n,r){let i;try{i=JSON.stringify(r)}catch(t){throw new x(`SIGNING_FAILED`,{method:e,reason:`failed`},{cause:t})}let a=(e,n)=>new x(`SUBMISSION_OUTCOME_UNKNOWN`,{reason:e},{uniqueKey:w(r,`uniqueKey`)??``,url:t,cause:n}),o;try{o=await Ce(this.requestor,t,{method:`POST`,headers:n,body:i},this.chainCallTimeoutMs)}catch(e){if(C(e,`REQUEST_TIMEOUT`))throw a(`timeout`,e);if(C(e,`TRANSPORT_ERROR`)||this.isTransportRejection(e))throw a(`transport`,e);let t=this.answerOfRejection(e);if(t!==void 0)return t;throw e}try{return{response:o,body:await we(o)}}catch(e){throw a(`transport`,e)}}answerOfRejection(e){let t;try{t=this.answerOfRejectionHook?.(e)}catch{return}if(t===void 0)return;let{status:n,body:r,headers:i}=t;if(!Number.isInteger(n)||n<100||n>599)return;let a=typeof r==`string`?r:``;return{response:{ok:n>=200&&n<300,status:n,json:async()=>r,text:async()=>a,headers:i??{}},body:r}}isTransportRejection(e){try{return this.isTransportFailure?.(e)===!0}catch{return!1}}get httpRequestor(){return this.requestor}};function At(e){return e.replace(/\/$/u,``)}function jt(e,t,n,r){return{status:e.status,body:t,url:n,...r===void 0||r===``?{}:{uniqueKey:r}}}function Mt(e,t,n,r,i){let a=w(i,`uniqueKey`)??``,o=r.uniqueKey;if(typeof o==`string`&&o!==``&&o===a)return;let s=o==null||o===``,c={...jt(e,t,n),uniqueKey:a};throw s?new x(`MISSING_UNIQUE_KEY`,{},c):new x(`UNIQUE_KEY_MISMATCH`,{},c)}function Nt(e,t,n,r){if(e.status===426)return new x(`UPDATE_REQUIRED`,{status:e.status},jt(e,t,n,r));let i=Pt(t),a=le(t,`error`),o=w(i,`code`)??w(a,`code`)??w(a,`ErrorKey`)??`HTTP_ERROR`,s=d(t),c=e.status===429?Ee(e):void 0;return o===`HTTP_ERROR`?new x(`HTTP_ERROR`,{status:e.status,url:n,serverMessage:s},jt(e,t,n,r)):x.fromGatewayBounce(o,s,e.status,t,n,c,r===``?void 0:r)}function Pt(e){return typeof e==`object`&&e?e:void 0}function Ft(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0}const It={prod:{dexBackendBaseUrl:`https://dex-backend-prod1.defi.gala.com`,dexBackendWsUrl:`wss://dex-backend-prod1.defi.gala.com/ws`},stage:{dexBackendBaseUrl:`https://swap-backend.stage.defi.ovh.gala.com`,dexBackendWsUrl:`wss://swap-backend.stage.defi.ovh.gala.com/ws`}},P=n(`GSWAP_SDK`);var Lt=class{constructor(e){this.options=e,b(this,`attempts`,0),b(this,`delayMs`,void 0),b(this,`maxDelayMs`,void 0),this.delayMs=e.baseDelayMs,this.maxDelayMs=e.maxDelayMs??3e4}shouldRetry(){return this.attempts<this.options.maxAttempts}nextDelayMs(){return this.delayMs}recordAttempt(){this.attempts+=1,this.delayMs=Math.min(this.delayMs*2,this.maxDelayMs)}reset(){this.attempts=0,this.delayMs=this.options.baseDelayMs}get attemptCount(){return this.attempts}get maxAttempts(){return this.options.maxAttempts}};const Rt=`gdex.jsonrpc.v1`,zt=[`add`,`remove`,`collect`];function Bt(e){let{pool:t}=e;return(e.version===`v1`||e.version===`v2`)&&typeof t==`object`&&!!t&&typeof e.poolHash==`string`&&typeof e.transactionId==`string`&&zt.includes(e.action)&&typeof e.owner==`string`&&typeof e.amount0==`string`&&typeof e.amount1==`string`&&typeof e.blockNumber==`number`&&typeof e.timestamp==`string`}var Vt=class extends Error{constructor(e,t,n){super(t),b(this,`code`,void 0),b(this,`data`,void 0),this.name=`GdexStreamError`,this.code=e,n!==void 0&&(this.data=n)}};function Ht(e){let t=typeof e==`object`&&e?e.subscriptionId:void 0;if(typeof t!=`string`)throw new Vt(-32603,`GDEX subscribe response is missing its subscriptionId`);return t}var Ut=class{constructor(e={}){b(this,`url`,void 0),b(this,`requestTimeoutMs`,void 0),b(this,`apiKey`,void 0),b(this,`webSocketConstructor`,void 0),b(this,`backoff`,void 0),b(this,`socket`,void 0),b(this,`connectPromise`,void 0),b(this,`nextRequestId`,0),b(this,`pending`,/* @__PURE__ */ new Map),b(this,`subscriptionsByServerId`,/* @__PURE__ */ new Map),b(this,`activeSubscriptions`,/* @__PURE__ */ new Set),b(this,`intentionalClose`,!1),b(this,`reconnecting`,!1),b(this,`reconnectTimer`,void 0),b(this,`reconnectDelayResolve`,void 0),this.url=e.url??It.prod.dexBackendWsUrl,this.requestTimeoutMs=e.requestTimeoutMs??15e3,this.backoff=new Lt({maxAttempts:e.reconnectAttempts??5,baseDelayMs:e.reconnectDelayMs??2e3});let t=e.webSocketImpl??globalThis.WebSocket;if(typeof t!=`function`)throw new x(`STREAM_WEBSOCKET_UNAVAILABLE`,{});if(this.webSocketConstructor=t,e.apiKey!==void 0){if(e.apiKey===``||e.webSocketImpl===void 0)throw new x(`STREAM_API_KEY_UNUSABLE`,{});this.apiKey=e.apiKey}}connect(){return this.isConnected()?Promise.resolve():this.connectPromise?this.connectPromise:(this.intentionalClose=!1,this.clearReconnectTimer(),this.connectPromise=this.openSocket(),this.connectPromise)}disconnect(){this.intentionalClose=!0,this.reconnecting=!1,this.clearReconnectTimer(),this.rejectPending(new x(`STREAM_DISCONNECTED`,{}));let e=this.socket;this.socket=void 0,this.connectPromise=void 0,e?.close(1e3,`client disconnect`)}isConnected(){return this.socket?.readyState===1}request(e,t){return this.send(e,t)}send(e,t,n){if(!this.isConnected()||!this.socket)return Promise.reject(new x(`STREAM_NOT_CONNECTED`,{}));let r=++this.nextRequestId,i={jsonrpc:`2.0`,id:r,method:e};return t!==void 0&&(i.params=t),new Promise((t,a)=>{let o=setTimeout(()=>{this.pending.delete(r),a(new x(`STREAM_REQUEST_TIMEOUT`,{method:e,timeoutMs:this.requestTimeoutMs}))},this.requestTimeoutMs);this.pending.set(r,{resolve:e=>t(e),reject:a,timeout:o,onResult:n});try{this.socket?.send(JSON.stringify(i))}catch(e){clearTimeout(o),this.pending.delete(r),a(e instanceof Error?e:Error(String(e)))}})}serverInfo(){return this.request(`gdex_serverInfo`)}ping(){return this.request(`gdex_ping`)}getPool(e){return this.request(`gdex_getPool`,e)}getBalance(e,t){return this.request(`gdex_getBalance`,t===void 0?{owner:e}:{owner:e,tokenClassKey:t})}getPositions(e){return this.request(`gdex_getPositions`,e)}getBlockHeight(){return this.request(`gdex_getBlockHeight`)}quote(e){return this.request(`gdex_quote`,e)}getToken(e){return this.request(`gdex_getToken`,{tokenClassKey:e})}subscribeSwaps(e,t={}){return this.subscribe(`swap`,e,t)}subscribePool(e,t,n={}){return this.subscribe(`pool`,t,{...e,...n})}subscribeBalances(e,t,n={}){return this.subscribe(`balance`,t,{owner:e,...n})}subscribePoolCreated(e,t={}){return this.subscribe(`poolCreated`,e,t)}subscribeLiquidity(e,t={}){return this.subscribe(`liquidity`,t=>{Bt(t)?e(t):P(`Ignoring a malformed liquidity event from the GDEX stream`)},t)}subscribeBlocks(e,t={}){return this.subscribe(`blocks`,e,t)}openSocket(){return new Promise((e,t)=>{let n=!1,r=this.apiKey===void 0?new this.webSocketConstructor(this.url,Rt):new this.webSocketConstructor(this.url,Rt,{headers:{"x-api-key":this.apiKey}});this.socket=r,r.onopen=()=>{this.socket===r&&(n=!0,this.connectPromise=void 0,this.reconnecting||this.backoff.reset(),P(`Connected to GDEX stream`),e())},r.onmessage=e=>this.handleMessage(e.data),r.onerror=()=>{n||t(new x(`STREAM_CONNECT_FAILED`,{url:this.url}))},r.onclose=e=>{this.socket===r&&(this.socket=void 0,this.connectPromise=void 0,n||t(new x(`STREAM_CLOSED_BEFORE_CONNECT`,{closeCode:e.code??0})),this.rejectPending(new x(`STREAM_CONNECTION_CLOSED`,{closeCode:e.code??0})),!this.intentionalClose&&!this.reconnecting&&this.startReconnectLoop())}})}handleMessage(e){if(typeof e!=`string`){P(`Ignoring non-text GDEX WebSocket frame`);return}let t;try{t=JSON.parse(e)}catch{P(`Ignoring invalid JSON from GDEX stream`);return}if(typeof t.id==`number`){let e=this.pending.get(t.id);if(!e)return;if(clearTimeout(e.timeout),this.pending.delete(t.id),t.error){let n=typeof t.error.code==`number`?t.error.code:-32603,r=typeof t.error.message==`string`?t.error.message:`GDEX request failed`;e.reject(new Vt(n,r,t.error.data))}else{try{e.onResult?.(t.result)}catch(t){e.reject(t instanceof Error?t:Error(String(t)));return}e.resolve(t.result)}return}if(t.method!==`gdex_subscription`||!this.isRecord(t.params))return;let n=t.params.subscription,r=t.params.result;if(typeof n!=`string`||!this.isRecord(r))return;let i=this.subscriptionsByServerId.get(n);if(i?.active)try{i.callback(r)}catch(e){P(`GDEX subscription callback failed`,e)}}async subscribe(e,t,n){let r={channel:e,...n},i={subscriptionId:``,unsubscribe:async()=>this.unsubscribe(a)},a={serverId:``,params:r,callback:t,handle:i,active:!0};return await this.send(`gdex_subscribe`,r,e=>{let t=Ht(e);a.serverId=t,i.subscriptionId=t,this.activeSubscriptions.add(a),this.subscriptionsByServerId.set(t,a)}),i}async unsubscribe(e){e.active&&(e.active=!1,this.activeSubscriptions.delete(e),this.subscriptionsByServerId.delete(e.serverId),this.isConnected()&&await this.request(`gdex_unsubscribe`,{subscriptionId:e.serverId}))}startReconnectLoop(){this.reconnecting||this.intentionalClose||(this.reconnecting=!0,this.reconnectLoop())}async reconnectLoop(){for(;!this.intentionalClose&&this.backoff.shouldRetry();){let e=this.backoff.nextDelayMs();if(this.backoff.recordAttempt(),P(`GDEX reconnect attempt ${this.backoff.attemptCount}/${this.backoff.maxAttempts} in ${e}ms`),await this.waitForReconnectDelay(e),this.intentionalClose)break;try{await this.openSocket(),await this.resubscribeAll(),this.backoff.reset(),this.reconnecting=!1;return}catch(e){P(`GDEX reconnect failed: ${e instanceof Error?e.message:String(e)}`)}}this.reconnecting=!1,this.intentionalClose||P(`GDEX reconnection attempts exhausted`)}async resubscribeAll(){this.subscriptionsByServerId.clear();for(let e of this.activeSubscriptions){if(!e.active)continue;let t={...e.params,snapshot:!0},n=await this.resubscribeWithRateLimitRetry(t,t=>{let n=Ht(t);e.active&&(e.serverId=n,e.handle.subscriptionId=n,this.subscriptionsByServerId.set(n,e))});e.active||await this.request(`gdex_unsubscribe`,{subscriptionId:n.subscriptionId})}}async resubscribeWithRateLimitRetry(e,t){for(let n=0;;n++)try{return await this.send(`gdex_subscribe`,e,t)}catch(e){if(!(e instanceof Vt)||e.code!==-32003||n>=5)throw e;let t=this.readRetryAfterMs(e.data);P(`GDEX resubscribe rate limited; retrying in ${t}ms`),await new Promise(e=>setTimeout(e,t))}}waitForReconnectDelay(e){return new Promise(t=>{this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.reconnectDelayResolve=void 0,t()},e),this.reconnectDelayResolve=t})}clearReconnectTimer(){this.reconnectTimer!==void 0&&clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0;let e=this.reconnectDelayResolve;this.reconnectDelayResolve=void 0,e?.()}rejectPending(e){for(let t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}readRetryAfterMs(e){return!this.isRecord(e)||typeof e.retryAfterMs!=`number`||e.retryAfterMs<0?1e3:e.retryAfterMs}isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}},Wt=class{constructor(e=Se,t=3e4,n={}){this.httpRequestor=e,this.timeoutMs=t,this.wire=n}async sendRequest(e,t,n,r,i,a){let o=`${t}${n}${r}`;P(`Sending request to ${o} with body:`,i);let s=!!i,c=await Ce(this.httpRequestor,o,{method:e,headers:D(this.wire,{json:s}),...s?{body:JSON.stringify(i)}:{},...a?.signal===void 0?{}:{signal:a.signal}},this.timeoutMs);if(!c.ok)throw await x.fromErrorResponse(o,c);let l=await we(c);return P(`Response from ${t}${n}${r}:`,l),l}async sendPostRequest(e,t,n,r){return this.sendRequest(`POST`,e,t,n,r)}async sendGetRequest(e,t,n,r,i){let a=r?`${n}?${xe(r,this.wire.queryEncoding)}`:n;return this.sendRequest(`GET`,e,t,a,void 0,i)}};function Gt(e){return{ok:!0,value:e}}function F(e){return{ok:!1,reason:e}}function Kt(e,t,n,r){if(!Array.isArray(t))throw new x(`INVALID_CHAIN_RESPONSE`,{resource:`${e} list`},{body:t});let i=[];return t.forEach((t,a)=>{let o=n(t);if(o.ok){i.push(o.value);return}try{r?.({source:e,index:a,entry:t,reason:o.reason})}catch{}}),i}function qt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function Jt(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:void 0}}function I(e,t){return e<t?[e,t]:[t,e]}function Yt(e){if(Array.isArray(e)&&e.length>=2){let t=e[0],n=e[1];if(typeof t==`string`&&typeof n==`string`)return{token0:t,token1:n}}if(typeof e==`object`&&e){let t=e,n=t.token0,r=t.token1;if(typeof n==`string`&&typeof r==`string`)return{token0:n,token1:r}}throw new x(`UNORDERABLE_SYMBOLS`,{received:Array.isArray(e)?`array`:e===null?`null`:typeof e})}function L(e){return[e.collection,e.category,e.type,e.additionalKey].join(`$`)}function R(e){if(typeof e==`object`)return{collection:e.collection,category:e.category,type:e.type,additionalKey:e.additionalKey};let t=e.includes(`|`)?`|`:`$`,n=e.split(t),r=n.slice(-3),i=n.slice(0,-3).join(t);if(n.length<4||i.length===0||r.some(e=>e.length===0))throw new x(`INVALID_TOKEN_CLASS_KEY`,{tokenClassKey:e});let[a,o,s]=r;return{collection:i,category:a,type:o,additionalKey:s}}var Xt=class{constructor(e,t={}){this.gateway=e,this.options=t,b(this,`cachedSymbols`,void 0),b(this,`cachedAt`,0),b(this,`refreshInFlight`,void 0),b(this,`http`,void 0),this.http=new Wt(e.httpRequestor,e.requestTimeoutMs,e.wire)}async list(){return this.cachedSymbols!==void 0&&Date.now()-this.cachedAt<6e4?this.cachedSymbols:(this.refreshInFlight===void 0&&(this.refreshInFlight=this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,`/symbols`).then(e=>Kt(`symbols`,e.data,Zt,this.options.onInvalidEntry)).then(e=>(this.cachedSymbols=e,this.cachedAt=Date.now(),e)).finally(()=>{this.refreshInFlight=void 0})),this.refreshInFlight)}invalidate(){this.cachedSymbols=void 0,this.cachedAt=0}async refresh(){return this.invalidate(),this.refreshInFlight=void 0,this.list()}async resolve(e){let t=await this.list(),n=typeof e==`string`?Qt(e)?L(R(e)):void 0:L(e),r=t.find(t=>t.symbol===e||n!==void 0&&L(t)===n);if(r===void 0){t=await this.refresh();let r=t.find(t=>t.symbol===e||n!==void 0&&L(t)===n);if(r===void 0)throw x.unknownTokenError(e);return r}return r}async proposeSymbol(e,t,n={}){let r=[];try{r=await this.list()}catch(e){if(n.registryFailure!==`ignore`)throw e}let i=L(e),a=r.find(t=>t.collection===e.collection&&t.category===e.category&&t.type===e.type&&t.additionalKey===e.additionalKey);if(a!==void 0)return a.symbol;if(tt(t))return t;throw new x(`NO_VALID_TRADING_SYMBOL`,{classKey:i,displaySymbol:t})}async orderPair(e,t){let[n,r]=await Promise.all([this.resolve(e),this.resolve(t)]),[i,a]=I(n.symbol,r.symbol);return{token0:i===n.symbol?n:r,token1:a===r.symbol?r:n,flipped:i!==n.symbol}}};function Zt(e){let t=qt(e);if(t===void 0)return F(`the row is not an object`);let{symbol:n,collection:r,category:i,type:a,additionalKey:o,decimals:s}=t;return typeof n==`string`?n.length===0?F(`symbol is empty`):typeof r==`string`?typeof i==`string`?typeof a==`string`?typeof o==`string`?typeof s!=`number`||!Number.isInteger(s)||s<0?F(`decimals is not a non-negative integer`):Gt({symbol:n,collection:r,category:i,type:a,additionalKey:o,decimals:s}):F(`additionalKey is not a string`):F(`type is not a string`):F(`category is not a string`):F(`collection is not a string`):F(`symbol is not a string`)}function Qt(e){return e.includes(`|`)||e.includes(`$`)}function z(e){return typeof e==`string`?e:L(e)}async function B(e,t){let n=await mt(z(t),()=>e.resolve(t));if(n.symbol.length>0)return n.symbol;throw new x(`SYMBOL_NOT_FOUND`,{token:z(t)})}async function V(e,t){return e.passthrough===!0?z(t):B(e,t)}var $t=class{constructor(){b(this,`passthrough`,!0)}resolve(e){return typeof e==`string`&&!Qt(e)?Promise.resolve({symbol:e,collection:``,category:``,type:``,additionalKey:``,decimals:0}):Promise.reject(x.unknownTokenError(e))}async orderPair(e,t){let[n,r]=await Promise.all([this.resolve(e),this.resolve(t)]),[i]=I(n.symbol,r.symbol),a=i!==n.symbol;return{token0:a?r:n,token1:a?n:r,flipped:a}}invalidate(){}},en=class{constructor(e,t,n={}){this.gateway=e,this.symbols=t,this.options=n,b(this,`http`,void 0),this.http=new Wt(e.httpRequestor,e.requestTimeoutMs??3e4,e.wire)}async getPools(e){return Kt(`pools`,(await this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,`/pools`,rn(e),e?.signal===void 0?void 0:{signal:e.signal})).data,cn,e?.onInvalidEntry??this.options.onInvalidEntry)}async getPool(e,t,n){return M(n),this.getBackend(`/pool`,await this.backendParams(e,t,n))}async getSlot0(e,t,n){return M(n),this.getBackend(`/slot0`,await this.backendParams(e,t,n))}async getCompositePool(e,t,n){if(M(n),this.symbols.passthrough===!0)return this.getBackend(`/composite-pool`,{token0:z(e),token1:z(t),fee:String(n)});let r=Yt(I(await B(this.symbols,e),await B(this.symbols,t)));return this.getBackend(`/composite-pool`,{token0:r.token0,token1:r.token1,fee:String(n)})}async backendParams(e,t,n){return{token0:await V(this.symbols,e),token1:await V(this.symbols,t),fee:String(n)}}async getBackend(e,t){try{return(await this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,e,t)).data}catch(e){throw e instanceof x?e:new x(`REQUEST_FAILED`,{operation:`pool`},{cause:e})}}};const tn=[`tvl`,`volume1d`,`volume30d`],nn=1e3;function rn(e){if(e===void 0)return;let t={};if(e.search!==void 0){if(e.search.length>64)throw new x(`SEARCH_TOO_LONG`,{length:e.search.length,maxLength:64});t.search=e.search}if(e.sortBy!==void 0){if(!tn.includes(e.sortBy))throw new x(`INVALID_SORT_BY`,{value:String(e.sortBy),allowed:tn.join(`,`)});t.sortBy=e.sortBy}if(e.sortOrder!==void 0){if(e.sortOrder!==`asc`&&e.sortOrder!==`desc`)throw new x(`INVALID_SORT_ORDER`,{value:String(e.sortOrder)});t.sortOrder=e.sortOrder}if(e.page!==void 0){if(!Number.isInteger(e.page)||e.page<1)throw new x(`INVALID_PAGE`,{value:e.page});t.page=String(e.page)}if(e.limit!==void 0){if(!Number.isInteger(e.limit)||e.limit<1||e.limit>nn)throw new x(`INVALID_LIMIT`,{value:e.limit,min:1,max:nn});t.limit=String(e.limit)}return Object.keys(t).length===0?void 0:t}const an=[`poolName`,`token0CompositeKey`,`token1CompositeKey`,`token0Image`,`token1Image`,`creator`,`price`,`sqrtPrice`,`token0Tvl`,`token1Tvl`],on=[`tickSpacing`,`protocolFees`,`tradingFees`,`tick`,`volume1d`,`volume7d`,`volume30d`,`trades1d`,`fee24h`,`token0Price`,`token1Price`],sn=[`fee`,`tvlUsd`,`apr1d`];function cn(e){let t=qt(e);if(t===void 0)return F(`the row is not an object`);for(let e of[`token0`,`token1`,`poolRef`])if(typeof t[e]!=`string`)return F(`${e} is not a string`);if(t.contractVersion!==void 0&&t.contractVersion!==`v2`)return F(`contractVersion is not v2`);let n={...t};for(let e of sn){let r=t[e];if(r===void 0&&e!==`fee`)continue;let i=Jt(r);if(i===void 0)return F(`${e} is not a number`);n[e]=i}for(let e of an)if(t[e]!==void 0&&typeof t[e]!=`string`)return F(`${e} is not a string`);for(let e of on){let n=t[e];if(n!==void 0&&(typeof n!=`number`||!Number.isFinite(n)))return F(`${e} is not a number`)}return Gt(n)}const H=t=>new e(t).toFixed();function ln(e){M(e.fee),N(e.token0,e.token1),E(e.uniqueKey);let t={token0:e.token0,token1:e.token1,fee:e.fee,uniqueKey:e.uniqueKey};if(`exactIn`in e){let n=e.exactIn;if(n===void 0)throw new x(`EXACT_AMOUNT_REQUIRED`,{field:`exactIn`});j(n,`exactIn`),t[e.tokenInIsToken0?`sell0Qty`:`sell1Qty`]=H(n),e.amountOutMinimum!==void 0&&(j(e.amountOutMinimum,`amountOutMinimum`,!0),t.amountOutMinimum=H(e.amountOutMinimum))}else{let n=e.exactOut;if(n===void 0)throw new x(`EXACT_AMOUNT_REQUIRED`,{field:`exactOut`});j(n,`exactOut`),t[e.tokenInIsToken0?`buy1Qty`:`buy0Qty`]=H(n),e.amountInMaximum!==void 0&&(j(e.amountInMaximum,`amountInMaximum`,!0),t.amountInMaximum=H(e.amountInMaximum))}return e.priceLimit!==void 0&&(j(e.priceLimit,`priceLimit`),t.priceLimit=H(e.priceLimit)),t}function un(e){M(e.fee),N(e.token0,e.token1),A(e.tickLower,e.tickUpper,e.fee),E(e.uniqueKey)}function dn(e){un(e);let t=gn(e.depositQuantityToken0,e.depositQuantityToken1,`depositQuantityToken0`,`depositQuantityToken1`);if(t===void 0)throw new x(`EXACTLY_ONE_OF_REQUIRED`,{first:`depositQuantityToken0`,second:`depositQuantityToken1`});return j(t.amount,t.name),{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper,uniqueKey:e.uniqueKey,[t.name]:H(t.amount)}}function fn(e){un(e);let t=gn(e.withdrawalQuantityToken0,e.withdrawalQuantityToken1,`withdrawalQuantityToken0`,`withdrawalQuantityToken1`,!0);return t!==void 0&&j(t.amount,t.name),{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper,uniqueKey:e.uniqueKey,...t===void 0?{}:{[t.name]:H(t.amount)}}}function pn(e){return un(e),{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper,uniqueKey:e.uniqueKey}}function mn(t){M(t.fee),E(t.uniqueKey),N(t.token0Symbol,t.token1Symbol);for(let e of[t.token0Symbol,t.token1Symbol])if(!tt(e))throw new x(`INVALID_TRADING_SYMBOL`,{symbol:e});for(let e of[t.token0Key,t.token1Key])hn(e);let n=gn(t.startingPrice,t.startingSqrtPrice,`startingPrice`,`startingSqrtPrice`);if(n===void 0)throw new x(`EXACTLY_ONE_OF_REQUIRED`,{first:`startingPrice`,second:`startingSqrtPrice`});if(typeof n.amount==`number`)throw new x(`AMOUNT_IS_JS_NUMBER`,{field:n.name});let r=new e(n.amount);if(!r.isFinite()||r.isLessThanOrEqualTo(0))throw new x(`INVALID_STARTING_PRICE`,{value:String(n.amount)});return{token0Key:t.token0Key,token1Key:t.token1Key,fee:t.fee,[n.name]:r.toFixed(),token0Symbol:t.token0Symbol,token1Symbol:t.token1Symbol,uniqueKey:t.uniqueKey,...t.name===void 0||t.name===``?{}:{name:t.name},...t.isPrivate===void 0?{}:{isPrivate:t.isPrivate},...t.privateAccess===void 0?{}:{privateAccess:t.privateAccess}}}function hn(e){for(let t of[`collection`,`category`,`type`,`additionalKey`])if(typeof e[t]!=`string`||e[t].length===0)throw new x(`INCOMPLETE_TOKEN_CLASS_KEY`,{compositeKey:[e.collection,e.category,e.type,e.additionalKey].join(`$`),part:t})}function gn(e,t,n,r,i=!1){if(e!==void 0&&t!==void 0)throw i?new x(`AT_MOST_ONE_OF_ALLOWED`,{first:n,second:r}):new x(`EXACTLY_ONE_OF_REQUIRED`,{first:n,second:r});if(e!==void 0)return{name:n,amount:e};if(t!==void 0)return{name:r,amount:t}}function U(e,t,n){return new x(`INVALID_DTO`,{method:e,field:t,expected:n})}function _n(e,t){let n=n=>{let r=t[n];if(typeof r!=`string`)throw U(e,n,`string`);return r},r=n=>{let r=t[n];if(typeof r!=`number`)throw U(e,n,`number`);return r},i=e=>t[e]===void 0?void 0:n(e),a=n=>{let r=t[n];if(typeof r!=`object`||!r)throw U(e,n,`class_key`);let i=r,a=t=>{if(typeof i[t]!=`string`)throw U(e,`${n}.${t}`,`string`);return i[t]};return{collection:a(`collection`),category:a(`category`),type:a(`type`),additionalKey:a(`additionalKey`)}},o=()=>({token0:n(`token0`),token1:n(`token1`),fee:r(`fee`)}),s=n(`uniqueKey`),c=()=>({...o(),uniqueKey:s,tickLower:r(`tickLower`),tickUpper:r(`tickUpper`)});switch(e){case`RequestTrade`:{let r=[`sell0Qty`,`sell1Qty`,`buy0Qty`,`buy1Qty`].filter(e=>t[e]!==void 0),[a]=r;if(r.length!==1||a===void 0)throw U(e,`sell0Qty|sell1Qty|buy0Qty|buy1Qty`,`exactly_once`);let c=a===`sell0Qty`||a===`buy1Qty`,l={...o(),uniqueKey:s,tokenInIsToken0:c},u=i(`priceLimit`);return a.startsWith(`sell`)?ln({...l,exactIn:n(a),amountOutMinimum:i(`amountOutMinimum`),priceLimit:u}):ln({...l,exactOut:n(a),amountInMaximum:i(`amountInMaximum`),priceLimit:u})}case`AddLiquidity`:{let e=i(`depositQuantityToken0`),t=i(`depositQuantityToken1`);return dn({...c(),...e===void 0?{depositQuantityToken1:t}:{depositQuantityToken0:e}})}case`RemoveLiquidity`:return fn({...c(),withdrawalQuantityToken0:i(`withdrawalQuantityToken0`),withdrawalQuantityToken1:i(`withdrawalQuantityToken1`)});case`CollectPositionFees`:return pn(c());case`CreatePool`:{let o=i(`startingPrice`),c=i(`startingSqrtPrice`),l=t.privateAccess;if(l!==void 0&&(!Array.isArray(l)||l.some(e=>typeof e!=`string`)))throw U(e,`privateAccess`,`string_array`);if(t.isPrivate!==void 0&&typeof t.isPrivate!=`boolean`)throw U(e,`isPrivate`,`boolean`);return mn({token0Key:a(`token0Key`),token1Key:a(`token1Key`),token0Symbol:n(`token0Symbol`),token1Symbol:n(`token1Symbol`),fee:r(`fee`),uniqueKey:s,name:i(`name`),isPrivate:t.isPrivate,privateAccess:l,...o===void 0?{startingSqrtPrice:c}:{startingPrice:o}})}}}function W(e,t){let n=_n(e,t);if(JSON.stringify(n)!==JSON.stringify(t))throw new x(`DTO_NOT_CANONICAL`,{method:e})}function vn(e){return{token0:e.token0,token1:e.token1,fee:e.fee,tickLower:e.tickLower,tickUpper:e.tickUpper}}var yn=class{constructor(e,t,n,r,i={}){this.gateway=e,this.symbols=t,this.signer=n,this.walletAddress=r,b(this,`http`,void 0),b(this,`uniqueKeyPrefix`,void 0),b(this,`onInvalidEntry`,void 0),this.http=new Wt(e.httpRequestor,e.requestTimeoutMs??3e4,e.wire),this.uniqueKeyPrefix=pe(i.uniqueKeyPrefix),this.onInvalidEntry=i.onInvalidEntry}async getUserPositions(e){return Kt(`positions`,(await this.get(`/positions`,{user:e})).data,Cn,this.onInvalidEntry)}async getPosition(e,t){let n=await this.getNullable(`/position`,await this.positionParams(e),t);return n===null?null:wn(n.data)}async readPosition(e,t){try{let n=await this.getPosition(e,t);return n===null?{kind:`not_found`}:{kind:`found`,data:n}}catch(e){if(t?.aborted===!0)throw e;return{kind:`unknown`,error:C(e)?e:new x(`REQUEST_FAILED`,{operation:`position`},{cause:e})}}}async positionParams(e){if(this.symbols.passthrough===!0)return{token0:z(e.token0),token1:z(e.token1),fee:`${e.fee}`,owner:e.owner,tickLower:`${e.tickLower}`,tickUpper:`${e.tickUpper}`};let t=await this.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);return{token0:t.token0.symbol,token1:t.token1.symbol,fee:`${e.fee}`,owner:e.owner,tickLower:`${n.tickLower}`,tickUpper:`${n.tickUpper}`}}async estimateAddLiquidity(t){return j(t.amount,`amount`),(await this.get(`/add-liq-estimate`,{token0:z(t.token0),token1:z(t.token1),fee:`${t.fee}`,tickLower:`${t.tickLower}`,tickUpper:`${t.tickUpper}`,amount:new e(t.amount).toFixed(),amountIsToken0:String(t.amountIsToken0)})).data}async estimateRemoveLiquidity(t){return j(t.liquidity,`liquidity`),(await this.get(`/remove-liq-estimate`,{token0:z(t.token0),token1:z(t.token1),fee:`${t.fee}`,tickLower:`${t.tickLower}`,tickUpper:`${t.tickUpper}`,liquidity:new e(t.liquidity).toFixed()})).data}async addLiquidityByTicks(e){return this.submitAddLiquidity(await this.buildAddLiquidity(e))}async buildAddLiquidity(e){M(e.fee);let t=await this.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);A(n.tickLower,n.tickUpper,e.fee),j(e.amount,`amount`);let r={token0:t.token0.symbol,token1:t.token1.symbol,fee:e.fee,tickLower:n.tickLower,tickUpper:n.tickUpper,uniqueKey:this.uniqueKeyFor(e.uniqueKey)};return t.flipped===e.amountIsToken0?dn({...r,depositQuantityToken1:e.amount}):dn({...r,depositQuantityToken0:e.amount})}async submitAddLiquidity(e){return W(`AddLiquidity`,e),this.submit(`AddLiquidity`,e,{kind:`add`,identity:vn(e)})}async addLiquidityByPrice(t){M(t.fee),this.rejectNumber(t.minPrice,`minPrice`),this.rejectNumber(t.maxPrice,`maxPrice`);let n=new e(t.minPrice),r=new e(t.maxPrice);if(!n.isFinite()||!r.isFinite()||n.isLessThanOrEqualTo(0)||r.isLessThanOrEqualTo(0))throw new x(`INVALID_PRICE_BOUNDS`,{minPrice:String(t.minPrice),maxPrice:String(t.maxPrice)});if(n.isGreaterThan(r))throw new x(`PRICE_BOUNDS_ORDER`,{minPrice:String(t.minPrice),maxPrice:String(t.maxPrice)});let i=this.tickSpacing(t.fee),a=We(Ue(n),i),o=Ge(Ue(r),i);return this.addLiquidityByTicks({token0:t.token0,token1:t.token1,fee:t.fee,tickLower:a,tickUpper:o,amount:t.amount,amountIsToken0:t.amountIsToken0,uniqueKey:t.uniqueKey})}async removeLiquidity(e){return this.submitRemoveLiquidity(await this.buildRemoveLiquidity(e))}async buildRemoveLiquidity(e){M(e.fee);let t=await this.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);if(A(n.tickLower,n.tickUpper,e.fee),e.amount0!==void 0&&e.amount1!==void 0)throw new x(`AT_MOST_ONE_OF_ALLOWED`,{first:`amount0`,second:`amount1`});e.amount0!==void 0&&j(e.amount0,`amount0`),e.amount1!==void 0&&j(e.amount1,`amount1`);let[r,i]=t.flipped?[e.amount1,e.amount0]:[e.amount0,e.amount1];return fn({token0:t.token0.symbol,token1:t.token1.symbol,fee:e.fee,tickLower:n.tickLower,tickUpper:n.tickUpper,uniqueKey:this.uniqueKeyFor(e.uniqueKey),withdrawalQuantityToken0:r,withdrawalQuantityToken1:i})}async submitRemoveLiquidity(e){W(`RemoveLiquidity`,e);let t=e.withdrawalQuantityToken0===void 0&&e.withdrawalQuantityToken1===void 0;return this.submit(`RemoveLiquidity`,e,{kind:t?`removeFull`:`removePartial`,identity:vn(e)})}async collectPositionFees(e){return this.submitCollectPositionFees(await this.buildCollectPositionFees(e))}async buildCollectPositionFees(e){M(e.fee);let t=await this.orderPair(e.token0,e.token1),n=this.canonicalTicks(e.tickLower,e.tickUpper,t.flipped);return A(n.tickLower,n.tickUpper,e.fee),pn({token0:t.token0.symbol,token1:t.token1.symbol,fee:e.fee,tickLower:n.tickLower,tickUpper:n.tickUpper,uniqueKey:this.uniqueKeyFor(e.uniqueKey)})}async submitCollectPositionFees(e){return W(`CollectPositionFees`,e),this.submit(`CollectPositionFees`,e,{kind:`collect`,identity:vn(e)})}async createPool(e){return this.submitCreatePool(await this.buildCreatePool(e))}async buildCreatePool(t){let n=t.startingPrice!==void 0;if(n===(t.startingSqrtPrice!==void 0))throw new x(`EXACTLY_ONE_OF_REQUIRED`,{first:`startingPrice`,second:`startingSqrtPrice`});M(t.fee);let[r,i]=await Promise.all([this.resolveCreateToken(t.token0,t.token0Symbol),this.resolveCreateToken(t.token1,t.token1Symbol)]),a=r.symbol>i.symbol,[o,s]=a?[i,r]:[r,i],c=n?t.startingPrice:t.startingSqrtPrice;this.rejectNumber(c,n?`startingPrice`:`startingSqrtPrice`);let l=new e(c);if(!l.isFinite()||l.isLessThanOrEqualTo(0))throw new x(`INVALID_STARTING_PRICE`,{value:String(c)});let u=a?new e(1).dividedBy(l):l,d={token0Key:o.classKey,token1Key:s.classKey,token0Symbol:o.symbol,token1Symbol:s.symbol,fee:t.fee,uniqueKey:this.uniqueKeyFor(t.uniqueKey),name:t.name,isPrivate:t.isPrivate,privateAccess:t.privateAccess};return mn(n?{...d,startingPrice:u}:{...d,startingSqrtPrice:u})}async submitCreatePool(e){W(`CreatePool`,e);let t=await this.submit(`CreatePool`,e,{kind:`createPool`,token0:e.token0Symbol,token1:e.token1Symbol,fee:e.fee});return this.symbols.invalidate?.(),t}async submit(e,t,n){if(this.signer===void 0)throw x.noSignerError();let r=await pt(this.signer,e,t),i=this.walletAddress===void 0?{}:{walletAddress:this.walletAddress},a=this.walletAddress,o=this.buildPositionConfirmation(n,a),s={...i,...o===void 0?{}:{positionConfirmation:o}};return this.gateway.submit(e,r,s)}buildPositionConfirmation(t,n){if(t===void 0)return;if(t.kind===`createPool`){let{token0:e,token1:n,fee:r}=t;return async t=>await this.getNullable(`/pool`,{token0:e,token1:n,fee:`${r}`},t)===null?{confirmed:!1}:{confirmed:!0,position:null}}if(n===void 0)return;let{kind:r,identity:i}=t,a;return async t=>{let o=await this.getPosition({...i,owner:n},t);if(a===void 0)return a={liquidity:new e(o?.liquidity??0),fees:new e(o?.fees0??0).plus(new e(o?.fees1??0))},r===`removeFull`&&o===null?{confirmed:!0,position:null}:{confirmed:!1};switch(r){case`add`:return o!==null&&new e(o.liquidity).isGreaterThan(a.liquidity)?{confirmed:!0,position:o}:{confirmed:!1};case`removePartial`:return o!==null&&new e(o.liquidity).isLessThan(a.liquidity)?{confirmed:!0,position:o}:{confirmed:!1};case`removeFull`:return o===null?{confirmed:!0,position:null}:{confirmed:!1};case`collect`:{if(o===null)return{confirmed:!1};let t=new e(o.fees0??0).plus(new e(o.fees1??0));return t.isLessThan(a.fees)||a.fees.isZero()&&t.isZero()?{confirmed:!0,position:o}:{confirmed:!1}}}}}async get(e,t,n){return this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,e,t,n===void 0?void 0:{signal:n})}async getNullable(e,t,n){try{return await this.get(e,t,n)}catch(e){if(this.isNotFound(e))return null;throw e}}isNotFound(e){return e instanceof x&&e.status===404}canonicalTicks(e,t,n){return n?{tickLower:-t,tickUpper:-e}:{tickLower:e,tickUpper:t}}tickSpacing(e){let t=Ie[e];if(t===void 0)throw new x(`INVALID_FEE`,{field:`fee`,value:e,allowed:_});return t}rejectNumber(e,t){if(typeof e==`number`)throw new x(`AMOUNT_IS_JS_NUMBER`,{field:t})}uniqueKeyFor(e){return e===void 0?he(this.uniqueKeyPrefix):(E(e),e)}orderPair(e,t){return mt(`${z(e)}/${z(t)}`,()=>this.symbols.orderPair(e,t))}async resolveCreateToken(e,t){try{let n=typeof e==`object`?L(e):e,r=await mt(z(e),()=>this.symbols.resolve(n));if(t!==void 0&&t!==``&&t!==r.symbol)throw new x(`SYMBOL_DISAGREES_WITH_REGISTRY`,{token:z(e),suppliedSymbol:t,registeredSymbol:r.symbol});let i=this.tryParseClassKey(e);if(i===void 0&&r.collection===``)throw new x(`CREATE_POOL_NEEDS_CLASS_KEY`,{token:z(e)});return{symbol:r.symbol,classKey:i??R({collection:r.collection,category:r.category,type:r.type,additionalKey:r.additionalKey})}}catch(n){if(!(n instanceof x)||n.code!==`UNKNOWN_TOKEN`)throw n;let r;try{r=R(e)}catch{throw n}if(t===void 0||t===``)throw new x(`TOKEN_SYMBOL_NOT_REGISTERED`,{token:z(e)});if(!tt(t))throw new x(`INVALID_TRADING_SYMBOL`,{symbol:t});return{symbol:t,classKey:r}}}tryParseClassKey(e){try{return R(e)}catch{return}}};const bn=[`token0Symbol`,`token1Symbol`,`owner`,`liquidity`,`amount0`,`amount1`],xn=[`fee`,`tickLower`,`tickUpper`],Sn=[`token0CompositeKey`,`token1CompositeKey`,`token0Image`,`token1Image`,`sqrtPrice`,`fees0`,`fees1`];function Cn(e){let t=qt(e);if(t===void 0)return F(`the row is not an object`);for(let e of bn)if(typeof t[e]!=`string`)return F(`${e} is not a string`);for(let e of xn){let n=t[e];if(typeof n!=`number`||!Number.isFinite(n))return F(`${e} is not a number`)}if(typeof t.inRange!=`boolean`)return F(`inRange is not a boolean`);for(let e of Sn)if(t[e]!==void 0&&typeof t[e]!=`string`)return F(`${e} is not a string`);let n=t.currentTick;if(n!==void 0&&(typeof n!=`number`||!Number.isFinite(n)))return F(`currentTick is not a number`);let r=t.poolRef??t.pool??``;if(typeof r!=`string`)return F(`pool is not a string`);let i=Object.fromEntries([...Sn,`currentTick`].flatMap(e=>t[e]===void 0?[]:[[e,t[e]]]));return Gt({token0Symbol:t.token0Symbol,token1Symbol:t.token1Symbol,fee:t.fee,tickLower:t.tickLower,tickUpper:t.tickUpper,liquidity:t.liquidity,amount0:t.amount0,amount1:t.amount1,inRange:t.inRange,pool:r,owner:t.owner,...i})}function wn(e){let t=Cn(e);if(t.ok)return t.value;throw new x(`INVALID_POSITION_RESPONSE`,{reason:t.reason},{body:e})}var Tn=class{constructor(e,t){this.gateway=e,this.symbols=t,b(this,`http`,void 0),this.http=new Wt(e.httpRequestor,e.requestTimeoutMs??3e4,e.wire)}async quoteExactInput(e,t,n,r){return j(n,`amountIn`),this.quote(e,t,{amountIn:In(n)},r)}async quoteExactOutput(e,t,n,r){return j(n,`amountOut`),this.quote(e,t,{amountOut:In(n)},r)}async quote(e,t,n,r){Fn(r);let i={tokenIn:await V(this.symbols,e),tokenOut:await V(this.symbols,t),...n};r!==void 0&&(i.fee=String(r));try{return En((await this.http.sendGetRequest(this.gateway.dexBackendBaseUrl,`/v2/trade`,`/quote`,i)).data)}catch(n){throw Pn(n,e,t,r,{tokenIn:i.tokenIn??``,tokenOut:i.tokenOut??``})}}};function En(t){if(!kn(t))throw new x(`INVALID_CHAIN_RESPONSE`,{resource:`quote`},{body:t});let n=t,r=n.currentPrice===void 0?On(n.currentSqrtPrice,n.tokenInIsToken0):new e(n.currentPrice),i=n.newPrice===void 0?On(n.newSqrtPrice,n.tokenInIsToken0):new e(n.newPrice),a=i.minus(r).dividedBy(r);return{contractVersion:n.contractVersion,fee:n.fee,amountIn:n.amountIn,amountOut:n.amountOut,...n.currentSqrtPrice===void 0?{}:{currentSqrtPrice:n.currentSqrtPrice},...n.newSqrtPrice===void 0?{}:{newSqrtPrice:n.newSqrtPrice},feeTier:n.fee,newTick:n.newTick,tradingFees:n.tradingFees,protocolFees:n.protocolFees,totalFees:n.totalFees,feeTokenSymbol:n.feeTokenSymbol,token0Symbol:n.token0Symbol,token1Symbol:n.token1Symbol,tokenInIsToken0:n.tokenInIsToken0,currentPrice:r,newPrice:i,priceImpact:a}}const Dn=e.clone({DECIMAL_PLACES:60});function On(e,t){let n=new Dn(e).pow(2);return t?n:new Dn(1).dividedBy(n)}function kn(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.contractVersion===`v2`&&typeof t.fee==`number`&&Number.isFinite(t.fee)&&[`amountIn`,`amountOut`,`tradingFees`,`protocolFees`,`totalFees`,`feeTokenSymbol`,`token0Symbol`,`token1Symbol`].every(e=>typeof t[e]==`string`)&&typeof t.newTick==`number`&&Number.isInteger(t.newTick)&&typeof t.tokenInIsToken0==`boolean`&&An(t.currentSqrtPrice)&&An(t.newSqrtPrice)&&An(t.currentPrice)&&An(t.newPrice)&&(t.currentSqrtPrice!==void 0||t.currentPrice!==void 0)&&(t.newSqrtPrice!==void 0||t.newPrice!==void 0)}function An(t){if(t===void 0)return!0;if(typeof t!=`string`)return!1;try{let n=new e(t);return n.isFinite()&&n.isGreaterThan(0)}catch{return!1}}const jn=/no pool|no pools|pool does not exist/iu,Mn=/Token (\S+) has no trading symbol on the new DEX contract/u;function Nn(e,t,n,r){return e===t.tokenIn?n:e===t.tokenOut?r:e}function Pn(e,t,n,r,i){if(C(e)){let a=f(e)??``,o=Mn.exec(a)?.[1];return o===void 0?e.status===404||jn.test(a)?x.noPoolAvailableError(t,n,r,e):e.status===400&&/insufficient liquidity/iu.test(a)?x.insufficientLiquidityError(t,n,r,e):e:x.unknownTokenError(Nn(o,i,t,n),e)}return new x(`REQUEST_FAILED`,{operation:`quote`},{cause:e})}function Fn(e){if(e!==void 0&&!Le.some(t=>Number(t)===Number(e)))throw new x(`INVALID_FEE`,{field:`fee`,value:Number(e),allowed:_})}function In(t){return new e(t).toFixed()}const Ln=[`SHADOW_UNAVAILABLE`,`SHADOW_DISABLED`,`SHADOW_UNSUPPORTED_TYPE`,`SHADOW_RELAY_REJECTED`],Rn=[`unavailable`,`disabled`,`rejected`,`unknown`];function zn(e){return e===503?`unavailable`:e===400?`disabled`:`unknown`}function Bn(e,t){return t===`SHADOW_UNAVAILABLE`?`unavailable`:t===`SHADOW_RELAY_REJECTED`?`rejected`:t===`SHADOW_DISABLED`||t===`SHADOW_UNSUPPORTED_TYPE`?`disabled`:zn(e)}function Vn(e,t,n){let{httpStatus:r,body:i}=n,a=Hn(i);if(r>=200&&r<300&&a?.error===!1){let n=Hn(a.data),o=typeof n?.transactionId==`string`?n.transactionId:void 0;if(e===`RequestTrade`){let e=t.uniqueKey;if(n?.mode!==`queued`||typeof e!=`string`||n.uniqueKey!==e)throw new x(`SHADOW_NOT_QUEUED`,{},{status:r,body:i,shadow:!0,...typeof e==`string`?{uniqueKey:e}:{}});return{ok:!0,bundleId:o??``,queued:{uniqueKey:e,requestTransactionId:o??null}}}if(n?.mode===`sync`)return{ok:!0,bundleId:o??``}}let o=Bn(r,w(i,`code`));return o===`rejected`?{ok:!1,kind:`rejected`,retryable:!1,message:w(i,`message`)??``}:o===`unavailable`?{ok:!1,kind:o,retryable:!0}:{ok:!1,kind:o,retryable:!1}}function Hn(e){return typeof e==`object`&&e?e:void 0}function Un(e){M(e.fee),N(e.token0Symbol,e.token1Symbol);let[t,n]=e.tokenInIsToken0?[e.token0Symbol,e.token1Symbol]:[e.token1Symbol,e.token0Symbol];return{tokenIn:t,tokenOut:n,fee:e.fee,pool:{token0:e.token0Symbol,token1:e.token1Symbol}}}var Wn=class{constructor(e,t,n,r,i={}){this.gateway=e,this.symbols=t,this.signer=n,this.walletAddress=r,b(this,`uniqueKeyPrefix`,void 0),this.uniqueKeyPrefix=pe(i.uniqueKeyPrefix)}async swap(e,t,n,r,i){return this.submitSwap(await this.buildSwap(e,t,n,r,i))}async swapShadow(e,t,n,r,i){return Dt(async()=>this.submitSwapShadow(await this.buildSwap(e,t,n,r,i)))}async buildSwap(e,t,n,r,i){M(n);let a=i?.uniqueKey??he(this.uniqueKeyPrefix);E(a);let o=await B(this.symbols,e),s=await B(this.symbols,t),c=this.orientPool(o,s,i?.pool);return ln({token0:c.token0,token1:c.token1,fee:n,tokenInIsToken0:o===c.token0,uniqueKey:a,...r})}async submitSwap(e){let t=await this.signRequestTrade(e);return this.gateway.submit(`RequestTrade`,t,this.submitOptions())}async submitSwapShadow(e){return Dt(async()=>{let t=await this.signRequestTrade(e);return Vn(`RequestTrade`,t,await this.gateway.submitShadow(`RequestTrade`,t,this.submitOptions()))})}submitOptions(){return this.walletAddress===void 0?{}:{walletAddress:this.walletAddress}}async signRequestTrade(e){if(W(`RequestTrade`,e),this.signer===void 0)throw x.noSignerError();return pt(this.signer,`RequestTrade`,e)}orientPool(e,t,n){if(n===void 0)return Yt(I(e,t));if(!(e===n.token0&&t===n.token1||e===n.token1&&t===n.token0))throw new x(`POOL_MISMATCH`,{tokenIn:e,tokenOut:t,poolToken0:n.token0,poolToken1:n.token1});return{token0:n.token0,token1:n.token1}}async confirmSwap(e,t){return E(e),new Ot({method:`RequestTrade`,uniqueKey:e,transactionId:null,mode:`queued`,result:void 0,dexBackendBaseUrl:this.gateway.dexBackendBaseUrl,httpRequestor:this.gateway.httpRequestor,requestTimeoutMs:this.gateway.requestTimeoutMs,wire:this.gateway.wire}).confirm({initialDelayMs:0,...t})}},Gn=class{constructor(e){b(this,`dexBackendBaseUrl`,void 0),b(this,`chainCallTimeoutMs`,void 0),b(this,`signer`,void 0),b(this,`walletAddress`,void 0),b(this,`gateway`,void 0),b(this,`symbols`,void 0),b(this,`quoting`,void 0),b(this,`pools`,void 0),b(this,`positions`,void 0),b(this,`swaps`,void 0),b(this,`assets`,void 0),b(this,`fees`,void 0),b(this,`dexBackendWsUrl`,void 0),b(this,`webSocketImpl`,void 0),b(this,`streamApiKey`,void 0),b(this,`streamClient`,void 0);let t=It[e?.env??`prod`];this.dexBackendBaseUrl=Kn(e?.dexBackendBaseUrl??t.dexBackendBaseUrl),this.chainCallTimeoutMs=e?.chainCallTimeoutMs??3e4,this.signer=e?.signer,this.walletAddress=e?.walletAddress;let n=new Wt(e?.httpRequestor,this.chainCallTimeoutMs,e?.wire);this.gateway=new kt({dexBackendBaseUrl:this.dexBackendBaseUrl,chainCallTimeoutMs:this.chainCallTimeoutMs,...e?.wire===void 0?{}:{wire:e.wire},...e?.httpRequestor===void 0?{}:{httpRequestor:e.httpRequestor},...this.walletAddress===void 0?{}:{walletAddress:this.walletAddress}});let r={onInvalidEntry:e?.onInvalidEntry};this.symbols=new Xt(this.gateway,r);let i=e?.symbolResolution===`canonical`?new $t:this.symbols;this.quoting=new Tn(this.gateway,i),this.pools=new en(this.gateway,i,r);let a={uniqueKeyPrefix:e?.uniqueKeyPrefix,...r};this.positions=new yn(this.gateway,i,this.signer,this.walletAddress,a),this.swaps=new Wn(this.gateway,i,this.signer,this.walletAddress,a),this.assets=new nt(this.dexBackendBaseUrl,n),this.fees=new St(this.gateway,this.signer),this.dexBackendWsUrl=e?.dexBackendWsUrl??(e?.dexBackendBaseUrl===void 0?t.dexBackendWsUrl:`${this.dexBackendBaseUrl.replace(/^http/u,`ws`)}/ws`),this.webSocketImpl=e?.webSocketImpl,this.streamApiKey=e?.streamApiKey}get stream(){return this.streamClient??(this.streamClient=new Ut({url:this.dexBackendWsUrl,...this.webSocketImpl===void 0?{}:{webSocketImpl:this.webSocketImpl},...this.streamApiKey===void 0?{}:{apiKey:this.streamApiKey}})),this.streamClient}};function Kn(e){return e.replace(/\/$/u,``)}const qn=`pendingSwaps.v1`,Jn=6048e5,Yn=[`expired`,`invalid_unique_key`];var Xn=class{constructor(e,t={}){this.storage=e,b(this,`storageKey`,void 0),b(this,`darkFlagField`,void 0),b(this,`insertAt`,void 0),b(this,`listOrder`,void 0),b(this,`now`,void 0),b(this,`onPrune`,void 0),b(this,`queue`,Promise.resolve()),b(this,`toStored`,e=>({uniqueKey:e.uniqueKey,requestTransactionId:e.requestTransactionId,wallet:e.wallet,token0Symbol:e.token0Symbol,token1Symbol:e.token1Symbol,[this.darkFlagField]:e.isDarkSwap,createdAt:e.createdAt})),this.storageKey=t.storageKey??`pendingSwaps.v1`,this.darkFlagField=t.darkFlagField??`isDarkSwap`,this.insertAt=t.insertAt??`end`,this.listOrder=t.listOrder??`stored`,this.now=t.now??Date.now,this.onPrune=t.onPrune}remember(e){return T(e.uniqueKey)?this.enqueue(async t=>{let n=(await this.read(t)).filter(t=>t.uniqueKey!==e.uniqueKey).map(this.toStored),r=this.toStored(e);await t.set(this.storageKey,this.insertAt===`end`?[...n,r]:[r,...n])}):(this.report([{swap:e,reason:`invalid_unique_key`}]),Promise.resolve())}forget(e){return this.enqueue(async t=>{let n=await this.read(t);await t.set(this.storageKey,n.filter(t=>t.uniqueKey!==e).map(this.toStored))})}async list(e){return await this.enqueue(async t=>{let n=await this.read(t),r=this.now(),i=[],a=[];for(let e of n){let t=this.pruneReasonOf(e,r);t===void 0?a.push(e):i.push({swap:e,reason:t})}i.length>0&&(await t.set(this.storageKey,a.map(this.toStored)),this.report(i));let o=a.filter(t=>t.wallet===e);return this.listOrder===`newest-first`?o.sort((e,t)=>t.createdAt-e.createdAt):o})??[]}pruneReasonOf(e,t){return T(e.uniqueKey)?t-e.createdAt<6048e5?void 0:`expired`:`invalid_unique_key`}report(e){for(let t of e)try{this.onPrune?.(t)}catch{}}enqueue(e){let t=this.storage;if(t===void 0)return Promise.resolve(void 0);let n=this.queue.then(async()=>{try{return await e(t)}catch{return}});return this.queue=n,n}async read(e){let t=await e.get(this.storageKey);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=this.fromStored(e);t!==void 0&&n.push(t)}return n}fromStored(e){if(typeof e!=`object`||!e)return;let t=e,n=t[this.darkFlagField],{uniqueKey:r,requestTransactionId:i,wallet:a,token0Symbol:o,token1Symbol:s,createdAt:c}=t;if(!(typeof r!=`string`||typeof i!=`string`&&i!==null||typeof a!=`string`||typeof o!=`string`||typeof s!=`string`||typeof n!=`boolean`||typeof c!=`number`||!Number.isFinite(c)))return{uniqueKey:r,requestTransactionId:i,wallet:a,token0Symbol:o,token1Symbol:s,isDarkSwap:n,createdAt:c}}};function Zn(e,t){let n={};n[e]=[];function r(e){let t=n[e];
|
|
2
2
|
/* c8 ignore next */
|
|
3
|
-
if(!t)throw Error(`Missing EIP-712 type definition for ${e}`);return t}function i(e,t,a,o=!1){if(Array.isArray(t)){let n=t.length>0?i(e,t[0],a,!0):`string`;o||r(a).push({name:e,type:(n??e)+`[]`})}else if(typeof t==`object`&&t){if(n[e])throw new
|
|
4
|
-
`;function
|
|
5
|
-
`)&&br.test(e.slice(26))}const Sr=[`signature`,`multisig`,`trace`,`types`,`domain`,`stringsInstructions`];function Cr(e){let t;try{t=JSON.parse(e)}catch{throw new b(`PERSONAL_SIGN_NOT_JSON`,{})}if(typeof t!=`object`||!t||Array.isArray(t))throw new b(`PERSONAL_SIGN_NOT_OBJECT`,{});let n=t;if(!Object.prototype.hasOwnProperty.call(n,`prefix`))return{prefix:``,message:e};let{prefix:r,...i}=n;if(typeof r!=`string`||!xr(r))throw new b(`PERSONAL_SIGN_BAD_PREFIX`,{});let a=Sr.filter(e=>Object.prototype.hasOwnProperty.call(i,e));if(a.length>0)throw new b(`PERSONAL_SIGN_ENVELOPE_FIELDS`,{fields:a.join(`, `)});if(K(n)!==e)throw new b(`PERSONAL_SIGN_NOT_CANONICAL`,{});return{prefix:r,message:K(i)}}function wr(e,t){let{prefix:n,message:r}=Cr(t);return yr(e,n,r)}function Tr(e,t){let n={...t};return delete n.signature,{signature:vr(e,K(n)),...n}}function Er(e){let t={};for(let n of Object.keys(e))n!==`EIP712Domain`&&(t[n]=e[n]);return t}function Dr(e){let t=t=>{let n=e?.[t];return typeof n==`string`?n:``};return`${t(`collection`)}$${t(`category`)}$${t(`type`)}$${t(`additionalKey`)}`}function Or(t){let n=new e(NaN);try{n=new e(t)}catch{}if(!n.isFinite())throw new b(`INVALID_DECIMAL`,{value:String(t)});return n.toFixed()}const kr=new TextEncoder,Ar=/^[A-Za-z_$][A-Za-z0-9_$]*$/u,jr=/^([A-Za-z_$][A-Za-z0-9_$]*)((?:\[(?:0|[1-9][0-9]*)?\])*)$/u,Mr=/^-?[0-9]+$/u,Nr=/^-?0x[0-9a-fA-F]+$/u,Pr=[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`},{name:`salt`,type:`bytes32`}];function J(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function Fr(e){let t=/* @__PURE__ */ new Uint8Array(32),n=e<0n?e+(1n<<256n):e;for(let e=31;e>=0;--e)t[e]=Number(n&255n),n>>=8n;return t}function Ir(e){let t=e.slice(2),n=new Uint8Array(t.length/2);for(let e=0;e<n.length;e+=1)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function Lr(e,t){if(e instanceof Uint8Array)return e;if(typeof e==`string`&&/^0x(?:[0-9a-fA-F]{2})*$/u.test(e))return Ir(e);throw new b(`TYPED_DATA_NOT_HEX_BYTES`,{what:t})}function Rr(e,t){if(typeof e==`bigint`)return e;if(typeof e==`number`){if(!Number.isSafeInteger(e))throw new b(`TYPED_DATA_NOT_SAFE_INTEGER`,{what:t});return BigInt(e)}if(typeof e==`string`){if(Mr.test(e))return BigInt(e);if(Nr.test(e))return e.startsWith(`-`)?-BigInt(e.slice(1)):BigInt(e)}throw new b(`TYPED_DATA_NOT_INTEGER`,{what:t})}function zr(e,t){if(typeof e!=`string`)throw new b(`TYPED_DATA_NOT_STRING`,{what:t});for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r>=55296&&r<=56319){let r=e.charCodeAt(n+1);if(!(r>=56320&&r<=57343))throw new b(`TYPED_DATA_UNPAIRED_SURROGATE`,{what:t});n+=1}else if(r>=56320&&r<=57343)throw new b(`TYPED_DATA_UNPAIRED_SURROGATE`,{what:t})}return kr.encode(e)}function Br(e){if(typeof e!=`string`||!/^0x[0-9a-fA-F]{40}$/u.test(e))throw new b(`TYPED_DATA_BAD_ADDRESS`,{});let t=e.slice(2);if(/[A-F]/u.test(t)&&/[a-f]/u.test(t)){let e=i(kr.encode(t.toLowerCase()));for(let n=0;n<40;n+=1){let r=e[n>>1]>>(n%2==0?4:0)&15,i=t.charAt(n);if(i!==(r>=8?i.toUpperCase():i.toLowerCase()))throw new b(`TYPED_DATA_BAD_CHECKSUM`,{})}}return Ir(e)}function Vr(e){if(e===`string`)return e=>i(zr(e,`string`));if(e===`bytes`)return e=>i(Lr(e,`bytes`));if(e===`bool`)return e=>{if(typeof e!=`boolean`)throw new b(`TYPED_DATA_NOT_BOOLEAN`,{});return Fr(e?1n:0n)};if(e===`address`)return e=>J([/* @__PURE__ */ new Uint8Array(12),Br(e)]);let t=/^bytes([1-9][0-9]?)$/u.exec(e);if(t!==null){let n=Number(t[1]);return n>32||String(n)!==t[1]?void 0:t=>{let r=Lr(t,e);if(r.length!==n)throw new b(`TYPED_DATA_BYTES_LENGTH`,{type:e,width:n});return J([r,new Uint8Array(32-n)])}}let n=/^(u?)int([1-9][0-9]*)$/u.exec(e);if(n!==null){let t=Number(n[2]);if(t%8!=0||t>256||String(t)!==n[2])return;let r=n[1]===``,i=r?-(1n<<BigInt(t-1)):0n,a=r?(1n<<BigInt(t-1))-1n:(1n<<BigInt(t))-1n;return t=>{let n=Rr(t,e);if(n<i||n>a)throw new b(`TYPED_DATA_OUT_OF_BOUNDS`,{type:e});return Fr(n)}}}function Hr(e){let t=jr.exec(e);if(t===null)throw new b(`TYPED_DATA_UNSUPPORTED_TYPE`,{type:e});let n=[...(t[2]??``).matchAll(/\[([0-9]*)\]/gu)].map(e=>e[1]===``?-1:Number(e[1]));return{base:t[1],dimensions:n}}function Ur(e,t){if(!Array.isArray(t))throw new b(`TYPED_DATA_FIELDS_NOT_LIST`,{typeName:e});let n=/* @__PURE__ */ new Set;return t.map(t=>{let r=t;if(typeof r?.name!=`string`||typeof r.type!=`string`)throw new b(`TYPED_DATA_FIELD_MALFORMED`,{typeName:e});if(!Ar.test(r.name))throw new b(`TYPED_DATA_INVALID_FIELD_NAME`,{name:r.name});if(n.has(r.name))throw new b(`TYPED_DATA_DUPLICATE_FIELD`,{name:r.name,typeName:e});n.add(r.name);let i=Hr(r.type),a=i.base===`uint`||i.base===`int`?`${i.base}256`:i.base;return{name:r.name,type:a+r.type.slice(i.base.length)}})}function Wr(e){let t=Object.keys(e),n=/* @__PURE__ */ new Map;for(let r of t){if(!Ar.test(r))throw new b(`TYPED_DATA_INVALID_TYPE_NAME`,{name:r});n.set(r,Ur(r,e[r]))}let r=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map;for(let e of t)r.set(e,/* @__PURE__ */ new Set),a.set(e,/* @__PURE__ */ new Set);for(let[e,t]of n)for(let i of t){let{base:t}=Hr(i.type);if(t===e)throw new b(`TYPED_DATA_CIRCULAR_TYPE`,{typeName:e});if(Vr(t)===void 0){if(!n.has(t))throw new b(`TYPED_DATA_UNKNOWN_FIELD_TYPE`,{type:t,typeName:e});r.get(e)?.add(t),a.get(t)?.add(e)}}let o=t.filter(e=>a.get(e)?.size===0);if(o.length===0)throw new b(`TYPED_DATA_NO_PRIMARY_TYPE`,{});if(o.length>1)throw new b(`TYPED_DATA_AMBIGUOUS_PRIMARY_TYPE`,{roots:o.join(`, `)});let s=o[0],c=/* @__PURE__ */ new Set,l=/* @__PURE__ */ new Set,u=e=>{if(c.has(e))throw new b(`TYPED_DATA_CIRCULAR_TYPE`,{typeName:e});if(!l.has(e)){c.add(e);for(let t of r.get(e)??[])u(t);c.delete(e),l.add(e)}};u(s);let d=(e,t)=>{for(let n of r.get(e)??[])t.has(n)||(t.add(n),d(n,t));return t},f=e=>`${e}(${(n.get(e)??[]).map(e=>`${e.type} ${e.name}`).join(`,`)})`,p=/* @__PURE__ */ new Map;for(let e of t){let t=[...d(e,/* @__PURE__ */ new Set)].filter(t=>t!==e).sort();p.set(e,i(kr.encode([e,...t].map(f).join(``))))}let m=(e,t,n)=>{let r=e.dimensions[e.dimensions.length-1-n];if(r!==void 0){if(!Array.isArray(t))throw new b(`TYPED_DATA_ARRAY_EXPECTED`,{type:e.base});if(r!==-1&&r!==t.length)throw new b(`TYPED_DATA_ARRAY_LENGTH_MISMATCH`,{});return i(J(t.map(t=>m(e,t,n+1))))}let a=Vr(e.base);return a===void 0?h(e.base,t):a(t)};function h(e,t){let r=n.get(e),a=p.get(e);if(r===void 0||a===void 0)throw Error(`Internal error: no encoder for struct ${e}`);if(typeof t!=`object`||!t||Array.isArray(t))throw new b(`TYPED_DATA_STRUCT_NOT_OBJECT`,{typeName:e});let o=t,s=r.map(t=>{if(!Object.prototype.hasOwnProperty.call(o,t.name))throw new b(`TYPED_DATA_MISSING_FIELD`,{typeName:e,field:t.name});return m(Hr(t.type),o[t.name],0)});return i(J([a,...s]))}return{primaryType:s,hashStruct:h}}function Gr(e){if(typeof e!=`object`||!e||Array.isArray(e))throw new b(`TYPED_DATA_DOMAIN_NOT_OBJECT`,{});for(let t of Object.keys(e))if(!Pr.some(e=>e.name===t))throw new b(`TYPED_DATA_INVALID_DOMAIN_KEY`,{key:JSON.stringify(t)});return Wr({EIP712Domain:Pr.filter(t=>Object.prototype.hasOwnProperty.call(e,t.name))}).hashStruct(`EIP712Domain`,e)}function Kr(e){let t=Gr(e.domain),n=Wr(e.types),r=n.hashStruct(n.primaryType,e.message);return i(J([Uint8Array.of(25,1),t,r]))}async function qr(e,t){let n=Kr(t);return q(e,e=>`0x${Zn(e,n)}`)}function Jr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Yr(e){return Jr(e)&&typeof e.status==`number`}function Xr(e,t){if(!Jr(e))return null;let n=e.get;if(typeof n==`function`){let r=n.call(e,t);return typeof r==`string`?r:null}let r=Object.entries(e).find(([e])=>e.toLowerCase()===t.toLowerCase());return typeof r?.[1]==`string`?r[1]:null}function Zr(e,t){if(!Yr(e))throw new b(`TRANSPORT_ERROR`,{url:t},{url:t});let{status:n,data:r,headers:i}=e;return{ok:n>=200&&n<300,status:n,json:()=>Promise.resolve(r),text:()=>Promise.resolve(typeof r==`string`?r:JSON.stringify(r)),headers:{get:e=>Xr(i,e)}}}function Qr(e,t){let n=new Set(t.map(e=>e.toLowerCase())),r=e?.headers,i=r===void 0?[]:r instanceof Headers?[...r.entries()]:Array.isArray(r)?r.map(([e,t])=>[String(e),String(t)]):Object.entries(r).map(([e,t])=>[e,String(t)]);return Object.fromEntries(i.filter(([e])=>!n.has(e.toLowerCase())))}function $r(e,t){let n=t.omitHeaders??[`content-type`];return async(r,i)=>{let a=i?.signal??void 0,o={headers:Qr(i,n),...a?{signal:a}:{},...t.rejectOnHttpError?{}:{validateStatus:()=>!0}},s=(i?.method??`GET`).toUpperCase()===`POST`,c=s&&typeof i?.body==`string`?JSON.parse(i.body):void 0,l;try{l=await(s?e.post(r,c,o):e.get(r,o))}catch(e){throw a?.aborted===!0||!ei(e,t.rejectOnHttpError)?e:new b(`TRANSPORT_ERROR`,{url:r},{url:r,cause:e})}return Zr(l,r)}}function ei(e,t){return!t||Jr(e)&&e.isAxiosError===!0&&e.response===void 0}function Y(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ti(e){return Y(e)&&Object.values(e).every(e=>Array.isArray(e)&&e.every(e=>Y(e)&&typeof e.name==`string`&&typeof e.type==`string`))}function ni(e){return new b(`MALFORMED_WALLET_REQUEST`,{method:e})}function ri(e){let t=e?.[1],n;try{n=typeof t==`string`?JSON.parse(t):t}catch{throw ni(`eth_signTypedData_v4`)}if(!Y(n))throw ni(`eth_signTypedData_v4`);let{domain:r,types:i,message:a}=n;if(!Y(r)||!ti(i)||!Y(a))throw ni(`eth_signTypedData_v4`);return{domain:r,types:Er(i),message:a}}function ii(e,t={}){let n=()=>{if(e==null)throw new b(`WALLET_UNAVAILABLE`,{});return e};return{request:async({method:e,params:r})=>{switch(e){case`eth_chainId`:return n().send(`eth_chainId`,[]);case`eth_signTypedData_v4`:{let e=n(),{domain:t,types:i,message:a}=ri(r);return(await e.getSigner()).signTypedData(t,i,a)}case`personal_sign`:{let e=r?.[0];if(typeof e!=`string`)throw ni(`personal_sign`);return t.personalSign===void 0?(await n().getSigner()).signMessage(e):t.personalSign(e)}default:throw new b(`UNSUPPORTED_WALLET_METHOD`,{method:e})}}}}const ai=[`rejected`,`unknown`,`not_queued`,`invalid_input`,`transient`],oi={outcome:`rejected`,retryable:!0},X={outcome:`unknown`,retryable:!1},Z={outcome:`not_queued`,retryable:!0},si={outcome:`not_queued`,retryable:!1},Q={outcome:`invalid_input`,retryable:!1},$={outcome:`transient`,retryable:!0},ci={REQUEST_TIMEOUT:$,TRANSPORT_ERROR:$,REQUEST_FAILED:$,INVALID_TIMEOUT:Q,SUBMISSION_OUTCOME_UNKNOWN:X,GATEWAY_REPORTED_ERROR:X,GATEWAY_DATA_MISSING:X,GATEWAY_MODE_INVALID:X,GATEWAY_SYNC_REQUEST_TRADE:X,MISSING_UNIQUE_KEY:X,UNIQUE_KEY_MISMATCH:X,SHADOW_NOT_QUEUED:si,METHOD_NOT_ALLOWED:Z,SIGNATURE_INVALID:Z,SIGNER_MISMATCH:Z,DTO_INVALID:Z,BOUNDS_VIOLATION:Z,SYMBOL_CONFLICT:Z,RATE_LIMITED:Z,GATEWAY_REJECTED:Z,CHAIN_REJECTED:oi,INVALID_CHAIN_RESPONSE:$,INVALID_POSITION_RESPONSE:$,CONFIRMATION_TIMEOUT:X,CONFIRMATION_ABORTED:X,CONFIRMATION_FAILED:X,CONFIRMATION_MALFORMED:X,CONFIRMATION_KEY_MISMATCH:X,STREAM_DISCONNECTED:$,STREAM_REQUEST_TIMEOUT:$,STREAM_CONNECT_FAILED:$,STREAM_CLOSED_BEFORE_CONNECT:$,STREAM_CONNECTION_CLOSED:$,STREAM_API_KEY_UNUSABLE:Q,STREAM_WEBSOCKET_UNAVAILABLE:Q,STREAM_NOT_CONNECTED:Q,METHOD_NOT_SUPPORTED:Q,SHADOW_SUBMIT_NEEDS_WALLET_ADDRESS:Q,NO_SIGNER:Q,NO_WALLET_ADDRESS:Q,NO_POOL_AVAILABLE:Q,INSUFFICIENT_LIQUIDITY:Q,UNKNOWN_TOKEN:Q,SYMBOL_NOT_FOUND:Q,GALA_WALLET_NOT_AVAILABLE:Q,WALLET_UNAVAILABLE:Q,MALFORMED_WALLET_REQUEST:Q,UNSUPPORTED_WALLET_METHOD:Q,INVALID_SIGNATURE:Q,INVALID_CHAIN_ID:Q,SIGNER_ADDRESS_MISMATCH:Q,INVALID_PRIVATE_KEY:Q,INVALID_SIGNING_HASH_LENGTH:Q,MISSING_WALLET_ADDRESS:Q,INVALID_WALLET_ADDRESS:Q,INVALID_DECIMAL:Q,PERSONAL_SIGN_NOT_JSON:Q,PERSONAL_SIGN_NOT_OBJECT:Q,PERSONAL_SIGN_BAD_PREFIX:Q,PERSONAL_SIGN_ENVELOPE_FIELDS:Q,PERSONAL_SIGN_NOT_CANONICAL:Q,EIP712_NAME_COLLISION:Q,EIP712_UNSUPPORTED_VALUE:Q,TYPED_DATA_NOT_STRING:Q,TYPED_DATA_UNPAIRED_SURROGATE:Q,TYPED_DATA_NOT_HEX_BYTES:Q,TYPED_DATA_NOT_SAFE_INTEGER:Q,TYPED_DATA_NOT_INTEGER:Q,TYPED_DATA_NOT_BOOLEAN:Q,TYPED_DATA_BAD_ADDRESS:Q,TYPED_DATA_BAD_CHECKSUM:Q,TYPED_DATA_BYTES_LENGTH:Q,TYPED_DATA_OUT_OF_BOUNDS:Q,TYPED_DATA_UNSUPPORTED_TYPE:Q,TYPED_DATA_FIELDS_NOT_LIST:Q,TYPED_DATA_FIELD_MALFORMED:Q,TYPED_DATA_INVALID_FIELD_NAME:Q,TYPED_DATA_DUPLICATE_FIELD:Q,TYPED_DATA_INVALID_TYPE_NAME:Q,TYPED_DATA_CIRCULAR_TYPE:Q,TYPED_DATA_UNKNOWN_FIELD_TYPE:Q,TYPED_DATA_NO_PRIMARY_TYPE:Q,TYPED_DATA_AMBIGUOUS_PRIMARY_TYPE:Q,TYPED_DATA_ARRAY_EXPECTED:Q,TYPED_DATA_ARRAY_LENGTH_MISMATCH:Q,TYPED_DATA_STRUCT_NOT_OBJECT:Q,TYPED_DATA_MISSING_FIELD:Q,TYPED_DATA_DOMAIN_NOT_OBJECT:Q,TYPED_DATA_INVALID_DOMAIN_KEY:Q,NON_CANONICAL_PAIR:Q,UNORDERABLE_SYMBOLS:Q,INVALID_TOKEN_CLASS_KEY:Q,INCOMPLETE_TOKEN_CLASS_KEY:Q,INVALID_TRADING_SYMBOL:Q,NO_VALID_TRADING_SYMBOL:Q,TOKEN_SYMBOL_NOT_REGISTERED:Q,SYMBOL_DISAGREES_WITH_REGISTRY:Q,CREATE_POOL_NEEDS_CLASS_KEY:Q,INVALID_UNIQUE_KEY:Q,INVALID_UNIQUE_KEY_PREFIX:Q,AMOUNT_IS_JS_NUMBER:Q,AMOUNT_NOT_FINITE:Q,AMOUNT_NOT_POSITIVE:Q,AMOUNT_NEGATIVE:Q,PRICE_VALUES_IS_JS_NUMBER:Q,INVALID_PRICE_VALUES:Q,INVALID_PRICE_RANGE:Q,INVALID_PRICE_BOUNDS:Q,PRICE_BOUNDS_ORDER:Q,INVALID_STARTING_PRICE:Q,INVALID_SQRT_PRICE:Q,INVALID_TOKEN_DECIMALS:Q,TICKS_NOT_INTEGERS:Q,INVALID_TICK_RANGE:Q,TICKS_OUT_OF_BOUNDS:Q,TICKS_NOT_ALIGNED:Q,INVALID_TICK_SPACING:Q,INVALID_FEE:Q,EXACT_AMOUNT_REQUIRED:Q,EXACTLY_ONE_OF_REQUIRED:Q,AT_MOST_ONE_OF_ALLOWED:Q,POOL_MISMATCH:Q,INVALID_DTO:Q,DTO_NOT_CANONICAL:Q,SEARCH_TOO_LONG:Q,INVALID_SORT_BY:Q,INVALID_SORT_ORDER:Q,INVALID_PAGE:Q,INVALID_LIMIT:Q};function li(e){let t=e.status??e.params.status;return e.uniqueKey!==void 0&&e.uniqueKey!==``?t===429?Z:t===408||t>=500?X:si:t===408||t===429||t>=500?$:Q}function ui(e){let t=e.status;return t===void 0||t===409||t>=500?X:t===422?oi:Z}function di(e){return S(e)?S(e,`HTTP_ERROR`)?{...li(e)}:S(e,`CHAIN_DISPATCH_FAILED`)?{...ui(e)}:{...ci[e.code]}:{...X}}function fi(e){let t=e.data;return typeof t==`object`&&t?t.mode:void 0}function pi(e){return typeof e==`object`&&e?e:void 0}function mi(e){return!e||pi(e)?.error===!0}function hi(e){let t=pi(e);return t?.error===!1&&fi(t)===`sync`}function gi(e){let t=pi(e);return t?.error!==!1||fi(t)!==`queued`?!1:typeof pi(t.data)?.uniqueKey==`string`}function _i(e){return mi(e)?`rejected`:hi(e)?`executed`:gi(e)?`queued`:`unconfirmed`}export{Pe as ALL_FEE_TIERS,D as AppliedTradeError,$e as Assets,_r as BrowserWalletSigner,Ft as CanonicalSymbols,ft as ChainGateway,ce as DEFAULT_UNIQUE_KEY_PREFIX,nt as DEX_FEE_METHODS,rt as DRY_RUN_METHOD,it as DRY_RUN_UNIQUE_KEY_PREFIX,lt as DexFees,Nn as EIP712_CAPABLE_METHODS,ai as FAILURE_OUTCOMES,Me as FEE_TIER,Ie as GC_MAX_TICK,Fe as GC_MIN_TICK,yt as GSWAP_ENVIRONMENTS,g as GSWAP_ERROR_CATALOG,Tn as GSwap,b as GSwapSDKError,gr as GalaWalletSigner,wt as GdexStreamError,Et as GdexStreamService,p as INVALID_PRIVATE_KEY_REASONS,Dn as PENDING_SWAPS_STORAGE_KEY,On as PENDING_SWAP_EXPIRY_MS,kn as PENDING_SWAP_PRUNE_REASONS,An as PendingSwapStore,It as Pools,en as Positions,mr as PrivateKeySigner,sn as Quoting,m as SUBMISSION_OUTCOME_UNKNOWN_REASONS,dt as SubmittedTransaction,wn as Swaps,Mt as Symbols,Ne as TICK_SPACING_BY_FEE,Ve as alignTickDown,He as alignTickUp,M as assertCanonicalPair,W as assertCanonicalV2Dto,k as assertTickRange,T as assertUniqueKey,Kt as buildAddLiquidityDto,Jt as buildCollectPositionFeesDto,Yt as buildCreatePoolDto,ct as buildDryRunWrapper,Rn as buildEIP712Payload,qt as buildRemoveLiquidityDto,Wt as buildRequestTradeDto,Wn as calculatePersonalSignPrefix,Or as canonicalDecimalString,di as classifyFailure,bn as classifyShadowSubmitError,yn as classifyShadowSubmitStatus,_i as classifySubmitEnvelope,L as compositeKeyOf,Ee as confirmAppliedTrade,hr as createLazyPrivateKeySigner,fe as createUniqueKey,ii as eip1193ProviderFromEthers,Mn as eip712DomainFor,Qn as ethAddressOfPrivateKey,or as ethereumAddressOfAccount,Kn as fixpointPrefixFor,We as frameSlot0,jn as generateEIP712Types,oe as getObjectProperty,Hn as getPayloadToSign,C as getStringProperty,ee as gswapErrorTemplates,Kr as hashTypedData,$r as httpRequestorFromAxios,ot as isCurrentContractDexMessage,at as isDexFeeMethod,S as isGSwapError,Ct as isGdexLiquidityEvent,Qe as isProposableTradingSymbol,hi as isSubmitExecuted,gi as isSubmitQueued,mi as isSubmitRejected,w as isValidUniqueKey,Xn as normalizePrivateKey,I as orderSymbols,se as parseJson,R as parseTokenClassKey,Gn as personalSignPrefixFor,V as queryTokenOf,z as rawTokenOf,jt as readOrderedSymbols,xn as readShadowSubmitOutcome,_ as renderGSwapErrorTemplate,Cr as resolvePersonalSignChainDtoPayload,ue as resolveUniqueKeyPrefix,K as serialize,yr as signChainDtoHash,vr as signChainDtoNative,wr as signChainDtoPersonalSign,tr as signNative,nr as signPersonalMessage,Tr as signRawObject,er as signSerializedNative,qr as signTypedDataPayload,ze as sqrtPriceToTick,Er as stripEip712DomainType,Cn as swapRouteFromQuote,Be as tickFromPrice,Re as tickToSqrtPrice,st as toChainDto,Dr as tokenClassDollarKey,B as tradingSymbolOf,j as validateFee,A as validateNumericAmount,Ge as validatePriceValues,qe as validateTickRange,Je as validateTickSpacing,Ke as validateTokenDecimals,Ye as validateWalletAddress,q as withPrivateKey};
|
|
3
|
+
if(!t)throw Error(`Missing EIP-712 type definition for ${e}`);return t}function i(e,t,a,o=!1){if(Array.isArray(t)){let n=t.length>0?i(e,t[0],a,!0):`string`;o||r(a).push({name:e,type:(n??e)+`[]`})}else if(typeof t==`object`&&t){if(n[e])throw new x(`EIP712_NAME_COLLISION`,{name:e});n[e]=[],Object.entries(t).forEach(([t,n])=>{i(t,n,e)}),o||r(a).push({name:e,type:e})}else{let n;switch(typeof t){case`string`:n=`string`;break;case`number`:n=`int256`;break;case`boolean`:n=`bool`;break;case`bigint`:case`symbol`:case`undefined`:case`function`:case`object`:throw new x(`EIP712_UNSUPPORTED_VALUE`,{valueType:typeof t})}if(o)return n;r(a).push({name:e,type:n})}}return Object.entries(t).forEach(([t,n])=>{i(t,n,e)}),n}function Qn(e){let t=typeof e==`string`&&/^0x[0-9a-fA-F]+$/u.test(e)?Number(e):typeof e==`number`?e:NaN;if(!Number.isSafeInteger(t)||t<=0)throw new x(`INVALID_CHAIN_ID`,{chainId:typeof e==`string`||typeof e==`number`?String(e):typeof e});return{name:`ethereum`,chainId:t}}const $n=/* @__PURE__ */ new Set([`RequestTrade`,`AddLiquidity`,`RemoveLiquidity`,`CollectPositionFees`]);function G(e,t){return typeof e[t]==`number`?e[t]:0}function er(e){return{...e,amount0Desired:G(e,`amount0Desired`),amount0Min:G(e,`amount0Min`),amount1Desired:G(e,`amount1Desired`),amount1Min:G(e,`amount1Min`),positionId:e.positionId??``}}function tr(e){return{...e,amount:G(e,`amount`),amount0Min:G(e,`amount0Min`),amount1Min:G(e,`amount1Min`),positionId:e.positionId??``}}function nr(e){return{...e,amount0Requested:G(e,`amount0Requested`),amount1Requested:G(e,`amount1Requested`),positionId:e.positionId??``}}const rr={AddLiquidity:er,RemoveLiquidity:tr,CollectPositionFees:nr};function ir(e,t){let n=rr[e],r=n?n(t):t;return{completedDto:r,types:Zn(e,r)}}const ar=new TextEncoder;function or(e){if(e==null)return e;if(e instanceof RegExp)return e.toString();let t=e;return typeof t.toJSON==`function`?Reflect.apply(t.toJSON,e,[]):e}function sr(e){let t=or(e);if(t===void 0)return;if(typeof t!=`object`||!t)return JSON.stringify(t);if(Array.isArray(t))return`[${t.map(e=>sr(e)??`null`).join(`,`)}]`;let n=t,r=[];for(let e of Object.keys(n).sort()){let t=sr(n[e]);t!==void 0&&r.push(`${JSON.stringify(e)}:${t}`)}return`{${r.join(`,`)}}`}function K(e){JSON.stringify(e);let t=sr(e);if(t===void 0)throw TypeError(`Cannot serialize a value with no JSON representation.`);return t}function cr(e){let{prefix:t,...n}=e;return delete n.signature,delete n.multisig,delete n.trace,(typeof t==`string`?t:``)+K(n)}const lr=`Ethereum Signed Message:
|
|
4
|
+
`;function ur(e){return lr+String(ar.encode(e).length)}function dr(e){let t={...e};return delete t.prefix,ur(K(t))}function fr(e){let t={...e};delete t.prefix;let n=ar.encode(cr(t)).length,r=lr+String(n),i=-1;for(;n!==i;)i=n,r=lr+String(n),n=ar.encode(cr({...t,prefix:r})).length;return r}function pr(e){return new x(`INVALID_PRIVATE_KEY`,{reason:e})}function mr(e){if(!/^[A-Za-z0-9+/]+={0,2}$/u.test(e)||e.length%4!=0)return;let t=e.replace(/=+$/u,``),n=[],r=0,i=0;for(let e of t)r=r<<6|`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.indexOf(e),i+=6,i>=8&&(i-=8,n.push(r>>i&255));return Uint8Array.from(n)}function hr(e){let t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n+=1)t[n]=parseInt(e.slice(n*2,n*2+2),16);return t}function gr(e){if(typeof e!=`string`){if(!(e instanceof Uint8Array)||e.length!==32)throw pr(`wrong_length`);if(!r.utils.isValidSecretKey(e))throw pr(`not_on_curve`);return Uint8Array.from(e)}let t=e.startsWith(`0x`)?e.slice(2):e,n;if(/^[0-9a-fA-F]{63,64}$/u.test(t)?n=hr(t.length===63?`0${t}`:t):t.length===44&&(n=mr(t)),n?.length!==32)throw pr(`bad_encoding`);if(!r.utils.isValidSecretKey(n))throw pr(`not_on_curve`);return n}function _r(e,t){if(t.length!==32)throw new x(`INVALID_SIGNING_HASH_LENGTH`,{length:t.length});let n=r.sign(t,e,{prehash:!1,lowS:!0});return a(n.toBytes(`compact`))+(n.recovery===1?`1c`:`1b`)}function vr(e){let t=r.getPublicKey(e,!1);return`0x${a(i(t.slice(1)).slice(-20))}`}function yr(e){return i(ar.encode(e))}function br(e,t){return _r(e,yr(t))}function xr(e,t){return br(e,cr(t))}function Sr(e,t,n){return _r(e,yr(t+n))}function Cr(){let e=globalThis.window?.gala;if(!e)throw new x(`GALA_WALLET_NOT_AVAILABLE`,{});return e}function wr(e){if(typeof e!=`string`||!/^(?:0x)?[0-9a-fA-F]{130}$/u.test(e))throw new x(`INVALID_SIGNATURE`,{scheme:`native`});return e}function Tr(e){if(typeof e!=`string`||!/^(?:0x)?[0-9a-fA-F]{130}$/u.test(e))throw new x(`INVALID_SIGNATURE`,{scheme:`personal-sign`});return e}function Er(e){let t=/^(?:eth\|(?:0x)?|0x)([0-9a-fA-F]{40})$/u.exec(e);return t?.[1]===void 0?void 0:`0x${t[1]}`}function Dr(e,t){let n=t?Er(e)??e:e;if(!/^0x[0-9a-fA-F]{40}$/u.test(n))throw new x(`INVALID_WALLET_ADDRESS`,{field:`walletAddress`,value:e});return n}function Or(e){let t=/^eth\|(?:0x)?([0-9a-fA-F]{40})$/u.exec(e);if(t?.[1]!==void 0)return`0x${t[1]}`;if(/^0x[0-9a-fA-F]{40}$/u.test(e)||/^(?:client\|)?[0-9a-fA-F]{24}$/u.test(e))return e;throw new x(`INVALID_WALLET_ADDRESS`,{field:`walletAddress`,value:e})}function kr(e){if(!/^(?:eth\|(?:0x)?[0-9a-fA-F]{40}|0x[0-9a-fA-F]{40}|(?:client\|)?[0-9a-fA-F]{24})$/u.test(e))throw new x(`INVALID_WALLET_ADDRESS`,{field:`selectAddress`,value:e})}const Ar=/* @__PURE__ */ new WeakMap;function jr(e,t,n){let{setAddress:r}=e;if(t===void 0||typeof r!=`function`)return n();let i=(Ar.get(e)??Promise.resolve()).catch(()=>void 0).then(async()=>(await r.call(e,t),n()));return Ar.set(e,i),i}function Mr(e,t,n,r){let i=dr(t),a={...t,prefix:i},o=r===void 0?[K(t),n]:[K(a),n,r];return e.request({method:r===void 0?`personal_sign`:`gala_signChainDto`,params:o}).then(e=>({...a,signature:Tr(e)}))}async function Nr(e,t,n,r){let{completedDto:i,types:a}=ir(t,n),o=Qn(await e.request({method:`eth_chainId`,params:[]})),s=fr(i),c={...i,prefix:s},l=[{name:`name`,type:`string`},{name:`chainId`,type:`uint256`}],u={domain:o,types:{...a,EIP712Domain:l},primaryType:t,message:c},d=await e.request({method:`eth_signTypedData_v4`,params:[r,JSON.stringify(u)]});return{...c,signature:Tr(d),types:a,domain:o}}var Pr=class{constructor(e){b(this,`privateKey`,void 0),this.privateKey=gr(e)}signObject(e,t){let n=xr(this.privateKey,t);return Promise.resolve({...t,signature:n})}};async function Fr(e){try{return await e()}catch(e){throw C(e)?e:new x(`KEY_PROVIDER_FAILED`,{},{cause:e})}}function Ir(e,t={}){let n=t.expectedAddress,r=n===void 0?void 0:Dr(n,!0).toLowerCase();return{async signObject(t,n){let i=await Fr(e);if(typeof i!=`string`||i===``)throw new x(`INVALID_PRIVATE_KEY`,{reason:`no_key_provided`});let a=gr(i);try{if(r!==void 0&&vr(a)!==r)throw new x(`SIGNER_ADDRESS_MISMATCH`,{});return{...n,signature:xr(a,n)}}finally{a.fill(0)}}}}var Lr=class{constructor(e,t={}){b(this,`walletAddress`,void 0),b(this,`scheme`,void 0),b(this,`selectAddress`,void 0),this.walletAddress=Or(e),this.scheme=t.scheme??`native`,t.selectAddress!==void 0&&kr(t.selectAddress),this.selectAddress=t.selectAddress}async signObject(e,t){let n=Cr();return jr(n,this.selectAddress,async()=>{if(this.scheme===`personal-sign`)return Mr(n,t,this.walletAddress,e);let r=await n.request({method:`gala_signChainDto`,params:[K(t),this.walletAddress,e,`native`]});return{...t,signature:wr(r)}})}},Rr=class{constructor(e,t,n={}){this.provider=e,b(this,`walletAddress`,void 0),b(this,`scheme`,void 0),this.walletAddress=Dr(t,!1),this.scheme=n.scheme??`personal-sign`}signObject(e,t){return this.scheme===`eip712`&&$n.has(e)?Nr(this.provider,e,t,this.walletAddress):Mr(this.provider,t,this.walletAddress)}};function zr(e,t){let n=gr(e);try{return t(n)}finally{n.fill(0)}}function Br(e,t){return zr(e,e=>br(e,t))}function Vr(e,t,n){return zr(e,e=>Sr(e,t,n))}const Hr=/^(?:0|[1-9][0-9]*)$/u;function Ur(e){return e.startsWith(`Ethereum Signed Message:
|
|
5
|
+
`)&&Hr.test(e.slice(26))}const Wr=[`signature`,`multisig`,`trace`,`types`,`domain`,`stringsInstructions`];function Gr(e){let t;try{t=JSON.parse(e)}catch{throw new x(`PERSONAL_SIGN_NOT_JSON`,{})}if(typeof t!=`object`||!t||Array.isArray(t))throw new x(`PERSONAL_SIGN_NOT_OBJECT`,{});let n=t;if(!Object.prototype.hasOwnProperty.call(n,`prefix`))return{prefix:``,message:e};let{prefix:r,...i}=n;if(typeof r!=`string`||!Ur(r))throw new x(`PERSONAL_SIGN_BAD_PREFIX`,{});let a=Wr.filter(e=>Object.prototype.hasOwnProperty.call(i,e));if(a.length>0)throw new x(`PERSONAL_SIGN_ENVELOPE_FIELDS`,{fields:a.join(`, `)});if(K(n)!==e)throw new x(`PERSONAL_SIGN_NOT_CANONICAL`,{});return{prefix:r,message:K(i)}}function Kr(e,t){let{prefix:n,message:r}=Gr(t);return Vr(e,n,r)}function qr(e,t){let n={...t};return delete n.signature,{signature:Br(e,K(n)),...n}}function Jr(e){let t={};for(let n of Object.keys(e))n!==`EIP712Domain`&&(t[n]=e[n]);return t}function Yr(e){let t=t=>{let n=e?.[t];return typeof n==`string`?n:``};return`${t(`collection`)}$${t(`category`)}$${t(`type`)}$${t(`additionalKey`)}`}function Xr(t){let n=new e(NaN);try{n=new e(t)}catch{}if(!n.isFinite())throw new x(`INVALID_DECIMAL`,{value:String(t)});return n.toFixed()}const Zr=new TextEncoder,Qr=/^[A-Za-z_$][A-Za-z0-9_$]*$/u,$r=/^([A-Za-z_$][A-Za-z0-9_$]*)((?:\[(?:0|[1-9][0-9]*)?\])*)$/u,ei=/^-?[0-9]+$/u,ti=/^-?0x[0-9a-fA-F]+$/u,ni=[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`},{name:`salt`,type:`bytes32`}];function q(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function ri(e){let t=/* @__PURE__ */ new Uint8Array(32),n=e<0n?e+(1n<<256n):e;for(let e=31;e>=0;--e)t[e]=Number(n&255n),n>>=8n;return t}function ii(e){let t=e.slice(2),n=new Uint8Array(t.length/2);for(let e=0;e<n.length;e+=1)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function ai(e,t){if(e instanceof Uint8Array)return e;if(typeof e==`string`&&/^0x(?:[0-9a-fA-F]{2})*$/u.test(e))return ii(e);throw new x(`TYPED_DATA_NOT_HEX_BYTES`,{what:t})}function oi(e,t){if(typeof e==`bigint`)return e;if(typeof e==`number`){if(!Number.isSafeInteger(e))throw new x(`TYPED_DATA_NOT_SAFE_INTEGER`,{what:t});return BigInt(e)}if(typeof e==`string`){if(ei.test(e))return BigInt(e);if(ti.test(e))return e.startsWith(`-`)?-BigInt(e.slice(1)):BigInt(e)}throw new x(`TYPED_DATA_NOT_INTEGER`,{what:t})}function si(e,t){if(typeof e!=`string`)throw new x(`TYPED_DATA_NOT_STRING`,{what:t});for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r>=55296&&r<=56319){let r=e.charCodeAt(n+1);if(!(r>=56320&&r<=57343))throw new x(`TYPED_DATA_UNPAIRED_SURROGATE`,{what:t});n+=1}else if(r>=56320&&r<=57343)throw new x(`TYPED_DATA_UNPAIRED_SURROGATE`,{what:t})}return Zr.encode(e)}function ci(e){if(typeof e!=`string`||!/^0x[0-9a-fA-F]{40}$/u.test(e))throw new x(`TYPED_DATA_BAD_ADDRESS`,{});let t=e.slice(2);if(/[A-F]/u.test(t)&&/[a-f]/u.test(t)){let e=i(Zr.encode(t.toLowerCase()));for(let n=0;n<40;n+=1){let r=e[n>>1]>>(n%2==0?4:0)&15,i=t.charAt(n);if(i!==(r>=8?i.toUpperCase():i.toLowerCase()))throw new x(`TYPED_DATA_BAD_CHECKSUM`,{})}}return ii(e)}function li(e){if(e===`string`)return e=>i(si(e,`string`));if(e===`bytes`)return e=>i(ai(e,`bytes`));if(e===`bool`)return e=>{if(typeof e!=`boolean`)throw new x(`TYPED_DATA_NOT_BOOLEAN`,{});return ri(e?1n:0n)};if(e===`address`)return e=>q([/* @__PURE__ */ new Uint8Array(12),ci(e)]);let t=/^bytes([1-9][0-9]?)$/u.exec(e);if(t!==null){let n=Number(t[1]);return n>32||String(n)!==t[1]?void 0:t=>{let r=ai(t,e);if(r.length!==n)throw new x(`TYPED_DATA_BYTES_LENGTH`,{type:e,width:n});return q([r,new Uint8Array(32-n)])}}let n=/^(u?)int([1-9][0-9]*)$/u.exec(e);if(n!==null){let t=Number(n[2]);if(t%8!=0||t>256||String(t)!==n[2])return;let r=n[1]===``,i=r?-(1n<<BigInt(t-1)):0n,a=r?(1n<<BigInt(t-1))-1n:(1n<<BigInt(t))-1n;return t=>{let n=oi(t,e);if(n<i||n>a)throw new x(`TYPED_DATA_OUT_OF_BOUNDS`,{type:e});return ri(n)}}}function ui(e){let t=$r.exec(e);if(t===null)throw new x(`TYPED_DATA_UNSUPPORTED_TYPE`,{type:e});let n=[...(t[2]??``).matchAll(/\[([0-9]*)\]/gu)].map(e=>e[1]===``?-1:Number(e[1]));return{base:t[1],dimensions:n}}function di(e,t){if(!Array.isArray(t))throw new x(`TYPED_DATA_FIELDS_NOT_LIST`,{typeName:e});let n=/* @__PURE__ */ new Set;return t.map(t=>{let r=t;if(typeof r?.name!=`string`||typeof r.type!=`string`)throw new x(`TYPED_DATA_FIELD_MALFORMED`,{typeName:e});if(!Qr.test(r.name))throw new x(`TYPED_DATA_INVALID_FIELD_NAME`,{name:r.name});if(n.has(r.name))throw new x(`TYPED_DATA_DUPLICATE_FIELD`,{name:r.name,typeName:e});n.add(r.name);let i=ui(r.type),a=i.base===`uint`||i.base===`int`?`${i.base}256`:i.base;return{name:r.name,type:a+r.type.slice(i.base.length)}})}function fi(e){let t=Object.keys(e),n=/* @__PURE__ */ new Map;for(let r of t){if(!Qr.test(r))throw new x(`TYPED_DATA_INVALID_TYPE_NAME`,{name:r});n.set(r,di(r,e[r]))}let r=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map;for(let e of t)r.set(e,/* @__PURE__ */ new Set),a.set(e,/* @__PURE__ */ new Set);for(let[e,t]of n)for(let i of t){let{base:t}=ui(i.type);if(t===e)throw new x(`TYPED_DATA_CIRCULAR_TYPE`,{typeName:e});if(li(t)===void 0){if(!n.has(t))throw new x(`TYPED_DATA_UNKNOWN_FIELD_TYPE`,{type:t,typeName:e});r.get(e)?.add(t),a.get(t)?.add(e)}}let o=t.filter(e=>a.get(e)?.size===0);if(o.length===0)throw new x(`TYPED_DATA_NO_PRIMARY_TYPE`,{});if(o.length>1)throw new x(`TYPED_DATA_AMBIGUOUS_PRIMARY_TYPE`,{roots:o.join(`, `)});let s=o[0],c=/* @__PURE__ */ new Set,l=/* @__PURE__ */ new Set,u=e=>{if(c.has(e))throw new x(`TYPED_DATA_CIRCULAR_TYPE`,{typeName:e});if(!l.has(e)){c.add(e);for(let t of r.get(e)??[])u(t);c.delete(e),l.add(e)}};u(s);let d=(e,t)=>{for(let n of r.get(e)??[])t.has(n)||(t.add(n),d(n,t));return t},f=e=>`${e}(${(n.get(e)??[]).map(e=>`${e.type} ${e.name}`).join(`,`)})`,p=/* @__PURE__ */ new Map;for(let e of t){let t=[...d(e,/* @__PURE__ */ new Set)].filter(t=>t!==e).sort();p.set(e,i(Zr.encode([e,...t].map(f).join(``))))}let m=(e,t,n)=>{let r=e.dimensions[e.dimensions.length-1-n];if(r!==void 0){if(!Array.isArray(t))throw new x(`TYPED_DATA_ARRAY_EXPECTED`,{type:e.base});if(r!==-1&&r!==t.length)throw new x(`TYPED_DATA_ARRAY_LENGTH_MISMATCH`,{});return i(q(t.map(t=>m(e,t,n+1))))}let a=li(e.base);return a===void 0?h(e.base,t):a(t)};function h(e,t){let r=n.get(e),a=p.get(e);if(r===void 0||a===void 0)throw Error(`Internal error: no encoder for struct ${e}`);if(typeof t!=`object`||!t||Array.isArray(t))throw new x(`TYPED_DATA_STRUCT_NOT_OBJECT`,{typeName:e});let o=t,s=r.map(t=>{if(!Object.prototype.hasOwnProperty.call(o,t.name))throw new x(`TYPED_DATA_MISSING_FIELD`,{typeName:e,field:t.name});return m(ui(t.type),o[t.name],0)});return i(q([a,...s]))}return{primaryType:s,hashStruct:h}}function pi(e){if(typeof e!=`object`||!e||Array.isArray(e))throw new x(`TYPED_DATA_DOMAIN_NOT_OBJECT`,{});for(let t of Object.keys(e))if(!ni.some(e=>e.name===t))throw new x(`TYPED_DATA_INVALID_DOMAIN_KEY`,{key:JSON.stringify(t)});return fi({EIP712Domain:ni.filter(t=>Object.prototype.hasOwnProperty.call(e,t.name))}).hashStruct(`EIP712Domain`,e)}function mi(e){let t=pi(e.domain),n=fi(e.types),r=n.hashStruct(n.primaryType,e.message);return i(q([Uint8Array.of(25,1),t,r]))}async function hi(e,t){let n=mi(t);return zr(e,e=>`0x${_r(e,n)}`)}function gi(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function _i(e){return gi(e)&&typeof e.status==`number`}function vi(e,t){if(!gi(e))return null;let n=e.get;if(typeof n==`function`){let r=n.call(e,t);return typeof r==`string`?r:null}let r=Object.entries(e).find(([e])=>e.toLowerCase()===t.toLowerCase());return typeof r?.[1]==`string`?r[1]:null}function yi(e,t){if(!_i(e))throw new x(`TRANSPORT_ERROR`,{url:t},{url:t});let{status:n,data:r,headers:i}=e;return{ok:n>=200&&n<300,status:n,json:()=>Promise.resolve(r),text:()=>Promise.resolve(typeof r==`string`?r:JSON.stringify(r)),headers:{get:e=>vi(i,e)}}}function bi(e,t){let n=new Set(t.map(e=>e.toLowerCase())),r=e?.headers,i=r===void 0?[]:r instanceof Headers?[...r.entries()]:Array.isArray(r)?r.map(([e,t])=>[String(e),String(t)]):Object.entries(r).map(([e,t])=>[e,String(t)]);return Object.fromEntries(i.filter(([e])=>!n.has(e.toLowerCase())))}function xi(e,t){let n=t.omitHeaders??[`content-type`];return async(r,i)=>{let a=i?.signal??void 0,o={headers:bi(i,n),...a?{signal:a}:{},...t.rejectOnHttpError?{}:{validateStatus:()=>!0}},s=(i?.method??`GET`).toUpperCase()===`POST`,c=s&&typeof i?.body==`string`?JSON.parse(i.body):void 0,l;try{l=await(s?e.post(r,c,o):e.get(r,o))}catch(e){throw a?.aborted===!0||!Si(e,t.rejectOnHttpError)?e:new x(`TRANSPORT_ERROR`,{url:r},{url:r,cause:e})}return yi(l,r)}}function Si(e,t){return!t||gi(e)&&e.isAxiosError===!0&&e.response===void 0}function J(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ci(e){return J(e)&&Object.values(e).every(e=>Array.isArray(e)&&e.every(e=>J(e)&&typeof e.name==`string`&&typeof e.type==`string`))}function wi(e){return new x(`MALFORMED_WALLET_REQUEST`,{method:e})}function Ti(e){let t=e?.[1],n;try{n=typeof t==`string`?JSON.parse(t):t}catch{throw wi(`eth_signTypedData_v4`)}if(!J(n))throw wi(`eth_signTypedData_v4`);let{domain:r,types:i,message:a}=n;if(!J(r)||!Ci(i)||!J(a))throw wi(`eth_signTypedData_v4`);return{domain:r,types:Jr(i),message:a}}function Ei(e,t={}){let n=()=>{if(e==null)throw new x(`WALLET_UNAVAILABLE`,{});return e};return{request:async({method:e,params:r})=>{switch(e){case`eth_chainId`:return n().send(`eth_chainId`,[]);case`eth_signTypedData_v4`:{let e=n(),{domain:t,types:i,message:a}=Ti(r);return(await e.getSigner()).signTypedData(t,i,a)}case`personal_sign`:{let e=r?.[0];if(typeof e!=`string`)throw wi(`personal_sign`);return t.personalSign===void 0?(await n().getSigner()).signMessage(e):t.personalSign(e)}default:throw new x(`UNSUPPORTED_WALLET_METHOD`,{method:e})}}}}const Di=[`rejected`,`unknown`,`not_queued`,`not_sent`,`invalid_input`,`transient`],Oi={rejected:!0,unknown:!1,not_queued:!0,not_sent:!0,invalid_input:!1,transient:!0};function Y(e){return{outcome:e,retryable:Oi[e]}}function ki(){return Y(`not_sent`)}const Ai=Y(`rejected`),X=Y(`unknown`),Z=Y(`not_queued`),ji={outcome:`not_queued`,retryable:!1},Mi=Y(`not_sent`),Q=Y(`invalid_input`),$=Y(`transient`),Ni={REQUEST_TIMEOUT:$,TRANSPORT_ERROR:$,REQUEST_FAILED:$,INVALID_TIMEOUT:Q,SUBMISSION_OUTCOME_UNKNOWN:X,GATEWAY_REPORTED_ERROR:X,GATEWAY_DATA_MISSING:X,GATEWAY_MODE_INVALID:X,GATEWAY_SYNC_REQUEST_TRADE:X,MISSING_UNIQUE_KEY:X,UNIQUE_KEY_MISMATCH:X,SHADOW_NOT_QUEUED:ji,METHOD_NOT_ALLOWED:Z,SIGNATURE_INVALID:Z,SIGNER_MISMATCH:Z,DTO_INVALID:Z,BOUNDS_VIOLATION:Z,SYMBOL_CONFLICT:Z,RATE_LIMITED:Z,GATEWAY_REJECTED:Z,CHAIN_REJECTED:Ai,INVALID_CHAIN_RESPONSE:$,INVALID_POSITION_RESPONSE:$,CONFIRMATION_TIMEOUT:X,CONFIRMATION_ABORTED:X,CONFIRMATION_FAILED:X,CONFIRMATION_MALFORMED:X,CONFIRMATION_KEY_MISMATCH:X,STREAM_DISCONNECTED:$,STREAM_REQUEST_TIMEOUT:$,STREAM_CONNECT_FAILED:$,STREAM_CLOSED_BEFORE_CONNECT:$,STREAM_CONNECTION_CLOSED:$,STREAM_API_KEY_UNUSABLE:Q,STREAM_WEBSOCKET_UNAVAILABLE:Q,STREAM_NOT_CONNECTED:Q,SIGNING_FAILED:Mi,KEY_PROVIDER_FAILED:Mi,TOKEN_RESOLUTION_FAILED:Mi,METHOD_NOT_SUPPORTED:Q,SHADOW_SUBMIT_NEEDS_WALLET_ADDRESS:Q,NO_SIGNER:Q,NO_WALLET_ADDRESS:Q,NO_POOL_AVAILABLE:Q,INSUFFICIENT_LIQUIDITY:Q,UNKNOWN_TOKEN:Q,SYMBOL_NOT_FOUND:Q,GALA_WALLET_NOT_AVAILABLE:Q,WALLET_UNAVAILABLE:Q,MALFORMED_WALLET_REQUEST:Q,UNSUPPORTED_WALLET_METHOD:Q,INVALID_SIGNATURE:Q,INVALID_CHAIN_ID:Q,SIGNER_ADDRESS_MISMATCH:Q,INVALID_SIGNING_HASH_LENGTH:Q,MISSING_WALLET_ADDRESS:Q,INVALID_WALLET_ADDRESS:Q,INVALID_DECIMAL:Q,PERSONAL_SIGN_NOT_JSON:Q,PERSONAL_SIGN_NOT_OBJECT:Q,PERSONAL_SIGN_BAD_PREFIX:Q,PERSONAL_SIGN_ENVELOPE_FIELDS:Q,PERSONAL_SIGN_NOT_CANONICAL:Q,EIP712_NAME_COLLISION:Q,EIP712_UNSUPPORTED_VALUE:Q,TYPED_DATA_NOT_STRING:Q,TYPED_DATA_UNPAIRED_SURROGATE:Q,TYPED_DATA_NOT_HEX_BYTES:Q,TYPED_DATA_NOT_SAFE_INTEGER:Q,TYPED_DATA_NOT_INTEGER:Q,TYPED_DATA_NOT_BOOLEAN:Q,TYPED_DATA_BAD_ADDRESS:Q,TYPED_DATA_BAD_CHECKSUM:Q,TYPED_DATA_BYTES_LENGTH:Q,TYPED_DATA_OUT_OF_BOUNDS:Q,TYPED_DATA_UNSUPPORTED_TYPE:Q,TYPED_DATA_FIELDS_NOT_LIST:Q,TYPED_DATA_FIELD_MALFORMED:Q,TYPED_DATA_INVALID_FIELD_NAME:Q,TYPED_DATA_DUPLICATE_FIELD:Q,TYPED_DATA_INVALID_TYPE_NAME:Q,TYPED_DATA_CIRCULAR_TYPE:Q,TYPED_DATA_UNKNOWN_FIELD_TYPE:Q,TYPED_DATA_NO_PRIMARY_TYPE:Q,TYPED_DATA_AMBIGUOUS_PRIMARY_TYPE:Q,TYPED_DATA_ARRAY_EXPECTED:Q,TYPED_DATA_ARRAY_LENGTH_MISMATCH:Q,TYPED_DATA_STRUCT_NOT_OBJECT:Q,TYPED_DATA_MISSING_FIELD:Q,TYPED_DATA_DOMAIN_NOT_OBJECT:Q,TYPED_DATA_INVALID_DOMAIN_KEY:Q,NON_CANONICAL_PAIR:Q,UNORDERABLE_SYMBOLS:Q,INVALID_TOKEN_CLASS_KEY:Q,INCOMPLETE_TOKEN_CLASS_KEY:Q,INVALID_TRADING_SYMBOL:Q,NO_VALID_TRADING_SYMBOL:Q,TOKEN_SYMBOL_NOT_REGISTERED:Q,SYMBOL_DISAGREES_WITH_REGISTRY:Q,CREATE_POOL_NEEDS_CLASS_KEY:Q,INVALID_UNIQUE_KEY:Q,INVALID_UNIQUE_KEY_PREFIX:Q,AMOUNT_IS_JS_NUMBER:Q,AMOUNT_NOT_FINITE:Q,AMOUNT_NOT_POSITIVE:Q,AMOUNT_NEGATIVE:Q,PRICE_VALUES_IS_JS_NUMBER:Q,INVALID_PRICE_VALUES:Q,INVALID_PRICE_RANGE:Q,INVALID_PRICE_BOUNDS:Q,PRICE_BOUNDS_ORDER:Q,INVALID_STARTING_PRICE:Q,INVALID_SQRT_PRICE:Q,INVALID_TOKEN_DECIMALS:Q,TICKS_NOT_INTEGERS:Q,INVALID_TICK_RANGE:Q,TICKS_OUT_OF_BOUNDS:Q,TICKS_NOT_ALIGNED:Q,INVALID_TICK_SPACING:Q,INVALID_FEE:Q,EXACT_AMOUNT_REQUIRED:Q,EXACTLY_ONE_OF_REQUIRED:Q,AT_MOST_ONE_OF_ALLOWED:Q,POOL_MISMATCH:Q,INVALID_DTO:Q,DTO_NOT_CANONICAL:Q,SEARCH_TOO_LONG:Q,INVALID_SORT_BY:Q,INVALID_SORT_ORDER:Q,INVALID_PAGE:Q,INVALID_LIMIT:Q};function Pi(e){return e.params.reason===`no_key_provided`?Mi:Q}function Fi(e){let t=e.status??e.params.status;return e.uniqueKey!==void 0&&e.uniqueKey!==``?t===429?Z:t===408||t>=500?X:ji:t===408||t===429||t>=500?$:Q}function Ii(e){return e.uniqueKey!==void 0&&e.uniqueKey!==``?ji:Q}function Li(e){let t=e.status;return t===void 0||t===409||t>=500?X:t===422?Ai:Z}const Ri=[`GATEWAY_DATA_MISSING`,`GATEWAY_MODE_INVALID`,`GATEWAY_SYNC_REQUEST_TRADE`,`MISSING_UNIQUE_KEY`,`UNIQUE_KEY_MISMATCH`];function zi(e){return C(e)&&Ri.includes(e.code)}const Bi=[`GATEWAY_REPORTED_ERROR`,`METHOD_NOT_ALLOWED`,`SIGNATURE_INVALID`,`SIGNER_MISMATCH`,`DTO_INVALID`,`BOUNDS_VIOLATION`,`SYMBOL_CONFLICT`,`RATE_LIMITED`,`CHAIN_DISPATCH_FAILED`,`GATEWAY_REJECTED`];function Vi(e){return C(e)&&Bi.includes(e.code)}function Hi(e){return zi(e)||C(e,`GATEWAY_REPORTED_ERROR`)}function Ui(e){return C(e)?C(e,`HTTP_ERROR`)?{...Fi(e)}:C(e,`UPDATE_REQUIRED`)?{...Ii(e)}:C(e,`CHAIN_DISPATCH_FAILED`)?{...Li(e)}:C(e,`INVALID_PRIVATE_KEY`)?{...Pi(e)}:{...Ni[e.code]}:{...X}}function Wi(e){let t=e.data;return typeof t==`object`&&t?t.mode:void 0}function Gi(e){return typeof e==`object`&&e?e:void 0}function Ki(e){return!e||Gi(e)?.error===!0}function qi(e){let t=Gi(e);return t?.error===!1&&Wi(t)===`sync`}function Ji(e){let t=Gi(e);return t?.error!==!1||Wi(t)!==`queued`?!1:typeof Gi(t.data)?.uniqueKey==`string`}function Yi(e){return Ki(e)?`rejected`:qi(e)?`executed`:Ji(e)?`queued`:`unconfirmed`}export{Le as ALL_FEE_TIERS,O as AppliedTradeError,nt as Assets,Rr as BrowserWalletSigner,$t as CanonicalSymbols,kt as ChainGateway,de as DEFAULT_UNIQUE_KEY_PREFIX,ht as DEX_FEE_METHODS,gt as DRY_RUN_METHOD,_t as DRY_RUN_UNIQUE_KEY_PREFIX,St as DexFees,$n as EIP712_CAPABLE_METHODS,Di as FAILURE_OUTCOMES,Fe as FEE_TIER,ze as GC_MAX_TICK,Re as GC_MIN_TICK,It as GSWAP_ENVIRONMENTS,v as GSWAP_ERROR_CATALOG,p as GSWAP_ERROR_PHASES,Gn as GSwap,x as GSwapSDKError,Lr as GalaWalletSigner,Vt as GdexStreamError,Ut as GdexStreamService,m as INVALID_PRIVATE_KEY_REASONS,qn as PENDING_SWAPS_STORAGE_KEY,Jn as PENDING_SWAP_EXPIRY_MS,Yn as PENDING_SWAP_PRUNE_REASONS,Xn as PendingSwapStore,en as Pools,yn as Positions,Pr as PrivateKeySigner,Tn as Quoting,Rn as SHADOW_FAILURE_KINDS,Ln as SHADOW_SUBMIT_CODES,g as SIGNING_FAILURE_REASONS,h as SUBMISSION_OUTCOME_UNKNOWN_REASONS,Ot as SubmittedTransaction,Wn as Swaps,Xt as Symbols,Ie as TICK_SPACING_BY_FEE,ae as UPDATE_REQUIRED_STATUS,We as alignTickDown,Ge as alignTickUp,N as assertCanonicalPair,W as assertCanonicalV2Dto,A as assertTickRange,E as assertUniqueKey,dn as buildAddLiquidityDto,pn as buildCollectPositionFeesDto,mn as buildCreatePoolDto,xt as buildDryRunWrapper,ir as buildEIP712Payload,fn as buildRemoveLiquidityDto,ln as buildRequestTradeDto,ur as calculatePersonalSignPrefix,Xr as canonicalDecimalString,Y as classification,Ui as classifyFailure,Bn as classifyShadowSubmitError,zn as classifyShadowSubmitStatus,Yi as classifySubmitEnvelope,L as compositeKeyOf,ke as confirmAppliedTrade,Ir as createLazyPrivateKeySigner,he as createUniqueKey,Ei as eip1193ProviderFromEthers,Qn as eip712DomainFor,vr as ethAddressOfPrivateKey,Er as ethereumAddressOfAccount,fr as fixpointPrefixFor,qe as frameSlot0,Zn as generateEIP712Types,le as getObjectProperty,cr as getPayloadToSign,w as getStringProperty,ee as gswapErrorTemplates,mi as hashTypedData,xi as httpRequestorFromAxios,yt as isCurrentContractDexMessage,vt as isDexFeeMethod,C as isGSwapError,Bt as isGdexLiquidityEvent,ce as isPreSendError,tt as isProposableTradingSymbol,Vi as isRelayableRefusal,Tt as isShadowError,qi as isSubmitExecuted,Ji as isSubmitQueued,Ki as isSubmitRejected,Hi as isUninterpretedAnswer,zi as isUnprovenAcknowledgement,T as isValidUniqueKey,dt as isWalletUserRejection,gr as normalizePrivateKey,ki as notSentClassification,I as orderSymbols,ue as parseJson,R as parseTokenClassKey,dr as personalSignPrefixFor,V as queryTokenOf,z as rawTokenOf,Yt as readOrderedSymbols,Vn as readShadowSubmitOutcome,ne as renderGSwapErrorTemplate,Gr as resolvePersonalSignChainDtoPayload,pe as resolveUniqueKeyPrefix,K as serialize,Vr as signChainDtoHash,Br as signChainDtoNative,Kr as signChainDtoPersonalSign,xr as signNative,Sr as signPersonalMessage,qr as signRawObject,br as signSerializedNative,hi as signTypedDataPayload,He as sqrtPriceToTick,Jr as stripEip712DomainType,Un as swapRouteFromQuote,Ue as tickFromPrice,Ve as tickToSqrtPrice,bt as toChainDto,Yr as tokenClassDollarKey,B as tradingSymbolOf,M as validateFee,j as validateNumericAmount,Je as validatePriceValues,Xe as validateTickRange,Ze as validateTickSpacing,Ye as validateTokenDecimals,Qe as validateWalletAddress,ft as walletDeclineCode,zr as withPrivateKey};
|
|
6
6
|
//# sourceMappingURL=index.js.map
|