@vultisig/core-chain 2.31.2 → 2.33.0
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/CHANGELOG.md +40 -0
- package/dist/chains/sui/prebuiltGasData.d.ts +16 -0
- package/dist/chains/sui/prebuiltGasData.d.ts.map +1 -0
- package/dist/chains/sui/prebuiltGasData.js +28 -0
- package/dist/chains/sui/prebuiltGasData.js.map +1 -0
- package/dist/coin/utils/getCoinValue.d.ts +5 -0
- package/dist/coin/utils/getCoinValue.d.ts.map +1 -1
- package/dist/coin/utils/getCoinValue.js +11 -2
- package/dist/coin/utils/getCoinValue.js.map +1 -1
- package/dist/swap/general/swapkit/SwapKitEnabledChains.d.ts.map +1 -1
- package/dist/swap/general/swapkit/SwapKitEnabledChains.js +9 -6
- package/dist/swap/general/swapkit/SwapKitEnabledChains.js.map +1 -1
- package/dist/swap/general/swapkit/api/getSwapKitQuote.d.ts.map +1 -1
- package/dist/swap/general/swapkit/api/getSwapKitQuote.js +34 -17
- package/dist/swap/general/swapkit/api/getSwapKitQuote.js.map +1 -1
- package/dist/swap/native/limitSwapCancelBucket.d.ts.map +1 -1
- package/dist/swap/native/limitSwapCancelBucket.js +2 -2
- package/dist/swap/native/limitSwapCancelBucket.js.map +1 -1
- package/dist/swap/native/limitSwapCancelMemo.d.ts +18 -0
- package/dist/swap/native/limitSwapCancelMemo.d.ts.map +1 -1
- package/dist/swap/native/limitSwapCancelMemo.js +69 -3
- package/dist/swap/native/limitSwapCancelMemo.js.map +1 -1
- package/dist/swap/native/thorchainMemoAsset.d.ts +96 -1
- package/dist/swap/native/thorchainMemoAsset.d.ts.map +1 -1
- package/dist/swap/native/thorchainMemoAsset.js +136 -11
- package/dist/swap/native/thorchainMemoAsset.js.map +1 -1
- package/package.json +6 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# @vultisig/core-chain
|
|
2
2
|
|
|
3
|
+
## 2.33.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1776](https://github.com/vultisig/vultisig-sdk/pull/1776) [`a812367`](https://github.com/vultisig/vultisig-sdk/commit/a812367923ac3781dc240d00124232c6f0cc3348) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - SUI works as a SwapKit swap source, and the transfer-route path no longer trusts SwapKit's `meta.txType` to decide how to decode a payload.
|
|
8
|
+
|
|
9
|
+
Sui was rejected before any network call, on the stated grounds that no `GeneralSwapTx` variant could carry a programmable transaction block. That was never true: the `transfer` variant already carries opaque pre-built bytes as `txType` + `txPayload`, which is exactly how a Bitcoin PSBT route reaches the signer. Nothing needed porting either — `getSuiSigningInputs` has forwarded arbitrary BCS-serialized PTBs to WalletCore's `SignDirect` since the dApp Wallet Standard path landed, and the intent digest it produces is the same blake2b-32 over `[0,0,0] || ptb` that iOS computes by hand in `SwapKitSuiSigner`. The route now rides the transfer arm and hands its bytes to that signer, so a Sui source signs and broadcasts through paths already in use rather than new ones.
|
|
10
|
+
|
|
11
|
+
`disableBuildTx` is no longer opt-out-by-exception. `swapKitTransferSourceChains` mixes deposit-only chains, which need nothing but an address, with chains whose returned bytes _are_ the thing being signed, and the request suppressed transaction building for everything in the list except a hardcoded `!== Chain.Bitcoin`. Adding any prebuilt-tx chain therefore defaulted to asking SwapKit not to build the transaction — the wrong default, and a silent one: the response simply arrives without a `tx`, and the failure surfaces later as an empty payload during keysign construction rather than at the request that caused it. The two kinds of chain are now named separately, so membership of the transfer list no longer implies anything about who builds the transaction.
|
|
12
|
+
|
|
13
|
+
Payload decoding dispatches on the source chain instead of the wire label. SwapKit renames these labels live without versioning — `SOLANA` became `SERIALIZED_BASE64` and `CARDANO` became `CBOR`, both mid-flight — and an unrecognized label fell through to UTF-8-encoding the base64 string instead of decoding it, producing a `txPayload` of the right shape and entirely wrong bytes. The source chain is the discriminator EVM and Solana already used, and it is the only one SwapKit cannot rename. The stored `txType` is normalized to `SUI` for the same reason it must be: iOS hardcodes that spelling rather than persisting what it received, and the field is part of the cosigned `SwapKitSwapPayload`, so a device that stored the wire value would disagree with its own cosigner. A Sui route whose `tx` is not a string is now rejected outright, since the fallback would encode a JSON object into the payload and yield something that looks signable.
|
|
14
|
+
|
|
15
|
+
Pre-built PTBs also report their real network fee. `getSuiChainSpecific` returned an empty `SuiSpecific` for the `signSui` case on the reasoning that a built PTB has no construction inputs to fetch — true, but `getSuiFeeAmount` reads its budget from that message, so `BigInt('')` made every such transaction display a zero fee while the chain charged the budget baked into the bytes. The gas budget and price are read back out of the PTB offline, with no RPC call, and a payload that cannot be decoded still falls back to blank rather than blocking a transaction over a display concern. This corrects the dApp signing path as well as swaps.
|
|
16
|
+
|
|
17
|
+
Cardano stays blocked as a source. Its payload decode returns an empty byte array — there is no implementation at all — so any transaction built from it would be silently wrong.
|
|
18
|
+
|
|
19
|
+
## 2.32.0
|
|
20
|
+
|
|
21
|
+
### Minor Changes
|
|
22
|
+
|
|
23
|
+
- [#1696](https://github.com/vultisig/vultisig-sdk/pull/1696) [`37d7044`](https://github.com/vultisig/vultisig-sdk/commit/37d7044e33d475ddce93b91ff6295d55490052b4) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Limit-order cancellation, end to end: a full-form memo asset, a cancel keysign payload builder, and cancel-aware review for co-signers.
|
|
24
|
+
|
|
25
|
+
The primitives shipped earlier could describe a cancellation but not send one, and a device joining the ceremony could not read one at all. These are the three pieces that close that.
|
|
26
|
+
|
|
27
|
+
`getThorchainCancelMemoAsset` emits the spelling a cancel requires — the same notation as the placement path, minus the abbreviation. That difference is the entire point: `ModifyLimitSwapMemo` is the one inbound memo type `processOneTxIn` does not route through `fuzzyAssetMatch`, so a placement's six-character contract suffix would address a bucket holding no order. `buildCancelLimitSwapMemo` already refused abbreviated assets, which meant there was previously no supported way to produce an input it would accept for a token leg. Both spellings now share one converter and one set of validation rules, so they cannot drift apart in anything but the abbreviation. `getThorchainMemoAssetChain` resolves a memo asset back to its home chain across every flavour, including the secured denoms that a `.`-split would fail to resolve at all.
|
|
28
|
+
|
|
29
|
+
`buildLimitSwapCancelKeysignPayload` turns that memo into a signable transaction, branching on where the order was funded: a THORChain source becomes a `MsgDeposit` carrying no value, and an L1 source a transfer to the live Asgard inbound with derived dust attached solely so Bifrost observes it. The signing asset is the funding chain's **gas** asset, never the order's own — a cancel moves no tokens, and a token here would build an ERC20 transfer that drops the memo entirely. Every gate fails closed: a retarget (`m=<` with a non-zero final field) is refused rather than signed as a cancellation, a memo that overflows the source chain's budget is refused rather than truncated into one matching nothing, and the destination is taken from a live inbound view rather than a cache.
|
|
30
|
+
|
|
31
|
+
The signing coin's chain is checked against the memo's, too. The two arrive as independent parameters, so a caller reaching for "the vault's ETH coin" while holding a BTC-sourced memo would otherwise get a payload that builds, signs and broadcasts cleanly — and is then refunded by THORChain's `From.IsChain(Source.Asset.GetChain())` check, leaving a successful-looking transaction that cancelled nothing. The funding chain is derived from the memo rather than cross-checked against a second parameter, so there is one authority for it. `getThorchainMemoAssetSourceChain` supplies that with `GetChain()` semantics rather than the asset's home chain: a secured or synth source is custodied on THORChain and must be sent from a THOR address even though it originates elsewhere.
|
|
32
|
+
|
|
33
|
+
The `EnableAdvSwapQueue` mimir is deliberately _not_ re-checked here, unlike at placement. That gate protects a new order from executing as an unprotected market swap, a risk a cancel does not carry; refusing to close an already-resting position because the queue stopped accepting new ones would strand it for the remainder of its TTL with no way out.
|
|
34
|
+
|
|
35
|
+
`getKeysignLimitSwapCancel` and `parseCancelLimitSwapMemo` give a joining device the order being closed, decoded from the memo. A cancel carries no swap payload on any branch, so a co-signer keying off one previously saw a dust transfer to an opaque address — worse than uninformative, since a trivial amount reads as harmless while the transaction closes a position. As with placement, the terms come from the memo because the memo is the instruction THORChain executes, so what a reviewer sees cannot disagree with what gets signed. A retarget is reported as not-a-cancellation rather than mislabelled, and the reproduced bucket key travels alongside so a reviewer holding the vault's open orders can tell whether the cancel is unambiguous.
|
|
36
|
+
|
|
37
|
+
`getThorchainCancelMemoAsset` emits its asset UPPER-CASED, unlike the coin's own contract id. Case is not semantic to THORNode — `common.ParseAsset` upper-cases whatever it is given, and the queue index key is built from an upper-cased asset — but it is semantic to this package's pool-id validation, which cancel eligibility routes through to size the memo against its source chain. In the contract's native lower case, every ERC20-funded order reads as an unroutable source chain and becomes uncancellable.
|
|
38
|
+
|
|
39
|
+
### Patch Changes
|
|
40
|
+
|
|
41
|
+
- [#1755](https://github.com/vultisig/vultisig-sdk/pull/1755) [`7d2a91d`](https://github.com/vultisig/vultisig-sdk/commit/7d2a91de80a297c6db6b2fe2e9db41ace609c822) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Fix fiat valuation losing base-unit precision through float-first conversion, with regression coverage for exact VULT discount-tier boundaries.
|
|
42
|
+
|
|
3
43
|
## 2.31.2
|
|
4
44
|
|
|
5
45
|
### Patch Changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type SuiPrebuiltGasData = {
|
|
2
|
+
gasBudget: string;
|
|
3
|
+
referenceGasPrice: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Read the gas budget and price already baked into a pre-built Sui transaction
|
|
7
|
+
* (a dApp-supplied or SwapKit-supplied PTB, base64 BCS `TransactionData`).
|
|
8
|
+
*
|
|
9
|
+
* Signing never consults these — the bytes are hashed and signed verbatim — but
|
|
10
|
+
* the keysign payload carries them so the fee shown to the user matches what
|
|
11
|
+
* the chain will actually charge. Decoding failures return `undefined` rather
|
|
12
|
+
* than throwing: a display concern must never block an otherwise signable
|
|
13
|
+
* transaction.
|
|
14
|
+
*/
|
|
15
|
+
export declare const getSuiPrebuiltGasData: (unsignedTxMsg: string) => SuiPrebuiltGasData | undefined;
|
|
16
|
+
//# sourceMappingURL=prebuiltGasData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prebuiltGasData.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/sui/prebuiltGasData.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,eAAe,MAAM,KAAG,kBAAkB,GAAG,SAiBlF,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
2
|
+
import { fromBase64 } from '@mysten/sui/utils';
|
|
3
|
+
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
4
|
+
/**
|
|
5
|
+
* Read the gas budget and price already baked into a pre-built Sui transaction
|
|
6
|
+
* (a dApp-supplied or SwapKit-supplied PTB, base64 BCS `TransactionData`).
|
|
7
|
+
*
|
|
8
|
+
* Signing never consults these — the bytes are hashed and signed verbatim — but
|
|
9
|
+
* the keysign payload carries them so the fee shown to the user matches what
|
|
10
|
+
* the chain will actually charge. Decoding failures return `undefined` rather
|
|
11
|
+
* than throwing: a display concern must never block an otherwise signable
|
|
12
|
+
* transaction.
|
|
13
|
+
*/
|
|
14
|
+
export const getSuiPrebuiltGasData = (unsignedTxMsg) => {
|
|
15
|
+
const result = attempt(() => Transaction.from(fromBase64(unsignedTxMsg)).getData().gasData);
|
|
16
|
+
if ('error' in result) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const { budget, price } = result.data;
|
|
20
|
+
if (!budget) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
gasBudget: String(budget),
|
|
25
|
+
referenceGasPrice: price ? String(price) : '',
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=prebuiltGasData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prebuiltGasData.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/sui/prebuiltGasData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAOrD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,aAAqB,EAAkC,EAAE;IAC7F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAA;IAE3F,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAA;IAErC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;KAC9C,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { CoinAmount } from '@vultisig/core-chain/coin/Coin';
|
|
2
2
|
import { EntityWithPrice } from '@vultisig/lib-utils/entities/EntityWithPrice';
|
|
3
|
+
/**
|
|
4
|
+
* Convert base units to their exact human decimal before entering the
|
|
5
|
+
* necessarily number-based price calculation. Converting the raw bigint to a
|
|
6
|
+
* number first can round once before division and again afterward.
|
|
7
|
+
*/
|
|
3
8
|
export declare const getCoinValue: ({ amount, decimals, price }: CoinAmount & EntityWithPrice) => number;
|
|
4
9
|
//# sourceMappingURL=getCoinValue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCoinValue.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/utils/getCoinValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAE9E,eAAO,MAAM,YAAY,GAAI,6BAA6B,UAAU,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"getCoinValue.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/utils/getCoinValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAE9E;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,6BAA6B,UAAU,GAAG,eAAe,WAKrF,CAAA"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { fromChainAmountExact } from '@vultisig/core-chain/amount/fromChainAmountExact';
|
|
2
|
+
/**
|
|
3
|
+
* Convert base units to their exact human decimal before entering the
|
|
4
|
+
* necessarily number-based price calculation. Converting the raw bigint to a
|
|
5
|
+
* number first can round once before division and again afterward.
|
|
6
|
+
*/
|
|
7
|
+
export const getCoinValue = ({ amount, decimals, price }) => {
|
|
8
|
+
const sign = amount < 0n ? -1 : 1;
|
|
9
|
+
const absoluteAmount = amount < 0n ? -amount : amount;
|
|
10
|
+
return sign * Number(fromChainAmountExact(absoluteAmount, decimals)) * price;
|
|
11
|
+
};
|
|
3
12
|
//# sourceMappingURL=getCoinValue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCoinValue.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/utils/getCoinValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getCoinValue.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/utils/getCoinValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAIvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAgC,EAAE,EAAE;IACxF,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,cAAc,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAErD,OAAO,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAA;AAC9E,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapKitEnabledChains.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/SwapKitEnabledChains.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"SwapKitEnabledChains.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/SwapKitEnabledChains.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,2rBA+BtB,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAErE,eAAO,MAAM,oBAAoB,8xBAOvB,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA"}
|
|
@@ -19,13 +19,16 @@ export const swapKitSourceChains = [
|
|
|
19
19
|
// Sui + Cardano confirmed live as SOURCE via SwapKit's NEAR-Intents provider
|
|
20
20
|
// (SUI.SUI->ETH.ETH, SUI.SUI->BTC.BTC, ADA.ADA->ETH.ETH all returned real
|
|
21
21
|
// routes). Dest direction already worked (both were already in
|
|
22
|
-
// swapKitEnabledChains below).
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
// support is separate follow-on work, not covered by this change.
|
|
22
|
+
// swapKitEnabledChains below).
|
|
23
|
+
//
|
|
24
|
+
// Sui is wired end-to-end: SwapKit's pre-built PTB rides the `transfer` arm
|
|
25
|
+
// as `txType: 'SUI'` + `txPayload`, and `buildSwapKeysignPayload` hands those
|
|
26
|
+
// bytes to the existing `signSui` signing path.
|
|
28
27
|
Chain.Sui,
|
|
28
|
+
// Cardano is type-level source eligibility ONLY — `getSwapKitQuote` still
|
|
29
|
+
// rejects it as a source before any network call, because there is no CBOR
|
|
30
|
+
// decode for its payload yet (see that file's
|
|
31
|
+
// `SWAP_SOURCE_TX_BUILD_UNSUPPORTED` guard).
|
|
29
32
|
Chain.Cardano,
|
|
30
33
|
];
|
|
31
34
|
export const swapKitEnabledChains = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapKitEnabledChains.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/SwapKitEnabledChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,WAAW;IACjB,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,KAAK;IACX,6EAA6E;IAC7E,0EAA0E;IAC1E,+DAA+D;IAC/D
|
|
1
|
+
{"version":3,"file":"SwapKitEnabledChains.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/SwapKitEnabledChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,WAAW;IACjB,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,KAAK;IACX,6EAA6E;IAC7E,0EAA0E;IAC1E,+DAA+D;IAC/D,+BAA+B;IAC/B,EAAE;IACF,4EAA4E;IAC5E,8EAA8E;IAC9E,gDAAgD;IAChD,KAAK,CAAC,GAAG;IACT,0EAA0E;IAC1E,2EAA2E;IAC3E,8CAA8C;IAC9C,6CAA6C;IAC7C,KAAK,CAAC,OAAO;CACL,CAAA;AAIV,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,mBAAmB;IACtB,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,SAAS;CACP,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSwapKitQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,oDAAoD,CAAA;AAGpG,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAA;AAaxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG;IACzE,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;
|
|
1
|
+
{"version":3,"file":"getSwapKitQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,oDAAoD,CAAA;AAGpG,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAA;AAaxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG;IACzE,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAk1BD,eAAO,MAAM,eAAe,GAAU,+CAMnC,KAAK,KAAG,OAAO,CAAC,gBAAgB,CAmDlC,CAAA"}
|
|
@@ -81,6 +81,10 @@ const swapKitTransferSourceChains = [
|
|
|
81
81
|
Chain.Dogecoin,
|
|
82
82
|
Chain.Litecoin,
|
|
83
83
|
Chain.Ripple,
|
|
84
|
+
// Sui rides the transfer arm for its pre-built PTB, the same way Bitcoin
|
|
85
|
+
// rides it for a PSBT: `txType`/`txPayload` carry the opaque signing bytes
|
|
86
|
+
// while `to`/`amount` stay informational (both are baked into the PTB).
|
|
87
|
+
Chain.Sui,
|
|
84
88
|
Chain.Ton,
|
|
85
89
|
Chain.Tron,
|
|
86
90
|
Chain.Zcash,
|
|
@@ -372,6 +376,14 @@ const getTransferAmount = ({ depositAmount, tx }, amount, decimals) => {
|
|
|
372
376
|
return amount;
|
|
373
377
|
};
|
|
374
378
|
const shouldUseTransferTx = (chain) => isOneOf(chain, swapKitTransferSourceChains);
|
|
379
|
+
// Transfer-arm chains that still need SwapKit to BUILD the transaction, so
|
|
380
|
+
// `/v3/swap` must not be sent `disableBuildTx`. Bitcoin gets a PSBT and Sui a
|
|
381
|
+
// pre-built PTB; in both cases those bytes drive signing directly, and asking
|
|
382
|
+
// SwapKit to skip construction returns a response with no `tx` at all. The
|
|
383
|
+
// remaining transfer chains are deposit-only (TON/XRP/ADA style) — they need
|
|
384
|
+
// nothing but an address, so skipping the build saves a pointless server-side
|
|
385
|
+
// construction that can fail on balance checks.
|
|
386
|
+
const swapKitPrebuiltTxSourceChains = new Set([Chain.Bitcoin, Chain.Sui]);
|
|
375
387
|
const textEncoder = new TextEncoder();
|
|
376
388
|
const stringifyCanonicalJson = (value) => {
|
|
377
389
|
if (Array.isArray(value)) {
|
|
@@ -421,7 +433,18 @@ const buildTransferTx = (response, from, amount) => {
|
|
|
421
433
|
if (!to) {
|
|
422
434
|
throw new Error('SwapKit transfer route did not return a target address.');
|
|
423
435
|
}
|
|
424
|
-
|
|
436
|
+
// SwapKit renames base64 tx types on the wire without versioning — `SOLANA`
|
|
437
|
+
// became `SERIALIZED_BASE64` and `CARDANO` became `CBOR` mid-flight (iOS
|
|
438
|
+
// accepts both spellings in `SwapKitSwapResponse.decodeTx`). A Sui route's
|
|
439
|
+
// `meta.txType` therefore cannot be trusted to read `SUI`. The source chain
|
|
440
|
+
// is the reliable discriminator, and normalizing here also keeps
|
|
441
|
+
// `SwapKitSwapPayload.txType` byte-identical to what iOS stamps
|
|
442
|
+
// (`buildSwapKitSuiPayload` hardcodes `"SUI"`) — cosigning peers must agree.
|
|
443
|
+
const wireTxType = response.meta?.txType;
|
|
444
|
+
const txType = from.chain === Chain.Sui ? 'SUI' : wireTxType;
|
|
445
|
+
if (from.chain === Chain.Sui && response.tx !== undefined && typeof response.tx !== 'string') {
|
|
446
|
+
throw new Error('SwapKit Sui route did not return a base64 programmable transaction block.');
|
|
447
|
+
}
|
|
425
448
|
const txPayload = response.tx ? encodeSwapKitTxPayload(response.tx, txType) : undefined;
|
|
426
449
|
const psbtDestinationAmount = from.chain === Chain.Bitcoin && txType?.toUpperCase() === 'PSBT' && txPayload?.length
|
|
427
450
|
? getBitcoinPsbtDestinationAmount({
|
|
@@ -443,23 +466,17 @@ const buildTransferTx = (response, from, amount) => {
|
|
|
443
466
|
transfer,
|
|
444
467
|
};
|
|
445
468
|
};
|
|
446
|
-
//
|
|
447
|
-
//
|
|
448
|
-
//
|
|
449
|
-
//
|
|
450
|
-
//
|
|
451
|
-
//
|
|
452
|
-
//
|
|
453
|
-
//
|
|
454
|
-
// `{evm: {...}}` shape if the response ever coincidentally looks
|
|
455
|
-
// record-like.
|
|
456
|
-
// - Cardano: `encodeSwapKitTxPayload` explicitly returns an EMPTY byte array
|
|
457
|
-
// for `normalizedTxType === 'CARDANO'` — there is no decode implementation
|
|
458
|
-
// at all, so any tx built from it would be silently wrong.
|
|
469
|
+
// Cardano is an eligible SwapKit SOURCE chain for quote-dispatch purposes (see
|
|
470
|
+
// SwapKitEnabledChains.ts) but has no wired tx-build path here yet:
|
|
471
|
+
// `encodeSwapKitTxPayload` explicitly returns an EMPTY byte array for
|
|
472
|
+
// `normalizedTxType === 'CARDANO'` — there is no decode implementation at all,
|
|
473
|
+
// so any tx built from it would be silently wrong. iOS covers this with a
|
|
474
|
+
// separate `CARDANO_PREBUILT` CBOR path (`SwapKitCardanoSigner.swift`); porting
|
|
475
|
+
// that decode is follow-on work.
|
|
476
|
+
//
|
|
459
477
|
// Rejected in `getSwapKitQuote` BEFORE the network round-trip (no route/swap
|
|
460
478
|
// API calls wasted on a request that can never produce a signable tx).
|
|
461
|
-
|
|
462
|
-
const SWAP_SOURCE_TX_BUILD_UNSUPPORTED = new Set([Chain.Sui, Chain.Cardano]);
|
|
479
|
+
const SWAP_SOURCE_TX_BUILD_UNSUPPORTED = new Set([Chain.Cardano]);
|
|
463
480
|
const buildSwapKitTx = (response, from, to, amount, routeProvider) => {
|
|
464
481
|
if (from.chain === Chain.Solana) {
|
|
465
482
|
return buildSolanaTx(response.tx, response.fees, from, to, routeProvider);
|
|
@@ -608,7 +625,7 @@ export const getSwapKitQuote = async ({ from, to, amount, affiliateBps, slippage
|
|
|
608
625
|
sourceAddress: from.address,
|
|
609
626
|
destinationAddress: to.address,
|
|
610
627
|
disableBalanceCheck: true,
|
|
611
|
-
disableBuildTx: shouldUseTransferTx(from.chain) && from.chain
|
|
628
|
+
disableBuildTx: shouldUseTransferTx(from.chain) && !swapKitPrebuiltTxSourceChains.has(from.chain) ? true : undefined,
|
|
612
629
|
}));
|
|
613
630
|
const routeProvider = getRouteProviderName(swapResponse) ?? getRouteProviderName(route);
|
|
614
631
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSwapKitQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getSwapKitQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitSwapCancelBucket.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelBucket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"limitSwapCancelBucket.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelBucket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAenG;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,GAAI,OAAO,MAAM,KAAG,MAM1D,CAAA;AAcD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,GAAI,0DAK7C,qBAAqB,KAAG,MAa1B,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qCAAqC,GAAI,GAAG,qBAAqB,EAAE,GAAG,qBAAqB,KAAG,OAChC,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertPositiveLimitSwapCancelAmounts } from './limitSwapCancelMemo.js';
|
|
2
|
+
import { findThorchainMemoAssetSeparatorIndex } from './thorchainMemoAsset.js';
|
|
2
3
|
/**
|
|
3
4
|
* THORChain's fixed-point exponent, the `1e8` the ratio is scaled by.
|
|
4
5
|
*/
|
|
@@ -23,8 +24,7 @@ const thorchainRatioLength = 18;
|
|
|
23
24
|
* it, so it must not be touched.
|
|
24
25
|
*/
|
|
25
26
|
export const toThorchainLayer1MemoAsset = (asset) => {
|
|
26
|
-
const
|
|
27
|
-
const index = [...asset].findIndex(char => separators.includes(char));
|
|
27
|
+
const index = findThorchainMemoAssetSeparatorIndex(asset);
|
|
28
28
|
if (index === -1 || asset[index] === '.') {
|
|
29
29
|
return asset.toUpperCase();
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitSwapCancelBucket.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelBucket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAyB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"limitSwapCancelBucket.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelBucket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAyB,MAAM,uBAAuB,CAAA;AACnG,OAAO,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAA;AAE3E;;GAEG;AACH,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAEtC;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAE/B;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAa,EAAU,EAAE;IAClE,MAAM,KAAK,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAA;IACzD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAA;AAC3E,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAU,EAAE,CACtD,KAAK,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA;AAExH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,EAC9C,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,GACW,EAAU,EAAE;IAClC,6EAA6E;IAC7E,2EAA2E;IAC3E,sEAAsE;IACtE,4EAA4E;IAC5E,8EAA8E;IAC9E,+DAA+D;IAC/D,oCAAoC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAA;IAEnE,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,GAAG,IAAI,2BAA2B,CAAC,GAAG,WAAW,CAAA;IAC/E,MAAM,MAAM,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAA;IACtD,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAA;AAC1E,CAAC,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAwB,EAAE,CAAwB,EAAW,EAAE,CACnH,+BAA+B,CAAC,CAAC,CAAC,KAAK,+BAA+B,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -107,6 +107,24 @@ export declare const assertPositiveLimitSwapCancelAmounts: ({ sourceAmount, trad
|
|
|
107
107
|
* different bucket.
|
|
108
108
|
*/
|
|
109
109
|
export declare const buildCancelLimitSwapMemo: (inputs: LimitSwapCancelInputs) => string;
|
|
110
|
+
/** The order identity an `m=<` cancel memo encodes, as decoded from the memo. */
|
|
111
|
+
export type ParsedLimitSwapCancelMemo = LimitSwapCancelInputs;
|
|
112
|
+
/**
|
|
113
|
+
* Decode the cancel memo's order identity — the inverse of
|
|
114
|
+
* {@link buildCancelLimitSwapMemo}.
|
|
115
|
+
*
|
|
116
|
+
* Fail closed on anything that is not a well-formed CANCEL memo, including a
|
|
117
|
+
* retarget: a non-zero final field modifies an order's price rather than closing
|
|
118
|
+
* it, and reporting one as a cancellation would show a co-signer the opposite of
|
|
119
|
+
* what they are about to sign.
|
|
120
|
+
*
|
|
121
|
+
* What comes back is the order's identity, not a request to act on it — these
|
|
122
|
+
* four values are exactly what {@link getThorchainLimitOrderBucketKey} hashes
|
|
123
|
+
* into the bucket THORChain will look in, so a caller can show which order is
|
|
124
|
+
* being cancelled without trusting any field the initiating device supplied
|
|
125
|
+
* alongside the memo.
|
|
126
|
+
*/
|
|
127
|
+
export declare const parseCancelLimitSwapMemo: (memo: string) => ParsedLimitSwapCancelMemo;
|
|
110
128
|
/**
|
|
111
129
|
* Whether a cancel memo fits the per-transaction budget of the chain it will be
|
|
112
130
|
* sent from.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitSwapCancelMemo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelMemo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"limitSwapCancelMemo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelMemo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAG/G;;;GAGG;AACH,eAAO,MAAM,yBAAyB,SAAS,CAAA;AAS/C;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OACzB,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OAUvE,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;;;;;;;;OAYG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAA;IACpB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAA;IACnB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAaD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,+BAA+B,GAAI,OAAO,MAAM,KAAG,OAQ/D,CAAA;AAED,eAAO,MAAM,yBAAyB,kEAAmE,CAAA;AAEzG,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjF,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAA;gBAE7B,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM;CAK9D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oCAAoC,GAAI,gCAGlD,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,aAAa,CAAC,KAAG,IAOhE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,qBAAqB,KAAG,MAwBxE,CAAA;AAkCD,iFAAiF;AACjF,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,CAAA;AAE7D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,yBAsCvD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,EAAE,iBAAiB,wBAAwB,KAAG,OACnB,CAAA;AAElF,kFAAkF;AAClF,eAAO,MAAM,qCAAqC,GAAI,MAAM,MAAM,EAAE,aAAa,MAAM,KAAG,OACd,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getLimitSwapSourceChainKind, limitSwapMemoByteLimit } from './limitSwapMemo.js';
|
|
2
|
+
import { findThorchainMemoAssetSeparatorIndex } from './thorchainMemoAsset.js';
|
|
2
3
|
/**
|
|
3
4
|
* THORChain's modify-limit-swap prefix. Distinct from `limitSwapMemoPrefix`
|
|
4
5
|
* (`=<:`), which PLACES an order — `m=<:` modifies one that is already resting.
|
|
@@ -49,8 +50,6 @@ export const isCancelLimitSwapMemo = (memo) => {
|
|
|
49
50
|
* catch truncation, not to validate contract syntax.
|
|
50
51
|
*/
|
|
51
52
|
const minimumFullTokenIdentifierLength = 20;
|
|
52
|
-
/** Every separator a THORChain memo asset can use: L1, synth, trade, secured. */
|
|
53
|
-
const assetSeparators = ['.', '/', '~', '-'];
|
|
54
53
|
/**
|
|
55
54
|
* Whether a memo asset carries a TRUNCATED token identifier —
|
|
56
55
|
* `ETH.USDC-06EB48` rather than `ETH.USDC-0XA0B86991…`.
|
|
@@ -67,7 +66,7 @@ const assetSeparators = ['.', '/', '~', '-'];
|
|
|
67
66
|
* `btc-btc` carry no identifier at all and are full by construction.
|
|
68
67
|
*/
|
|
69
68
|
export const isAbbreviatedThorchainMemoAsset = (asset) => {
|
|
70
|
-
const chainEnd =
|
|
69
|
+
const chainEnd = findThorchainMemoAssetSeparatorIndex(asset);
|
|
71
70
|
const symbol = chainEnd === -1 ? asset : asset.slice(chainEnd + 1);
|
|
72
71
|
const identifierStart = symbol.indexOf('-');
|
|
73
72
|
if (identifierStart === -1) {
|
|
@@ -142,6 +141,73 @@ export const buildCancelLimitSwapMemo = (inputs) => {
|
|
|
142
141
|
const target = `${tradeTarget}${targetAsset}`;
|
|
143
142
|
return `${modifyLimitSwapMemoPrefix}${source}:${target}:${cancelModifiedTargetAmount}`;
|
|
144
143
|
};
|
|
144
|
+
/**
|
|
145
|
+
* `<digits><ASSET>`, the space-less coin form THORNode's `getCoin` splits.
|
|
146
|
+
*
|
|
147
|
+
* The asset is anchored on a NON-digit. Without that anchor the greedy digit run
|
|
148
|
+
* backtracks, so an asset-less `100000000` parses as amount `10000000` and asset
|
|
149
|
+
* `"0"` — a coin THORNode would reject, silently reported here as valid. Every
|
|
150
|
+
* THORChain asset starts with a chain prefix letter, so nothing legitimate is
|
|
151
|
+
* excluded.
|
|
152
|
+
*/
|
|
153
|
+
const cancelMemoCoinPattern = /^(\d+)(\D\S*)$/;
|
|
154
|
+
/**
|
|
155
|
+
* Split one `<amount><ASSET>` field the way THORNode's `getCoin` does: take the
|
|
156
|
+
* leading run of digits as the amount, and everything after it as the asset.
|
|
157
|
+
*
|
|
158
|
+
* The absence of a separator is what makes this necessary — an asset can itself
|
|
159
|
+
* contain digits (`ETH.USDC-0xA0b86991…`), so the boundary is defined only by
|
|
160
|
+
* where the digits stop.
|
|
161
|
+
*/
|
|
162
|
+
const parseCancelMemoCoin = (field, fieldName, memo) => {
|
|
163
|
+
const match = cancelMemoCoinPattern.exec(field);
|
|
164
|
+
if (!match) {
|
|
165
|
+
throw new Error(`limit-order cancel memo ${fieldName} must be "<amount><ASSET>" with no separator, got ${JSON.stringify(field)} in ${JSON.stringify(memo)}`);
|
|
166
|
+
}
|
|
167
|
+
const [, amount, asset] = match;
|
|
168
|
+
return { amount: BigInt(amount), asset };
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Decode the cancel memo's order identity — the inverse of
|
|
172
|
+
* {@link buildCancelLimitSwapMemo}.
|
|
173
|
+
*
|
|
174
|
+
* Fail closed on anything that is not a well-formed CANCEL memo, including a
|
|
175
|
+
* retarget: a non-zero final field modifies an order's price rather than closing
|
|
176
|
+
* it, and reporting one as a cancellation would show a co-signer the opposite of
|
|
177
|
+
* what they are about to sign.
|
|
178
|
+
*
|
|
179
|
+
* What comes back is the order's identity, not a request to act on it — these
|
|
180
|
+
* four values are exactly what {@link getThorchainLimitOrderBucketKey} hashes
|
|
181
|
+
* into the bucket THORChain will look in, so a caller can show which order is
|
|
182
|
+
* being cancelled without trusting any field the initiating device supplied
|
|
183
|
+
* alongside the memo.
|
|
184
|
+
*/
|
|
185
|
+
export const parseCancelLimitSwapMemo = (memo) => {
|
|
186
|
+
if (!isModifyLimitSwapMemo(memo)) {
|
|
187
|
+
throw new Error(`memo is not a THORChain limit-order modification (expected a "${modifyLimitSwapMemoPrefix}" prefix): ${JSON.stringify(memo)}`);
|
|
188
|
+
}
|
|
189
|
+
const segments = memo.slice(modifyLimitSwapMemoPrefix.length).split(':');
|
|
190
|
+
if (segments.length !== 3) {
|
|
191
|
+
throw new Error(`limit-order cancel memo must have 3 segments after the prefix, got ${segments.length}: ${JSON.stringify(memo)}`);
|
|
192
|
+
}
|
|
193
|
+
const [sourceField, targetField, modifiedTarget] = segments;
|
|
194
|
+
if (!/^\d+$/.test(modifiedTarget) || BigInt(modifiedTarget) !== 0n) {
|
|
195
|
+
throw new Error(`memo re-targets a limit order rather than cancelling it (modified target ${JSON.stringify(modifiedTarget)}): ${JSON.stringify(memo)}`);
|
|
196
|
+
}
|
|
197
|
+
const source = parseCancelMemoCoin(sourceField, 'source coin', memo);
|
|
198
|
+
const target = parseCancelMemoCoin(targetField, 'target coin', memo);
|
|
199
|
+
const inputs = {
|
|
200
|
+
sourceAsset: source.asset,
|
|
201
|
+
sourceAmount: source.amount,
|
|
202
|
+
targetAsset: target.asset,
|
|
203
|
+
tradeTarget: target.amount,
|
|
204
|
+
};
|
|
205
|
+
// The same invariants the builder enforces, re-checked on the way back in: a
|
|
206
|
+
// memo that reaches a reviewer from another device was not necessarily built
|
|
207
|
+
// by this code.
|
|
208
|
+
assertPositiveLimitSwapCancelAmounts(inputs);
|
|
209
|
+
return inputs;
|
|
210
|
+
};
|
|
145
211
|
/**
|
|
146
212
|
* Whether a cancel memo fits the per-transaction budget of the chain it will be
|
|
147
213
|
* sent from.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitSwapCancelMemo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelMemo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAA4B,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"limitSwapCancelMemo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapCancelMemo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAA4B,MAAM,iBAAiB,CAAA;AAC/G,OAAO,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAA;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAA;AAE/C;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,GAAG,CAAA;AAEtC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAA+B,EAAW,EAAE,CAChF,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAA+B,EAAW,EAAE;IAChF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAChD,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;AACtC,CAAC,CAAA;AA8BD;;;;;;;;GAQG;AACH,MAAM,gCAAgC,GAAG,EAAE,CAAA;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,KAAa,EAAW,EAAE;IACxE,MAAM,QAAQ,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;IAClE,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,gCAAgC,CAAA;AACpF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,CAAU,CAAA;AAIzG,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAC7C,MAAM,CAA0B;IAEzC,YAAY,MAAgC,EAAE,OAAe;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAA;IAC7C,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,EACnD,YAAY,EACZ,WAAW,GACiD,EAAQ,EAAE;IACtE,IAAI,YAAY,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,6BAA6B,CACrC,mBAAmB,EACnB,4DAA4D,YAAY,qBAAqB,WAAW,EAAE,CAC3G,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAA6B,EAAU,EAAE;IAChF,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAC5C,sEAAsE;IACtE,6EAA6E;IAC7E,8EAA8E;IAC9E,iDAAiD;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IAE7C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,6BAA6B,CAAC,YAAY,EAAE,oDAAoD,CAAC,CAAA;IAC7G,CAAC;IACD,oCAAoC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAA;IACnE,IAAI,+BAA+B,CAAC,WAAW,CAAC,IAAI,+BAA+B,CAAC,WAAW,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,6BAA6B,CACrC,kBAAkB,EAClB,mEAAmE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI;YACnI,mGAAmG,CACtG,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,YAAY,GAAG,WAAW,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,GAAG,WAAW,GAAG,WAAW,EAAE,CAAA;IAC7C,OAAO,GAAG,yBAAyB,GAAG,MAAM,IAAI,MAAM,IAAI,0BAA0B,EAAE,CAAA;AACxF,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAG,gBAAgB,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,SAAiB,EAAE,IAAY,EAAqC,EAAE;IAChH,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,qDAAqD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAC5I,CAAA;IACH,CAAC;IAED,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;IAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;AAC1C,CAAC,CAAA;AAKD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAA6B,EAAE;IAClF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,iEAAiE,yBAAyB,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAC/H,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,sEAAsE,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACjH,CAAA;IACH,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAA;IAE3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,4EAA4E,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACvI,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;IAEpE,MAAM,MAAM,GAA8B;QACxC,WAAW,EAAE,MAAM,CAAC,KAAK;QACzB,YAAY,EAAE,MAAM,CAAC,MAAM;QAC3B,WAAW,EAAE,MAAM,CAAC,KAAK;QACzB,WAAW,EAAE,MAAM,CAAC,MAAM;KAC3B,CAAA;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,gBAAgB;IAChB,oCAAoC,CAAC,MAAM,CAAC,CAAA;IAE5C,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAY,EAAE,eAAyC,EAAW,EAAE,CAC7G,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,sBAAsB,CAAC,eAAe,CAAC,CAAA;AAElF,kFAAkF;AAClF,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAW,EAAE,CAClG,0BAA0B,CAAC,IAAI,EAAE,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAA"}
|
|
@@ -28,6 +28,69 @@ export declare const thorchainMemoAssetChainPrefix: Readonly<Partial<Record<Chai
|
|
|
28
28
|
* builds one that routes somewhere unintended.
|
|
29
29
|
*/
|
|
30
30
|
export declare const thorchainAssetPrefixToChain: Readonly<Partial<Record<string, Chain>>>;
|
|
31
|
+
/**
|
|
32
|
+
* Every separator a THORChain memo asset can use: L1 (`.`), synth (`/`), trade
|
|
33
|
+
* (`~`) and secured (`-`). Shared so the modules that have to find where a
|
|
34
|
+
* chain prefix ends cannot disagree about which flavours exist.
|
|
35
|
+
*/
|
|
36
|
+
export declare const thorchainMemoAssetSeparators: readonly string[];
|
|
37
|
+
/**
|
|
38
|
+
* Index of the separator that ends a memo asset's CHAIN prefix, or `-1` when the
|
|
39
|
+
* asset carries none.
|
|
40
|
+
*
|
|
41
|
+
* Always the FIRST separator, never the last. A secured asset spells the whole
|
|
42
|
+
* denom with `-` (`eth-usdc-0x…`), so searching from the right would put the
|
|
43
|
+
* boundary inside the token identifier and make every secured asset read as a
|
|
44
|
+
* different chain, or as truncated. Shared with the traversal rather than only
|
|
45
|
+
* the character list, so the three modules that need this boundary cannot
|
|
46
|
+
* disagree about where it falls.
|
|
47
|
+
*/
|
|
48
|
+
export declare const findThorchainMemoAssetSeparatorIndex: (asset: string) => number;
|
|
49
|
+
/**
|
|
50
|
+
* The chain a memo asset ORIGINATES from — what `Asset.GetLayer1Asset().Chain`
|
|
51
|
+
* resolves to on THORNode's side.
|
|
52
|
+
*
|
|
53
|
+
* Reads the prefix up to the first separator, so it holds for every flavour:
|
|
54
|
+
* `ETH.USDC-0x…`, `BTC/BTC` and the secured `eth-usdc-0x…` all resolve to their
|
|
55
|
+
* L1 chain. Splitting on `.` alone would return the whole denom for a secured
|
|
56
|
+
* asset and resolve nothing.
|
|
57
|
+
*
|
|
58
|
+
* Note this is the asset's home chain, NOT necessarily the chain a transaction
|
|
59
|
+
* touching it is signed from — a secured asset lives on THORChain while still
|
|
60
|
+
* reporting Ethereum here.
|
|
61
|
+
*
|
|
62
|
+
* `undefined` for a prefix this SDK cannot route, which a caller should treat as
|
|
63
|
+
* "unknown chain" rather than an error: an asset THORChain understands and this
|
|
64
|
+
* SDK does not is still a real order.
|
|
65
|
+
*/
|
|
66
|
+
export declare const getThorchainMemoAssetChain: (asset: string) => Chain | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* The chain a transaction referencing this asset must be SENT FROM — what
|
|
69
|
+
* `Asset.GetChain()` resolves to on THORNode's side, which is a different
|
|
70
|
+
* question from {@link getThorchainMemoAssetChain}.
|
|
71
|
+
*
|
|
72
|
+
* The two diverge for every THORChain-HELD flavour. A secured `eth-usdc-0x…`
|
|
73
|
+
* originates on Ethereum but is custodied on THORChain, so a message referencing
|
|
74
|
+
* it must come from a THOR address; the same holds for synths (`BTC/BTC`) and
|
|
75
|
+
* trade assets (`ETH~ETH`). Only dotted layer-1 notation names a chain that also
|
|
76
|
+
* has to send.
|
|
77
|
+
*
|
|
78
|
+
* The separator IS the discriminator: THORNode's own flavour detection works the
|
|
79
|
+
* same way, and the first separator is the one that decides — a dotted asset's
|
|
80
|
+
* later `-` introduces a contract id, not a flavour.
|
|
81
|
+
*
|
|
82
|
+
* This is what `MsgModifyLimitSwap.ValidateBasic`'s
|
|
83
|
+
* `From.IsChain(Source.Asset.GetChain())` compares against, so a caller that
|
|
84
|
+
* pairs a signing coin with a memo must agree with this or the transaction
|
|
85
|
+
* broadcasts successfully and is refunded without cancelling anything.
|
|
86
|
+
*
|
|
87
|
+
* `undefined` when the prefix is unroutable — treat as "unknown", and refuse.
|
|
88
|
+
* That holds for the THORChain-held flavours too: a recognisable SHAPE is not a
|
|
89
|
+
* recognisable asset, so `NOPE-NOPE` is unknown rather than THORChain-held.
|
|
90
|
+
* Answering THORChain on the strength of a separator alone would let a garbage
|
|
91
|
+
* source asset pair successfully with a RUNE coin and reach a signer.
|
|
92
|
+
*/
|
|
93
|
+
export declare const getThorchainMemoAssetSourceChain: (asset: string) => Chain | undefined;
|
|
31
94
|
/**
|
|
32
95
|
* Whether a chain can be encoded as a THORChain memo asset — i.e. whether it is
|
|
33
96
|
* routable through THORChain at all.
|
|
@@ -72,5 +135,37 @@ export type ThorchainMemoAssetInput = Pick<Coin, 'chain' | 'id' | 'ticker'>;
|
|
|
72
135
|
* too short to abbreviate — a malformed asset segment must fail here rather than
|
|
73
136
|
* at broadcast time, once funds are committed.
|
|
74
137
|
*/
|
|
75
|
-
export declare const getThorchainMemoAsset: (
|
|
138
|
+
export declare const getThorchainMemoAsset: (input: ThorchainMemoAssetInput) => string;
|
|
139
|
+
/**
|
|
140
|
+
* Build the THORChain memo-asset string a **cancel** memo must use — the same
|
|
141
|
+
* notation {@link getThorchainMemoAsset} emits, minus the abbreviation.
|
|
142
|
+
*
|
|
143
|
+
* - native → `CHAIN.TICKER` (`BTC.BTC`, `THOR.RUNE`)
|
|
144
|
+
* - THORChain tokens → `THOR.TICKER` (`THOR.TCY`)
|
|
145
|
+
* - THORChain secured assets → `CHAIN-ASSET` (`XRP-XRP`, `ETH-USDC-0X…`)
|
|
146
|
+
* - any other token → `CHAIN.TICKER-<full contract>` (`ETH.USDC-0XA0B8…`)
|
|
147
|
+
*
|
|
148
|
+
* The difference from the placement spelling is the entire point. A placement
|
|
149
|
+
* memo abbreviates an L1 contract to its last six characters because memo bytes
|
|
150
|
+
* are scarce and `fuzzyAssetMatch` expands it again on arrival. A cancel gets no
|
|
151
|
+
* such treatment: `ModifyLimitSwapMemo` is the one inbound memo type
|
|
152
|
+
* `processOneTxIn` does NOT route through `fuzzyAssetMatch`, so its asset string
|
|
153
|
+
* builds the order-index key verbatim. An abbreviation there addresses a bucket
|
|
154
|
+
* that by construction holds no order — the cancel is accepted, costs a fee, and
|
|
155
|
+
* cancels nothing.
|
|
156
|
+
*
|
|
157
|
+
* UPPER-CASED, unlike the coin's own contract id. Case is not semantic to
|
|
158
|
+
* THORNode — `common.ParseAsset` upper-cases whatever it is given, and the queue
|
|
159
|
+
* index key is built from an upper-cased asset — but it IS semantic to this
|
|
160
|
+
* package's own pool-id validation, which the cancel eligibility check routes
|
|
161
|
+
* through to size the memo against its source chain. Left in the contract's
|
|
162
|
+
* native lower case, every ERC20-funded order would be reported as an
|
|
163
|
+
* unroutable source chain and become uncancellable. Upper-casing also makes this
|
|
164
|
+
* byte-identical to what the queue reports the order's assets as, which is what
|
|
165
|
+
* the two are cross-checked against.
|
|
166
|
+
*
|
|
167
|
+
* Both spellings share their notation source and their validation, so the two
|
|
168
|
+
* cannot drift apart in anything except the abbreviation and that case.
|
|
169
|
+
*/
|
|
170
|
+
export declare const getThorchainCancelMemoAsset: (input: ThorchainMemoAssetInput) => string;
|
|
76
171
|
//# sourceMappingURL=thorchainMemoAsset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thorchainMemoAsset.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/thorchainMemoAsset.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAgBtC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAMjF,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAKhF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,KAAK,KAAG,OAA6D,CAAA;AAEhH;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,GAAI,IAAI,MAAM,KAAG,OAAmD,CAAA;AAE1G,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"thorchainMemoAsset.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/thorchainMemoAsset.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAgBtC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAMjF,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAKhF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAAwC,CAAA;AAElG;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oCAAoC,GAAI,OAAO,MAAM,KAAG,MACM,CAAA;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,GAAI,OAAO,MAAM,KAAG,KAAK,GAAG,SAKlE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,gCAAgC,GAAI,OAAO,MAAM,KAAG,KAAK,GAAG,SAkBxE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,KAAK,KAAG,OAA6D,CAAA;AAEhH;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,GAAI,IAAI,MAAM,KAAG,OAAmD,CAAA;AAE1G,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAA;AA6C3E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,uBAAuB,KAAG,MAMtE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,2BAA2B,GAAI,OAAO,uBAAuB,KAAG,MACG,CAAA"}
|
|
@@ -51,6 +51,88 @@ export const thorchainAssetPrefixToChain = Object.freeze(toEntries(thorchainMemo
|
|
|
51
51
|
acc[value] = key;
|
|
52
52
|
return acc;
|
|
53
53
|
}, {}));
|
|
54
|
+
/**
|
|
55
|
+
* Every separator a THORChain memo asset can use: L1 (`.`), synth (`/`), trade
|
|
56
|
+
* (`~`) and secured (`-`). Shared so the modules that have to find where a
|
|
57
|
+
* chain prefix ends cannot disagree about which flavours exist.
|
|
58
|
+
*/
|
|
59
|
+
export const thorchainMemoAssetSeparators = Object.freeze(['.', '/', '~', '-']);
|
|
60
|
+
/**
|
|
61
|
+
* Index of the separator that ends a memo asset's CHAIN prefix, or `-1` when the
|
|
62
|
+
* asset carries none.
|
|
63
|
+
*
|
|
64
|
+
* Always the FIRST separator, never the last. A secured asset spells the whole
|
|
65
|
+
* denom with `-` (`eth-usdc-0x…`), so searching from the right would put the
|
|
66
|
+
* boundary inside the token identifier and make every secured asset read as a
|
|
67
|
+
* different chain, or as truncated. Shared with the traversal rather than only
|
|
68
|
+
* the character list, so the three modules that need this boundary cannot
|
|
69
|
+
* disagree about where it falls.
|
|
70
|
+
*/
|
|
71
|
+
export const findThorchainMemoAssetSeparatorIndex = (asset) => [...asset].findIndex(char => thorchainMemoAssetSeparators.includes(char));
|
|
72
|
+
/**
|
|
73
|
+
* The chain a memo asset ORIGINATES from — what `Asset.GetLayer1Asset().Chain`
|
|
74
|
+
* resolves to on THORNode's side.
|
|
75
|
+
*
|
|
76
|
+
* Reads the prefix up to the first separator, so it holds for every flavour:
|
|
77
|
+
* `ETH.USDC-0x…`, `BTC/BTC` and the secured `eth-usdc-0x…` all resolve to their
|
|
78
|
+
* L1 chain. Splitting on `.` alone would return the whole denom for a secured
|
|
79
|
+
* asset and resolve nothing.
|
|
80
|
+
*
|
|
81
|
+
* Note this is the asset's home chain, NOT necessarily the chain a transaction
|
|
82
|
+
* touching it is signed from — a secured asset lives on THORChain while still
|
|
83
|
+
* reporting Ethereum here.
|
|
84
|
+
*
|
|
85
|
+
* `undefined` for a prefix this SDK cannot route, which a caller should treat as
|
|
86
|
+
* "unknown chain" rather than an error: an asset THORChain understands and this
|
|
87
|
+
* SDK does not is still a real order.
|
|
88
|
+
*/
|
|
89
|
+
export const getThorchainMemoAssetChain = (asset) => {
|
|
90
|
+
const separatorIndex = findThorchainMemoAssetSeparatorIndex(asset);
|
|
91
|
+
const prefix = separatorIndex === -1 ? asset : asset.slice(0, separatorIndex);
|
|
92
|
+
return thorchainAssetPrefixToChain[prefix.toUpperCase()];
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* The chain a transaction referencing this asset must be SENT FROM — what
|
|
96
|
+
* `Asset.GetChain()` resolves to on THORNode's side, which is a different
|
|
97
|
+
* question from {@link getThorchainMemoAssetChain}.
|
|
98
|
+
*
|
|
99
|
+
* The two diverge for every THORChain-HELD flavour. A secured `eth-usdc-0x…`
|
|
100
|
+
* originates on Ethereum but is custodied on THORChain, so a message referencing
|
|
101
|
+
* it must come from a THOR address; the same holds for synths (`BTC/BTC`) and
|
|
102
|
+
* trade assets (`ETH~ETH`). Only dotted layer-1 notation names a chain that also
|
|
103
|
+
* has to send.
|
|
104
|
+
*
|
|
105
|
+
* The separator IS the discriminator: THORNode's own flavour detection works the
|
|
106
|
+
* same way, and the first separator is the one that decides — a dotted asset's
|
|
107
|
+
* later `-` introduces a contract id, not a flavour.
|
|
108
|
+
*
|
|
109
|
+
* This is what `MsgModifyLimitSwap.ValidateBasic`'s
|
|
110
|
+
* `From.IsChain(Source.Asset.GetChain())` compares against, so a caller that
|
|
111
|
+
* pairs a signing coin with a memo must agree with this or the transaction
|
|
112
|
+
* broadcasts successfully and is refunded without cancelling anything.
|
|
113
|
+
*
|
|
114
|
+
* `undefined` when the prefix is unroutable — treat as "unknown", and refuse.
|
|
115
|
+
* That holds for the THORChain-held flavours too: a recognisable SHAPE is not a
|
|
116
|
+
* recognisable asset, so `NOPE-NOPE` is unknown rather than THORChain-held.
|
|
117
|
+
* Answering THORChain on the strength of a separator alone would let a garbage
|
|
118
|
+
* source asset pair successfully with a RUNE coin and reach a signer.
|
|
119
|
+
*/
|
|
120
|
+
export const getThorchainMemoAssetSourceChain = (asset) => {
|
|
121
|
+
const separatorIndex = findThorchainMemoAssetSeparatorIndex(asset);
|
|
122
|
+
// A bare chain prefix carries no symbol, so it is not an asset — even though
|
|
123
|
+
// the prefix lookup would happily resolve `BTC` on its own.
|
|
124
|
+
if (separatorIndex === -1) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const homeChain = getThorchainMemoAssetChain(asset);
|
|
128
|
+
if (homeChain === undefined) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
// Prefix resolved, so the separator can be trusted to mean what it says: a
|
|
132
|
+
// non-dot one marks a THORChain-HELD flavour, which sends from THORChain
|
|
133
|
+
// whatever chain it originates on.
|
|
134
|
+
return asset[separatorIndex] === '.' ? homeChain : Chain.THORChain;
|
|
135
|
+
};
|
|
54
136
|
/**
|
|
55
137
|
* Whether a chain can be encoded as a THORChain memo asset — i.e. whether it is
|
|
56
138
|
* routable through THORChain at all.
|
|
@@ -83,6 +165,25 @@ const abbreviateContractSuffix = (asset) => {
|
|
|
83
165
|
}
|
|
84
166
|
return `${asset.slice(0, separatorIndex)}-${contract.slice(-contractSuffixLength).toUpperCase()}`;
|
|
85
167
|
};
|
|
168
|
+
/**
|
|
169
|
+
* Notation shared by both memo spellings: the routability and ticker checks a
|
|
170
|
+
* memo asset must pass, then the one converter that decides what a THORChain
|
|
171
|
+
* asset string looks like.
|
|
172
|
+
*
|
|
173
|
+
* Both callers reject the same inputs for the same reasons, so an asset that is
|
|
174
|
+
* unbuildable for a placement cannot become buildable for a cancel.
|
|
175
|
+
*/
|
|
176
|
+
const toValidatedNativeSwapAsset = ({ chain, id, ticker }, caller) => {
|
|
177
|
+
if (!isThorchainRoutable(chain)) {
|
|
178
|
+
throw new Error(`${caller}: ${chain} is not routable through THORChain`);
|
|
179
|
+
}
|
|
180
|
+
const normalizedTicker = ticker.trim();
|
|
181
|
+
if (!normalizedTicker) {
|
|
182
|
+
throw new Error(`${caller}: ticker must be a non-empty string for ${chain}`);
|
|
183
|
+
}
|
|
184
|
+
const normalizedId = id?.trim();
|
|
185
|
+
return toNativeSwapAsset({ chain, id: normalizedId || undefined, ticker: normalizedTicker });
|
|
186
|
+
};
|
|
86
187
|
/**
|
|
87
188
|
* Build the THORChain memo-asset string for a coin — the `source_asset` /
|
|
88
189
|
* `target_asset` a limit-swap memo is built from.
|
|
@@ -109,18 +210,42 @@ const abbreviateContractSuffix = (asset) => {
|
|
|
109
210
|
* too short to abbreviate — a malformed asset segment must fail here rather than
|
|
110
211
|
* at broadcast time, once funds are committed.
|
|
111
212
|
*/
|
|
112
|
-
export const getThorchainMemoAsset = (
|
|
113
|
-
|
|
114
|
-
throw new Error(`getThorchainMemoAsset: ${chain} is not routable through THORChain`);
|
|
115
|
-
}
|
|
116
|
-
const normalizedTicker = ticker.trim();
|
|
117
|
-
if (!normalizedTicker) {
|
|
118
|
-
throw new Error(`getThorchainMemoAsset: ticker must be a non-empty string for ${chain}`);
|
|
119
|
-
}
|
|
120
|
-
const normalizedId = id?.trim();
|
|
121
|
-
const asset = toNativeSwapAsset({ chain, id: normalizedId || undefined, ticker: normalizedTicker });
|
|
213
|
+
export const getThorchainMemoAsset = (input) => {
|
|
214
|
+
const asset = toValidatedNativeSwapAsset(input, 'getThorchainMemoAsset');
|
|
122
215
|
// THORChain-held assets (secured denoms, `THOR.TCY`) carry no L1 contract to
|
|
123
216
|
// shorten -- the trailing address of a secured denom identifies the asset.
|
|
124
|
-
return chain === Chain.THORChain ? asset : abbreviateContractSuffix(asset);
|
|
217
|
+
return input.chain === Chain.THORChain ? asset : abbreviateContractSuffix(asset);
|
|
125
218
|
};
|
|
219
|
+
/**
|
|
220
|
+
* Build the THORChain memo-asset string a **cancel** memo must use — the same
|
|
221
|
+
* notation {@link getThorchainMemoAsset} emits, minus the abbreviation.
|
|
222
|
+
*
|
|
223
|
+
* - native → `CHAIN.TICKER` (`BTC.BTC`, `THOR.RUNE`)
|
|
224
|
+
* - THORChain tokens → `THOR.TICKER` (`THOR.TCY`)
|
|
225
|
+
* - THORChain secured assets → `CHAIN-ASSET` (`XRP-XRP`, `ETH-USDC-0X…`)
|
|
226
|
+
* - any other token → `CHAIN.TICKER-<full contract>` (`ETH.USDC-0XA0B8…`)
|
|
227
|
+
*
|
|
228
|
+
* The difference from the placement spelling is the entire point. A placement
|
|
229
|
+
* memo abbreviates an L1 contract to its last six characters because memo bytes
|
|
230
|
+
* are scarce and `fuzzyAssetMatch` expands it again on arrival. A cancel gets no
|
|
231
|
+
* such treatment: `ModifyLimitSwapMemo` is the one inbound memo type
|
|
232
|
+
* `processOneTxIn` does NOT route through `fuzzyAssetMatch`, so its asset string
|
|
233
|
+
* builds the order-index key verbatim. An abbreviation there addresses a bucket
|
|
234
|
+
* that by construction holds no order — the cancel is accepted, costs a fee, and
|
|
235
|
+
* cancels nothing.
|
|
236
|
+
*
|
|
237
|
+
* UPPER-CASED, unlike the coin's own contract id. Case is not semantic to
|
|
238
|
+
* THORNode — `common.ParseAsset` upper-cases whatever it is given, and the queue
|
|
239
|
+
* index key is built from an upper-cased asset — but it IS semantic to this
|
|
240
|
+
* package's own pool-id validation, which the cancel eligibility check routes
|
|
241
|
+
* through to size the memo against its source chain. Left in the contract's
|
|
242
|
+
* native lower case, every ERC20-funded order would be reported as an
|
|
243
|
+
* unroutable source chain and become uncancellable. Upper-casing also makes this
|
|
244
|
+
* byte-identical to what the queue reports the order's assets as, which is what
|
|
245
|
+
* the two are cross-checked against.
|
|
246
|
+
*
|
|
247
|
+
* Both spellings share their notation source and their validation, so the two
|
|
248
|
+
* cannot drift apart in anything except the abbreviation and that case.
|
|
249
|
+
*/
|
|
250
|
+
export const getThorchainCancelMemoAsset = (input) => toValidatedNativeSwapAsset(input, 'getThorchainCancelMemoAsset').toUpperCase();
|
|
126
251
|
//# sourceMappingURL=thorchainMemoAsset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thorchainMemoAsset.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/thorchainMemoAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAElF;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA6C,MAAM,CAAC,MAAM,CAAC;IACnG,GAAG,oBAAoB;IACvB,GAAG,0BAA0B,CAAC,MAAM,CAAiC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClF,GAAG,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC;CACP,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAA6C,MAAM,CAAC,MAAM,CAChG,SAAS,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAiC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;IACtG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;IAChB,OAAO,GAAG,CAAA;AACZ,CAAC,EAAE,EAAE,CAAC,CACP,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,6BAA6B,CAAC,KAAK,CAAC,KAAK,SAAS,CAAA;AAEhH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAI1G;;;GAGG;AACH,MAAM,wBAAwB,GAAG,CAAC,KAAa,EAAU,EAAE;IACzD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACzC,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;IAChD,IAAI,QAAQ,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,oBAAoB,aAAa,CACzH,CAAA;IACH,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAA;AACnG,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"thorchainMemoAsset.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/thorchainMemoAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAElF;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA6C,MAAM,CAAC,MAAM,CAAC;IACnG,GAAG,oBAAoB;IACvB,GAAG,0BAA0B,CAAC,MAAM,CAAiC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClF,GAAG,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC;CACP,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAA6C,MAAM,CAAC,MAAM,CAChG,SAAS,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAiC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;IACtG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;IAChB,OAAO,GAAG,CAAA;AACZ,CAAC,EAAE,EAAE,CAAC,CACP,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAElG;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,KAAa,EAAU,EAAE,CAC5E,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAa,EAAqB,EAAE;IAC7E,MAAM,cAAc,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAA;IAClE,MAAM,MAAM,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAE7E,OAAO,2BAA2B,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,KAAa,EAAqB,EAAE;IACnF,MAAM,cAAc,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAA;IAElE,6EAA6E;IAC7E,4DAA4D;IAC5D,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAA;IACnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,mCAAmC;IACnC,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAA;AACpE,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,6BAA6B,CAAC,KAAK,CAAC,KAAK,SAAS,CAAA;AAEhH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAI1G;;;GAGG;AACH,MAAM,wBAAwB,GAAG,CAAC,KAAa,EAAU,EAAE;IACzD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACzC,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;IAChD,IAAI,QAAQ,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,oBAAoB,aAAa,CACzH,CAAA;IACH,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAA;AACnG,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,0BAA0B,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAA2B,EAAE,MAAc,EAAU,EAAE;IAC5G,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,KAAK,KAAK,oCAAoC,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,2CAA2C,KAAK,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED,MAAM,YAAY,GAAG,EAAE,EAAE,IAAI,EAAE,CAAA;IAE/B,OAAO,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;AAC9F,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAA8B,EAAU,EAAE;IAC9E,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAA;IAExE,6EAA6E;IAC7E,2EAA2E;IAC3E,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;AAClF,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,KAA8B,EAAU,EAAE,CACpF,0BAA0B,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC,WAAW,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.33.0",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -830,6 +830,11 @@
|
|
|
830
830
|
"import": "./dist/chains/sui/listAllCoins.js",
|
|
831
831
|
"default": "./dist/chains/sui/listAllCoins.js"
|
|
832
832
|
},
|
|
833
|
+
"./chains/sui/prebuiltGasData": {
|
|
834
|
+
"types": "./dist/chains/sui/prebuiltGasData.d.ts",
|
|
835
|
+
"import": "./dist/chains/sui/prebuiltGasData.js",
|
|
836
|
+
"default": "./dist/chains/sui/prebuiltGasData.js"
|
|
837
|
+
},
|
|
833
838
|
"./chains/sui/sign": {
|
|
834
839
|
"types": "./dist/chains/sui/sign.d.ts",
|
|
835
840
|
"import": "./dist/chains/sui/sign.js",
|