stable-layer-sdk 3.0.0 → 3.1.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/README.md +27 -13
- package/dist/cjs/index.cjs +404 -99
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/esm/index.mjs +389 -99
- package/dist/esm/index.mjs.map +4 -4
- package/dist/types/index.d.ts +16 -2
- package/dist/types/interface.d.ts +29 -1
- package/dist/types/libs/constants.d.ts +31 -12
- package/dist/types/libs/constants.mainnet.d.ts +20 -0
- package/dist/types/libs/constants.testnet.d.ts +22 -0
- package/package.json +5 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -20,13 +20,29 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
-
|
|
23
|
+
SAVING_TYPE: () => SAVING_TYPE,
|
|
24
|
+
STABLE_LAYER_PACKAGE_ID: () => STABLE_LAYER_PACKAGE_ID,
|
|
25
|
+
STABLE_LAYER_PACKAGE_MAINNET_ALT: () => STABLE_LAYER_PACKAGE_MAINNET_ALT,
|
|
26
|
+
STABLE_LP_TYPE: () => STABLE_LP_TYPE,
|
|
27
|
+
STABLE_REGISTRY: () => STABLE_REGISTRY,
|
|
28
|
+
STABLE_REGISTRY_MAINNET_ALT: () => STABLE_REGISTRY_MAINNET_ALT,
|
|
29
|
+
STABLE_VAULT: () => STABLE_VAULT,
|
|
30
|
+
STABLE_VAULT_FARM: () => STABLE_VAULT_FARM,
|
|
31
|
+
STABLE_VAULT_FARM_ENTITY_TYPE: () => STABLE_VAULT_FARM_ENTITY_TYPE,
|
|
32
|
+
STABLE_VAULT_FARM_PACKAGE_ID: () => STABLE_VAULT_FARM_PACKAGE_ID,
|
|
33
|
+
StableLayerClient: () => StableLayerClient,
|
|
34
|
+
USDC_TYPE: () => USDC_TYPE,
|
|
35
|
+
YIELD_USDB_PACKAGE_ID: () => YIELD_USDB_PACKAGE_ID,
|
|
36
|
+
YIELD_VAULT: () => YIELD_VAULT,
|
|
37
|
+
YUSDB_TYPE: () => YUSDB_TYPE,
|
|
38
|
+
getConstants: () => getConstants
|
|
24
39
|
});
|
|
25
40
|
module.exports = __toCommonJS(index_exports);
|
|
26
41
|
var import_sdk = require("@bucket-protocol/sdk");
|
|
27
42
|
var import_bcs24 = require("@mysten/sui/bcs");
|
|
28
43
|
var import_grpc = require("@mysten/sui/grpc");
|
|
29
44
|
var import_transactions2 = require("@mysten/sui/transactions");
|
|
45
|
+
var import_utils28 = require("@mysten/sui/utils");
|
|
30
46
|
|
|
31
47
|
// src/generated/utils/index.ts
|
|
32
48
|
var import_bcs = require("@mysten/sui/bcs");
|
|
@@ -275,6 +291,22 @@ var FactoryCap = new MoveStruct({ name: `${$moduleName9}::FactoryCap`, fields: {
|
|
|
275
291
|
id: UID,
|
|
276
292
|
factory_id: import_bcs8.bcs.Address
|
|
277
293
|
} });
|
|
294
|
+
function setMaxSupply(options) {
|
|
295
|
+
const packageAddress = options.package ?? "@local-pkg/stable_factory.move";
|
|
296
|
+
const argumentsTypes = [
|
|
297
|
+
`${packageAddress}::stable_layer::StableRegistry`,
|
|
298
|
+
`${packageAddress}::stable_layer::FactoryCap<${options.typeArguments[0]}, ${options.typeArguments[1]}>`,
|
|
299
|
+
"u64"
|
|
300
|
+
];
|
|
301
|
+
const parameterNames = ["registry", "FactoryCap", "maxSupply"];
|
|
302
|
+
return (tx) => tx.moveCall({
|
|
303
|
+
package: packageAddress,
|
|
304
|
+
module: "stable_layer",
|
|
305
|
+
function: "set_max_supply",
|
|
306
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
307
|
+
typeArguments: options.typeArguments
|
|
308
|
+
});
|
|
309
|
+
}
|
|
278
310
|
function mint(options) {
|
|
279
311
|
const packageAddress = options.package ?? "@local-pkg/stable_factory.move";
|
|
280
312
|
const argumentsTypes = [
|
|
@@ -614,29 +646,128 @@ function release(options) {
|
|
|
614
646
|
});
|
|
615
647
|
}
|
|
616
648
|
|
|
649
|
+
// src/libs/constants.mainnet.ts
|
|
650
|
+
var STABLE_REGISTRY_MAINNET_ALT = "0x213f4d584c0770f455bb98c94a4ee5ea9ddbc3d4ebb98a0ad6d093eb6da41642";
|
|
651
|
+
var STABLE_LAYER_PACKAGE_MAINNET_ALT = "0x41e25d09e20cf3bc43fe321e51ef178fac419ae47b783a7161982158fc9f17d6";
|
|
652
|
+
var MAINNET = {
|
|
653
|
+
STABLE_VAULT: "0x65f38160110cd6859d05f338ff54b4f462883bb6f87c667a65c0fb0e537410a7",
|
|
654
|
+
USDC_TYPE: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
|
|
655
|
+
STABLE_LP_TYPE: "0xb75744fadcbfc174627567ca29645d0af8f6e6fd01b6f57c75a08cd3fb97c567::lake_usdc::LakeUSDC",
|
|
656
|
+
YUSDB_TYPE: "0xac718b4b672d7f461fe7e86847166ff9c23cadba217397f0848a95bdea1f1051::yesusdb::YesUSDB",
|
|
657
|
+
STABLE_LAYER_PACKAGE_ID: "0xa4a78d8d3d1df62fb81d10068142e79b0d30ad4e3f578060487e36ed9ea764da",
|
|
658
|
+
STABLE_REGISTRY_MAINNET_ALT,
|
|
659
|
+
STABLE_LAYER_PACKAGE_MAINNET_ALT,
|
|
660
|
+
STABLE_VAULT_FARM_PACKAGE_ID: "0x00d31ddaa73a56abcc3e2d885ac1e1d90f9ae0e38bbef2ba2923550c8250de4d",
|
|
661
|
+
SAVING_TYPE: "0x38f61c75fa8407140294c84167dd57684580b55c3066883b48dedc344b1cde1e::susdb::SUSDB",
|
|
662
|
+
YIELD_VAULT: "0x0a7f6325253157cd437812fea0ceee9a6b96f2ec5eac410da6df39558ff3a4d1",
|
|
663
|
+
STABLE_REGISTRY: "0x213f4d584c0770f455bb98c94a4ee5ea9ddbc3d4ebb98a0ad6d093eb6da41642",
|
|
664
|
+
STABLE_VAULT_FARM: "0xe958b7d102b33bf3c09addb0e2cdff102ff2c93afe407ec5c2a541e8959a650c",
|
|
665
|
+
YIELD_USDB_PACKAGE_ID: "0x3dcbf82f7e3b80ed65cee596612602a6c7e78c71fd40f6455b40ad033ed04786"
|
|
666
|
+
};
|
|
667
|
+
var STABLE_VAULT_FARM_ENTITY_TYPE_MAINNET = `0xc1025fe014b03d33b207b5afb0ba04293be87fab438c1418a26a75c2fe05c223::stable_vault_farm::StableVaultFarmEntity<${MAINNET.STABLE_LP_TYPE}, ${MAINNET.USDC_TYPE}>`;
|
|
668
|
+
|
|
669
|
+
// src/libs/constants.testnet.ts
|
|
670
|
+
var TESTNET_USDC = "0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC";
|
|
671
|
+
var MOCK_FARM_PACKAGE_ID_TESTNET = "0x3a55ec8fabe5f3e982908ed3a7c3065f26e83ab226eb8d3450177dbaac25878b";
|
|
672
|
+
var MOCK_FARM_ORIGINAL_PACKAGE_ID_TESTNET = "0x673d4118c17de717b0b90c326f8f52f87b5fff8678f513edd2ae575a55175954";
|
|
673
|
+
var MOCK_FARM_REGISTRY_TESTNET = "0xc3e8d2e33e36f6a4b5c199fe2dde3ba6dc29e7af8dd045c86e62d7c21f374d02";
|
|
674
|
+
var MOCK_USDB_TYPE_TESTNET = `${MOCK_FARM_ORIGINAL_PACKAGE_ID_TESTNET}::usdb::USDB`;
|
|
675
|
+
var TESTNET = {
|
|
676
|
+
STABLE_LAYER_PACKAGE_ID: "0x9c248c80c3a757167780f17e0c00a4d293280be7276f1b81a153f6e47d2567c9",
|
|
677
|
+
STABLE_REGISTRY: "0xfa0fd96e0fbc07dc6bdc23cc1ac5b4c0056f4b469b9db0a70b6ea01c14a4c7b5",
|
|
678
|
+
USDC_TYPE: TESTNET_USDC,
|
|
679
|
+
STABLE_VAULT_FARM_ENTITY_TYPE: `${MOCK_FARM_ORIGINAL_PACKAGE_ID_TESTNET}::farm::MockFarmEntity`,
|
|
680
|
+
MOCK_FARM_PACKAGE_ID: MOCK_FARM_PACKAGE_ID_TESTNET,
|
|
681
|
+
MOCK_FARM_REGISTRY: MOCK_FARM_REGISTRY_TESTNET,
|
|
682
|
+
MOCK_USDB_TYPE: MOCK_USDB_TYPE_TESTNET,
|
|
683
|
+
STABLE_VAULT: "",
|
|
684
|
+
STABLE_LP_TYPE: "",
|
|
685
|
+
YUSDB_TYPE: "",
|
|
686
|
+
STABLE_VAULT_FARM_PACKAGE_ID: "",
|
|
687
|
+
SAVING_TYPE: "",
|
|
688
|
+
YIELD_VAULT: "",
|
|
689
|
+
STABLE_VAULT_FARM: "",
|
|
690
|
+
YIELD_USDB_PACKAGE_ID: ""
|
|
691
|
+
};
|
|
692
|
+
var STABLE_VAULT_FARM_ENTITY_TYPE_TESTNET = TESTNET.STABLE_VAULT_FARM_ENTITY_TYPE;
|
|
693
|
+
|
|
617
694
|
// src/libs/constants.ts
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
695
|
+
function getMainnetConstants() {
|
|
696
|
+
return {
|
|
697
|
+
...MAINNET,
|
|
698
|
+
STABLE_VAULT_FARM_ENTITY_TYPE: STABLE_VAULT_FARM_ENTITY_TYPE_MAINNET,
|
|
699
|
+
MOCK_FARM_PACKAGE_ID: "",
|
|
700
|
+
MOCK_FARM_REGISTRY: "",
|
|
701
|
+
MOCK_USDB_TYPE: ""
|
|
702
|
+
};
|
|
703
|
+
}
|
|
704
|
+
function getTestnetConstants() {
|
|
705
|
+
return {
|
|
706
|
+
...TESTNET,
|
|
707
|
+
STABLE_VAULT_FARM_ENTITY_TYPE: STABLE_VAULT_FARM_ENTITY_TYPE_TESTNET
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
function getConstants(network) {
|
|
711
|
+
return network === "testnet" ? getTestnetConstants() : getMainnetConstants();
|
|
712
|
+
}
|
|
713
|
+
var STABLE_VAULT = MAINNET.STABLE_VAULT;
|
|
714
|
+
var USDC_TYPE = MAINNET.USDC_TYPE;
|
|
715
|
+
var STABLE_LP_TYPE = MAINNET.STABLE_LP_TYPE;
|
|
716
|
+
var YUSDB_TYPE = MAINNET.YUSDB_TYPE;
|
|
717
|
+
var STABLE_LAYER_PACKAGE_ID = MAINNET.STABLE_LAYER_PACKAGE_ID;
|
|
718
|
+
var STABLE_VAULT_FARM_PACKAGE_ID = MAINNET.STABLE_VAULT_FARM_PACKAGE_ID;
|
|
719
|
+
var SAVING_TYPE = MAINNET.SAVING_TYPE;
|
|
720
|
+
var YIELD_VAULT = MAINNET.YIELD_VAULT;
|
|
721
|
+
var STABLE_REGISTRY = MAINNET.STABLE_REGISTRY;
|
|
722
|
+
var STABLE_VAULT_FARM = MAINNET.STABLE_VAULT_FARM;
|
|
723
|
+
var YIELD_USDB_PACKAGE_ID = MAINNET.YIELD_USDB_PACKAGE_ID;
|
|
724
|
+
var STABLE_VAULT_FARM_ENTITY_TYPE = STABLE_VAULT_FARM_ENTITY_TYPE_MAINNET;
|
|
630
725
|
|
|
631
726
|
// src/index.ts
|
|
632
|
-
var StableLayerClient = class {
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
727
|
+
var StableLayerClient = class _StableLayerClient {
|
|
728
|
+
static getConstants(network) {
|
|
729
|
+
return getConstants(network);
|
|
730
|
+
}
|
|
731
|
+
getConstants() {
|
|
732
|
+
return getConstants(this.network);
|
|
733
|
+
}
|
|
734
|
+
static async initialize(config) {
|
|
735
|
+
const defaultBaseUrl = `https://fullnode.${config.network}.sui.io:443`;
|
|
736
|
+
const baseUrl = config.baseUrl ?? process.env.SUI_GRPC_URL ?? defaultBaseUrl;
|
|
737
|
+
const suiClient = config.suiClient ?? new import_grpc.SuiGrpcClient({
|
|
636
738
|
network: config.network,
|
|
637
|
-
baseUrl
|
|
739
|
+
baseUrl
|
|
638
740
|
});
|
|
741
|
+
const bucketClient = await import_sdk.BucketClient.initialize({
|
|
742
|
+
network: config.network,
|
|
743
|
+
suiClient,
|
|
744
|
+
configObjectId: config.configObjectId,
|
|
745
|
+
configOverrides: config.configOverrides
|
|
746
|
+
});
|
|
747
|
+
return new _StableLayerClient(config, bucketClient, suiClient);
|
|
748
|
+
}
|
|
749
|
+
constructor(config, bucketClient, suiClient) {
|
|
750
|
+
this.bucketClient = bucketClient;
|
|
751
|
+
this.suiClient = suiClient;
|
|
639
752
|
this.sender = config.sender;
|
|
753
|
+
this.network = config.network;
|
|
754
|
+
this.mockFarmRegistryId = config.mockFarmRegistryId;
|
|
755
|
+
this.mockFarmPackageId = config.mockFarmPackageId;
|
|
756
|
+
this.mockUsdbCoinType = config.mockUsdbCoinType;
|
|
757
|
+
}
|
|
758
|
+
getMockFarmPackageId() {
|
|
759
|
+
const c = this.getConstants();
|
|
760
|
+
const id = (this.mockFarmPackageId ?? c.MOCK_FARM_PACKAGE_ID)?.trim();
|
|
761
|
+
if (!id) {
|
|
762
|
+
throw new Error(
|
|
763
|
+
"StableLayerClient: missing mock farm package (set mockFarmPackageId or MOCK_FARM_PACKAGE_ID in testnet constants)."
|
|
764
|
+
);
|
|
765
|
+
}
|
|
766
|
+
return id;
|
|
767
|
+
}
|
|
768
|
+
getMockFarmEntityType() {
|
|
769
|
+
const c = this.getConstants();
|
|
770
|
+
return c.STABLE_VAULT_FARM_ENTITY_TYPE || `${this.getMockFarmPackageId()}::farm::MockFarmEntity`;
|
|
640
771
|
}
|
|
641
772
|
async buildMintTx({
|
|
642
773
|
tx,
|
|
@@ -646,38 +777,69 @@ var StableLayerClient = class {
|
|
|
646
777
|
autoTransfer = true
|
|
647
778
|
}) {
|
|
648
779
|
tx.setSender(sender ?? this.sender);
|
|
780
|
+
const constants = this.getConstants();
|
|
781
|
+
if (this.network === "testnet") {
|
|
782
|
+
const farmRegistry = this.mockFarmRegistryId ?? constants.MOCK_FARM_REGISTRY;
|
|
783
|
+
const pkg = this.getMockFarmPackageId();
|
|
784
|
+
if (!farmRegistry) {
|
|
785
|
+
throw new Error(
|
|
786
|
+
"buildMintTx (testnet): missing mock farm registry (mockFarmRegistryId or MOCK_FARM_REGISTRY)."
|
|
787
|
+
);
|
|
788
|
+
}
|
|
789
|
+
const stableTag = (0, import_utils28.normalizeStructTag)(stableCoinType);
|
|
790
|
+
const usdTag = (0, import_utils28.normalizeStructTag)(constants.USDC_TYPE);
|
|
791
|
+
const farmEntityTag = (0, import_utils28.normalizeStructTag)(this.getMockFarmEntityType());
|
|
792
|
+
const [stableCoin2, loan2] = mint({
|
|
793
|
+
package: constants.STABLE_LAYER_PACKAGE_ID,
|
|
794
|
+
arguments: {
|
|
795
|
+
registry: constants.STABLE_REGISTRY,
|
|
796
|
+
uCoin: usdcCoin
|
|
797
|
+
},
|
|
798
|
+
typeArguments: [stableTag, usdTag, farmEntityTag]
|
|
799
|
+
})(tx);
|
|
800
|
+
tx.moveCall({
|
|
801
|
+
target: `${pkg}::farm::receive`,
|
|
802
|
+
typeArguments: [stableTag, usdTag],
|
|
803
|
+
arguments: [tx.object(farmRegistry), loan2, tx.object(import_utils28.SUI_CLOCK_OBJECT_ID)]
|
|
804
|
+
});
|
|
805
|
+
if (autoTransfer) {
|
|
806
|
+
tx.transferObjects([stableCoin2], sender ?? this.sender);
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
809
|
+
return stableCoin2;
|
|
810
|
+
}
|
|
649
811
|
const [stableCoin, loan] = mint({
|
|
650
|
-
package: STABLE_LAYER_PACKAGE_ID,
|
|
812
|
+
package: constants.STABLE_LAYER_PACKAGE_ID,
|
|
651
813
|
arguments: {
|
|
652
|
-
registry: STABLE_REGISTRY,
|
|
814
|
+
registry: constants.STABLE_REGISTRY,
|
|
653
815
|
uCoin: usdcCoin
|
|
654
816
|
},
|
|
655
|
-
typeArguments: [stableCoinType, USDC_TYPE, STABLE_VAULT_FARM_ENTITY_TYPE]
|
|
817
|
+
typeArguments: [stableCoinType, constants.USDC_TYPE, constants.STABLE_VAULT_FARM_ENTITY_TYPE]
|
|
656
818
|
})(tx);
|
|
657
819
|
const [uPrice] = await this.bucketClient.aggregatePrices(tx, {
|
|
658
|
-
coinTypes: [USDC_TYPE]
|
|
820
|
+
coinTypes: [constants.USDC_TYPE]
|
|
659
821
|
});
|
|
660
822
|
const depositResponse = receive({
|
|
661
|
-
package: STABLE_VAULT_FARM_PACKAGE_ID,
|
|
823
|
+
package: constants.STABLE_VAULT_FARM_PACKAGE_ID,
|
|
662
824
|
typeArguments: [
|
|
663
|
-
STABLE_LP_TYPE,
|
|
664
|
-
USDC_TYPE,
|
|
825
|
+
constants.STABLE_LP_TYPE,
|
|
826
|
+
constants.USDC_TYPE,
|
|
665
827
|
stableCoinType,
|
|
666
|
-
YUSDB_TYPE,
|
|
667
|
-
SAVING_TYPE
|
|
828
|
+
constants.YUSDB_TYPE,
|
|
829
|
+
constants.SAVING_TYPE
|
|
668
830
|
],
|
|
669
831
|
arguments: {
|
|
670
|
-
farm: STABLE_VAULT_FARM,
|
|
832
|
+
farm: constants.STABLE_VAULT_FARM,
|
|
671
833
|
loan,
|
|
672
|
-
stableVault: STABLE_VAULT,
|
|
673
|
-
usdbTreasury: this.bucketClient.treasury(tx),
|
|
674
|
-
psmPool: this.getBucketPSMPool(tx),
|
|
675
|
-
savingPool: this.getBucketSavingPool(tx),
|
|
676
|
-
yieldVault: YIELD_VAULT,
|
|
834
|
+
stableVault: constants.STABLE_VAULT,
|
|
835
|
+
usdbTreasury: await Promise.resolve(this.bucketClient.treasury(tx)),
|
|
836
|
+
psmPool: await this.getBucketPSMPool(tx),
|
|
837
|
+
savingPool: await this.getBucketSavingPool(tx),
|
|
838
|
+
yieldVault: constants.YIELD_VAULT,
|
|
677
839
|
uPrice
|
|
678
840
|
}
|
|
679
841
|
})(tx);
|
|
680
|
-
this.checkResponse({ tx, response: depositResponse, type: "deposit" });
|
|
842
|
+
await this.checkResponse({ tx, response: depositResponse, type: "deposit" });
|
|
681
843
|
if (autoTransfer) {
|
|
682
844
|
tx.transferObjects([stableCoin], sender ?? this.sender);
|
|
683
845
|
return;
|
|
@@ -706,46 +868,84 @@ var StableLayerClient = class {
|
|
|
706
868
|
) : amount,
|
|
707
869
|
type: stableCoinType
|
|
708
870
|
});
|
|
709
|
-
this.
|
|
871
|
+
const constants = this.getConstants();
|
|
872
|
+
if (this.network === "testnet") {
|
|
873
|
+
const farmRegistry = this.mockFarmRegistryId ?? constants.MOCK_FARM_REGISTRY;
|
|
874
|
+
const pkg = this.getMockFarmPackageId();
|
|
875
|
+
if (!farmRegistry) {
|
|
876
|
+
throw new Error(
|
|
877
|
+
"buildBurnTx (testnet): missing mock farm registry (mockFarmRegistryId or MOCK_FARM_REGISTRY)."
|
|
878
|
+
);
|
|
879
|
+
}
|
|
880
|
+
const stableTag = (0, import_utils28.normalizeStructTag)(stableCoinType);
|
|
881
|
+
const usdTag = (0, import_utils28.normalizeStructTag)(constants.USDC_TYPE);
|
|
882
|
+
const burnRequest2 = requestBurn({
|
|
883
|
+
package: constants.STABLE_LAYER_PACKAGE_ID,
|
|
884
|
+
arguments: {
|
|
885
|
+
registry: constants.STABLE_REGISTRY,
|
|
886
|
+
stableCoin: btcUsdCoin
|
|
887
|
+
},
|
|
888
|
+
typeArguments: [stableTag, usdTag]
|
|
889
|
+
})(tx);
|
|
890
|
+
tx.moveCall({
|
|
891
|
+
target: `${pkg}::farm::pay`,
|
|
892
|
+
typeArguments: [stableTag, usdTag],
|
|
893
|
+
arguments: [tx.object(farmRegistry), tx.object(import_utils28.SUI_CLOCK_OBJECT_ID), burnRequest2]
|
|
894
|
+
});
|
|
895
|
+
const usdcCoin2 = fulfillBurn({
|
|
896
|
+
package: constants.STABLE_LAYER_PACKAGE_ID,
|
|
897
|
+
arguments: {
|
|
898
|
+
registry: constants.STABLE_REGISTRY,
|
|
899
|
+
burnRequest: burnRequest2
|
|
900
|
+
},
|
|
901
|
+
typeArguments: [stableTag, usdTag]
|
|
902
|
+
})(tx);
|
|
903
|
+
if (autoTransfer) {
|
|
904
|
+
tx.transferObjects([usdcCoin2], sender ?? this.sender);
|
|
905
|
+
return;
|
|
906
|
+
}
|
|
907
|
+
return usdcCoin2;
|
|
908
|
+
}
|
|
909
|
+
await this.releaseRewards(tx);
|
|
710
910
|
const burnRequest = requestBurn({
|
|
711
|
-
package: STABLE_LAYER_PACKAGE_ID,
|
|
911
|
+
package: constants.STABLE_LAYER_PACKAGE_ID,
|
|
712
912
|
arguments: {
|
|
713
|
-
registry: STABLE_REGISTRY,
|
|
913
|
+
registry: constants.STABLE_REGISTRY,
|
|
714
914
|
stableCoin: btcUsdCoin
|
|
715
915
|
},
|
|
716
|
-
typeArguments: [stableCoinType, USDC_TYPE]
|
|
916
|
+
typeArguments: [stableCoinType, constants.USDC_TYPE]
|
|
717
917
|
})(tx);
|
|
718
918
|
const [uPrice] = await this.bucketClient.aggregatePrices(tx, {
|
|
719
|
-
coinTypes: [USDC_TYPE]
|
|
919
|
+
coinTypes: [constants.USDC_TYPE]
|
|
720
920
|
});
|
|
721
921
|
const withdrawResponse = pay({
|
|
722
|
-
package: STABLE_VAULT_FARM_PACKAGE_ID,
|
|
922
|
+
package: constants.STABLE_VAULT_FARM_PACKAGE_ID,
|
|
723
923
|
arguments: {
|
|
724
|
-
farm: STABLE_VAULT_FARM,
|
|
924
|
+
farm: constants.STABLE_VAULT_FARM,
|
|
725
925
|
request: burnRequest,
|
|
726
|
-
stableVault: STABLE_VAULT,
|
|
727
|
-
usdbTreasury: this.bucketClient.treasury(tx),
|
|
728
|
-
psmPool: this.getBucketPSMPool(tx),
|
|
729
|
-
savingPool: this.getBucketSavingPool(tx),
|
|
730
|
-
yieldVault: YIELD_VAULT,
|
|
926
|
+
stableVault: constants.STABLE_VAULT,
|
|
927
|
+
usdbTreasury: await Promise.resolve(this.bucketClient.treasury(tx)),
|
|
928
|
+
psmPool: await this.getBucketPSMPool(tx),
|
|
929
|
+
savingPool: await this.getBucketSavingPool(tx),
|
|
930
|
+
yieldVault: constants.YIELD_VAULT,
|
|
731
931
|
uPrice
|
|
732
932
|
},
|
|
733
933
|
typeArguments: [
|
|
734
|
-
STABLE_LP_TYPE,
|
|
735
|
-
USDC_TYPE,
|
|
934
|
+
constants.STABLE_LP_TYPE,
|
|
935
|
+
constants.USDC_TYPE,
|
|
736
936
|
stableCoinType,
|
|
737
|
-
YUSDB_TYPE,
|
|
738
|
-
SAVING_TYPE
|
|
937
|
+
constants.YUSDB_TYPE,
|
|
938
|
+
constants.SAVING_TYPE
|
|
739
939
|
]
|
|
740
940
|
})(tx);
|
|
741
|
-
this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
|
|
941
|
+
await this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
|
|
742
942
|
const usdcCoin = fulfillBurn({
|
|
743
|
-
package: STABLE_LAYER_PACKAGE_ID,
|
|
943
|
+
package: constants.STABLE_LAYER_PACKAGE_ID,
|
|
744
944
|
arguments: {
|
|
745
|
-
registry: STABLE_REGISTRY,
|
|
945
|
+
registry: constants.STABLE_REGISTRY,
|
|
746
946
|
burnRequest
|
|
747
947
|
},
|
|
748
|
-
typeArguments: [stableCoinType, USDC_TYPE]
|
|
948
|
+
typeArguments: [stableCoinType, constants.USDC_TYPE]
|
|
749
949
|
})(tx);
|
|
750
950
|
if (autoTransfer) {
|
|
751
951
|
tx.transferObjects([usdcCoin], sender ?? this.sender);
|
|
@@ -761,26 +961,53 @@ var StableLayerClient = class {
|
|
|
761
961
|
autoTransfer = true
|
|
762
962
|
}) {
|
|
763
963
|
tx.setSender(sender ?? this.sender);
|
|
764
|
-
this.
|
|
964
|
+
if (this.network === "testnet") {
|
|
965
|
+
const constants2 = this.getConstants();
|
|
966
|
+
const farmRegistry = this.mockFarmRegistryId ?? constants2.MOCK_FARM_REGISTRY;
|
|
967
|
+
const pkg = this.getMockFarmPackageId();
|
|
968
|
+
if (!farmRegistry) {
|
|
969
|
+
throw new Error(
|
|
970
|
+
"buildClaimTx (testnet): missing mock farm registry (mockFarmRegistryId or MOCK_FARM_REGISTRY)."
|
|
971
|
+
);
|
|
972
|
+
}
|
|
973
|
+
const stableTag = (0, import_utils28.normalizeStructTag)(stableCoinType);
|
|
974
|
+
const usdTag = (0, import_utils28.normalizeStructTag)(constants2.USDC_TYPE);
|
|
975
|
+
const rewardCoin2 = tx.moveCall({
|
|
976
|
+
target: `${pkg}::farm::claim`,
|
|
977
|
+
typeArguments: [stableTag, usdTag],
|
|
978
|
+
arguments: [
|
|
979
|
+
tx.object(farmRegistry),
|
|
980
|
+
tx.object(constants2.STABLE_REGISTRY),
|
|
981
|
+
tx.object(import_utils28.SUI_CLOCK_OBJECT_ID)
|
|
982
|
+
]
|
|
983
|
+
});
|
|
984
|
+
if (autoTransfer) {
|
|
985
|
+
tx.transferObjects([rewardCoin2], sender ?? this.sender);
|
|
986
|
+
return;
|
|
987
|
+
}
|
|
988
|
+
return rewardCoin2;
|
|
989
|
+
}
|
|
990
|
+
await this.releaseRewards(tx);
|
|
991
|
+
const constants = this.getConstants();
|
|
765
992
|
const [rewardCoin, withdrawResponse] = claim({
|
|
766
|
-
package: STABLE_VAULT_FARM_PACKAGE_ID,
|
|
993
|
+
package: constants.STABLE_VAULT_FARM_PACKAGE_ID,
|
|
767
994
|
arguments: {
|
|
768
|
-
stableRegistry: STABLE_REGISTRY,
|
|
769
|
-
farm: STABLE_VAULT_FARM,
|
|
770
|
-
stableVault: STABLE_VAULT,
|
|
771
|
-
usdbTreasury: this.bucketClient.treasury(tx),
|
|
772
|
-
savingPool: this.getBucketSavingPool(tx),
|
|
773
|
-
yieldVault: YIELD_VAULT
|
|
995
|
+
stableRegistry: constants.STABLE_REGISTRY,
|
|
996
|
+
farm: constants.STABLE_VAULT_FARM,
|
|
997
|
+
stableVault: constants.STABLE_VAULT,
|
|
998
|
+
usdbTreasury: await Promise.resolve(this.bucketClient.treasury(tx)),
|
|
999
|
+
savingPool: await this.getBucketSavingPool(tx),
|
|
1000
|
+
yieldVault: constants.YIELD_VAULT
|
|
774
1001
|
},
|
|
775
1002
|
typeArguments: [
|
|
776
|
-
STABLE_LP_TYPE,
|
|
777
|
-
USDC_TYPE,
|
|
1003
|
+
constants.STABLE_LP_TYPE,
|
|
1004
|
+
constants.USDC_TYPE,
|
|
778
1005
|
stableCoinType,
|
|
779
|
-
YUSDB_TYPE,
|
|
780
|
-
SAVING_TYPE
|
|
1006
|
+
constants.YUSDB_TYPE,
|
|
1007
|
+
constants.SAVING_TYPE
|
|
781
1008
|
]
|
|
782
1009
|
})(tx);
|
|
783
|
-
this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
|
|
1010
|
+
await this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
|
|
784
1011
|
if (autoTransfer) {
|
|
785
1012
|
tx.transferObjects([rewardCoin], sender ?? this.sender);
|
|
786
1013
|
return;
|
|
@@ -788,9 +1015,63 @@ var StableLayerClient = class {
|
|
|
788
1015
|
return rewardCoin;
|
|
789
1016
|
}
|
|
790
1017
|
}
|
|
1018
|
+
async getClaimRewardUsdbAmount({
|
|
1019
|
+
stableCoinType,
|
|
1020
|
+
sender
|
|
1021
|
+
}) {
|
|
1022
|
+
const tx = new import_transactions2.Transaction();
|
|
1023
|
+
await this.buildClaimTx({
|
|
1024
|
+
tx,
|
|
1025
|
+
stableCoinType,
|
|
1026
|
+
sender,
|
|
1027
|
+
autoTransfer: true
|
|
1028
|
+
});
|
|
1029
|
+
const usdbType = this.network === "testnet" ? (0, import_utils28.normalizeStructTag)(this.mockUsdbCoinType ?? (this.getConstants().MOCK_USDB_TYPE || `${this.getMockFarmPackageId()}::usdb::USDB`)) : (0, import_utils28.normalizeStructTag)(await this.bucketClient.getUsdbCoinType());
|
|
1030
|
+
const res = await this.suiClient.simulateTransaction({
|
|
1031
|
+
transaction: tx,
|
|
1032
|
+
include: { balanceChanges: true }
|
|
1033
|
+
});
|
|
1034
|
+
if (res.$kind !== "Transaction") {
|
|
1035
|
+
throw new Error(
|
|
1036
|
+
"StableLayerClient.getClaimRewardUsdbAmount: dry-run did not succeed; cannot infer claimable USDB."
|
|
1037
|
+
);
|
|
1038
|
+
}
|
|
1039
|
+
const changes = res.Transaction?.balanceChanges ?? [];
|
|
1040
|
+
const addr = sender.toLowerCase();
|
|
1041
|
+
let sum = 0n;
|
|
1042
|
+
for (const bc of changes) {
|
|
1043
|
+
if (bc.address.toLowerCase() !== addr) continue;
|
|
1044
|
+
if ((0, import_utils28.normalizeStructTag)(bc.coinType) !== usdbType) continue;
|
|
1045
|
+
const amt = BigInt(bc.amount);
|
|
1046
|
+
if (amt > 0n) sum += amt;
|
|
1047
|
+
}
|
|
1048
|
+
return sum;
|
|
1049
|
+
}
|
|
1050
|
+
buildSetMaxSupplyTx({
|
|
1051
|
+
tx,
|
|
1052
|
+
registry,
|
|
1053
|
+
factoryCapId,
|
|
1054
|
+
maxSupply,
|
|
1055
|
+
stableCoinType,
|
|
1056
|
+
usdCoinType,
|
|
1057
|
+
sender
|
|
1058
|
+
}) {
|
|
1059
|
+
tx.setSender(sender ?? this.sender);
|
|
1060
|
+
const constants = this.getConstants();
|
|
1061
|
+
setMaxSupply({
|
|
1062
|
+
package: constants.STABLE_LAYER_PACKAGE_ID,
|
|
1063
|
+
arguments: {
|
|
1064
|
+
registry,
|
|
1065
|
+
FactoryCap: factoryCapId,
|
|
1066
|
+
maxSupply
|
|
1067
|
+
},
|
|
1068
|
+
typeArguments: [stableCoinType, usdCoinType]
|
|
1069
|
+
})(tx);
|
|
1070
|
+
}
|
|
791
1071
|
async getTotalSupply() {
|
|
1072
|
+
const constants = this.getConstants();
|
|
792
1073
|
const result = await this.suiClient.getObject({
|
|
793
|
-
objectId: STABLE_REGISTRY,
|
|
1074
|
+
objectId: constants.STABLE_REGISTRY,
|
|
794
1075
|
include: { json: true }
|
|
795
1076
|
});
|
|
796
1077
|
const json = result.object?.json;
|
|
@@ -799,8 +1080,9 @@ var StableLayerClient = class {
|
|
|
799
1080
|
async getTotalSupplyByCoinType(stableCoinType) {
|
|
800
1081
|
const TypeName3 = import_bcs24.bcs.struct("TypeName", { name: import_bcs24.bcs.string() });
|
|
801
1082
|
const nameBcs = TypeName3.serialize({ name: stableCoinType.slice(2) }).toBytes();
|
|
1083
|
+
const constants = this.getConstants();
|
|
802
1084
|
const result = await this.suiClient.core.getDynamicObjectField({
|
|
803
|
-
parentId: STABLE_REGISTRY,
|
|
1085
|
+
parentId: constants.STABLE_REGISTRY,
|
|
804
1086
|
name: {
|
|
805
1087
|
type: "0x1::type_name::TypeName",
|
|
806
1088
|
bcs: nameBcs
|
|
@@ -810,53 +1092,76 @@ var StableLayerClient = class {
|
|
|
810
1092
|
const json = result.object?.json;
|
|
811
1093
|
return json?.treasury_cap?.total_supply?.value ?? void 0;
|
|
812
1094
|
}
|
|
813
|
-
getBucketSavingPool(tx) {
|
|
814
|
-
return
|
|
815
|
-
lpType: SAVING_TYPE
|
|
816
|
-
|
|
1095
|
+
async getBucketSavingPool(tx) {
|
|
1096
|
+
return Promise.resolve(
|
|
1097
|
+
this.bucketClient.savingPoolObj(tx, { lpType: this.getConstants().SAVING_TYPE })
|
|
1098
|
+
);
|
|
817
1099
|
}
|
|
818
|
-
getBucketPSMPool(tx) {
|
|
819
|
-
return
|
|
820
|
-
coinType: USDC_TYPE
|
|
821
|
-
|
|
1100
|
+
async getBucketPSMPool(tx) {
|
|
1101
|
+
return Promise.resolve(
|
|
1102
|
+
this.bucketClient.psmPoolObj(tx, { coinType: this.getConstants().USDC_TYPE })
|
|
1103
|
+
);
|
|
822
1104
|
}
|
|
823
|
-
checkResponse({
|
|
1105
|
+
async checkResponse({
|
|
824
1106
|
tx,
|
|
825
1107
|
response,
|
|
826
1108
|
type
|
|
827
1109
|
}) {
|
|
1110
|
+
const lpType = this.getConstants().SAVING_TYPE;
|
|
828
1111
|
if (type === "deposit") {
|
|
829
|
-
return
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
1112
|
+
return Promise.resolve(
|
|
1113
|
+
this.bucketClient.checkDepositResponse(tx, {
|
|
1114
|
+
lpType,
|
|
1115
|
+
depositResponse: response
|
|
1116
|
+
})
|
|
1117
|
+
);
|
|
833
1118
|
} else {
|
|
834
|
-
return
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
1119
|
+
return Promise.resolve(
|
|
1120
|
+
this.bucketClient.checkWithdrawResponse(tx, {
|
|
1121
|
+
lpType,
|
|
1122
|
+
withdrawResponse: response
|
|
1123
|
+
})
|
|
1124
|
+
);
|
|
838
1125
|
}
|
|
839
1126
|
}
|
|
840
|
-
releaseRewards(tx) {
|
|
1127
|
+
async releaseRewards(tx) {
|
|
1128
|
+
const constants = this.getConstants();
|
|
841
1129
|
const depositResponse = release({
|
|
842
|
-
package: YIELD_USDB_PACKAGE_ID,
|
|
1130
|
+
package: constants.YIELD_USDB_PACKAGE_ID,
|
|
843
1131
|
arguments: {
|
|
844
|
-
vault: YIELD_VAULT,
|
|
845
|
-
treasury: this.bucketClient.treasury(tx),
|
|
846
|
-
savingPool:
|
|
847
|
-
lpType: SAVING_TYPE
|
|
848
|
-
|
|
1132
|
+
vault: constants.YIELD_VAULT,
|
|
1133
|
+
treasury: await Promise.resolve(this.bucketClient.treasury(tx)),
|
|
1134
|
+
savingPool: await Promise.resolve(
|
|
1135
|
+
this.bucketClient.savingPoolObj(tx, { lpType: constants.SAVING_TYPE })
|
|
1136
|
+
)
|
|
849
1137
|
},
|
|
850
|
-
typeArguments: [YUSDB_TYPE, SAVING_TYPE]
|
|
1138
|
+
typeArguments: [constants.YUSDB_TYPE, constants.SAVING_TYPE]
|
|
851
1139
|
})(tx);
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
1140
|
+
await Promise.resolve(
|
|
1141
|
+
this.bucketClient.checkDepositResponse(tx, {
|
|
1142
|
+
depositResponse,
|
|
1143
|
+
lpType: constants.SAVING_TYPE
|
|
1144
|
+
})
|
|
1145
|
+
);
|
|
856
1146
|
}
|
|
857
1147
|
};
|
|
858
1148
|
// Annotate the CommonJS export names for ESM import in node:
|
|
859
1149
|
0 && (module.exports = {
|
|
860
|
-
|
|
1150
|
+
SAVING_TYPE,
|
|
1151
|
+
STABLE_LAYER_PACKAGE_ID,
|
|
1152
|
+
STABLE_LAYER_PACKAGE_MAINNET_ALT,
|
|
1153
|
+
STABLE_LP_TYPE,
|
|
1154
|
+
STABLE_REGISTRY,
|
|
1155
|
+
STABLE_REGISTRY_MAINNET_ALT,
|
|
1156
|
+
STABLE_VAULT,
|
|
1157
|
+
STABLE_VAULT_FARM,
|
|
1158
|
+
STABLE_VAULT_FARM_ENTITY_TYPE,
|
|
1159
|
+
STABLE_VAULT_FARM_PACKAGE_ID,
|
|
1160
|
+
StableLayerClient,
|
|
1161
|
+
USDC_TYPE,
|
|
1162
|
+
YIELD_USDB_PACKAGE_ID,
|
|
1163
|
+
YIELD_VAULT,
|
|
1164
|
+
YUSDB_TYPE,
|
|
1165
|
+
getConstants
|
|
861
1166
|
});
|
|
862
1167
|
//# sourceMappingURL=index.cjs.map
|