@msafe/sui3-sdk 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +80 -81
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.js +76 -77
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/core/MSafeAccount.ts +61 -76
- package/src/utils/transaction.ts +32 -0
package/dist/index.d.cts
CHANGED
|
@@ -467,6 +467,13 @@ declare class MSafeAccount {
|
|
|
467
467
|
events: true;
|
|
468
468
|
}>>;
|
|
469
469
|
dashboard(): Promise<_msafe_sui3_utils.IGetDashboardResp>;
|
|
470
|
+
/**
|
|
471
|
+
* Resolve a Transaction from propose/simulate input.
|
|
472
|
+
* 1. Caller-supplied `txb` (generic store path — do not rebuild).
|
|
473
|
+
* 2. Registered app helper `build`.
|
|
474
|
+
* 3. Unregistered app: restore from `intention.content` (JSON or hex).
|
|
475
|
+
*/
|
|
476
|
+
private buildTxFromIntention;
|
|
470
477
|
private calculateWeightFromVotes;
|
|
471
478
|
private calculateWeight;
|
|
472
479
|
get address(): string;
|
|
@@ -595,5 +602,11 @@ declare function createCoinReservationRef(reservedBalance: bigint, owner: string
|
|
|
595
602
|
* (V1 drops CallArg::FundsWithdrawal).
|
|
596
603
|
*/
|
|
597
604
|
declare function toSuiTransaction(txb: Transaction | unknown): Transaction;
|
|
605
|
+
declare function getIntentionContent(intention: unknown): unknown;
|
|
606
|
+
/**
|
|
607
|
+
* Restore a Transaction from plain-tx `intention.content`.
|
|
608
|
+
* Accepts V2 JSON (`tx.toJSON()`), hex BCS bytes, or a JSON object.
|
|
609
|
+
*/
|
|
610
|
+
declare function transactionFromContent(content: unknown): Transaction;
|
|
598
611
|
|
|
599
|
-
export { AddressBookSDK, COIN_RESERVATION_MAGIC, COIN_TYPE_ARG_REGEX, Coin, CoinHelper, CreateHelper, type CreateMSafeInfo, DEV_API_URL, DEV_SYNCING_URL, ENV_CONFIGS, Formatter, type FutureIntention, type GasFundingMode, type GasFundingResult, type GasObjectReference, HexToUint8Array, type HistorySendTx, type HistoryVote, type IWallet, InfoTypeEnabledDto, InfoTypeKey, InsufficientGasFundsError, LOCAL_API_URL, LOCAL_SYNCING_URL, MAINNET_RPC_URL, MSafeAccount, MSafeClient, type MSafeConfig, type MSafeConfigOptions, MSafeEnabledDto, MSafeEnv, MSafeGlobals, type NotificationData, type NotificationInfo, NotificationSubscribeDto, NotificationUpdateDto, PREV_API_URL, PROD_API_URL, type Pagination, type PendingTx, type PendingVote, type ProposeIntention, type ReceiveTransaction, SUI_COIN, SignatureVerifier, type SimulateDryRunResponse, type SimulationFailedResult, type SimulationOption, type SimulationResult, type SimulationSuccessResult, TESTNET_RPC_URL, Uint8ArrayToHex, addPrefix, computeGasBudget, createCoinReservationRef, estimateGasBudget, getAllCoins, getMSafeConfig, getPublicKeyFromChain, httpUrlToGrpcBaseUrl, isCoinReservationDigest, msafeChainToSuiNetwork, preferClassicGasPayment, prepareGasFunding, selectGasFunding, stringToBuffer, toSuiTransaction };
|
|
612
|
+
export { AddressBookSDK, COIN_RESERVATION_MAGIC, COIN_TYPE_ARG_REGEX, Coin, CoinHelper, CreateHelper, type CreateMSafeInfo, DEV_API_URL, DEV_SYNCING_URL, ENV_CONFIGS, Formatter, type FutureIntention, type GasFundingMode, type GasFundingResult, type GasObjectReference, HexToUint8Array, type HistorySendTx, type HistoryVote, type IWallet, InfoTypeEnabledDto, InfoTypeKey, InsufficientGasFundsError, LOCAL_API_URL, LOCAL_SYNCING_URL, MAINNET_RPC_URL, MSafeAccount, MSafeClient, type MSafeConfig, type MSafeConfigOptions, MSafeEnabledDto, MSafeEnv, MSafeGlobals, type NotificationData, type NotificationInfo, NotificationSubscribeDto, NotificationUpdateDto, PREV_API_URL, PROD_API_URL, type Pagination, type PendingTx, type PendingVote, type ProposeIntention, type ReceiveTransaction, SUI_COIN, SignatureVerifier, type SimulateDryRunResponse, type SimulationFailedResult, type SimulationOption, type SimulationResult, type SimulationSuccessResult, TESTNET_RPC_URL, Uint8ArrayToHex, addPrefix, computeGasBudget, createCoinReservationRef, estimateGasBudget, getAllCoins, getIntentionContent, getMSafeConfig, getPublicKeyFromChain, httpUrlToGrpcBaseUrl, isCoinReservationDigest, msafeChainToSuiNetwork, preferClassicGasPayment, prepareGasFunding, selectGasFunding, stringToBuffer, toSuiTransaction, transactionFromContent };
|
package/dist/index.d.ts
CHANGED
|
@@ -467,6 +467,13 @@ declare class MSafeAccount {
|
|
|
467
467
|
events: true;
|
|
468
468
|
}>>;
|
|
469
469
|
dashboard(): Promise<_msafe_sui3_utils.IGetDashboardResp>;
|
|
470
|
+
/**
|
|
471
|
+
* Resolve a Transaction from propose/simulate input.
|
|
472
|
+
* 1. Caller-supplied `txb` (generic store path — do not rebuild).
|
|
473
|
+
* 2. Registered app helper `build`.
|
|
474
|
+
* 3. Unregistered app: restore from `intention.content` (JSON or hex).
|
|
475
|
+
*/
|
|
476
|
+
private buildTxFromIntention;
|
|
470
477
|
private calculateWeightFromVotes;
|
|
471
478
|
private calculateWeight;
|
|
472
479
|
get address(): string;
|
|
@@ -595,5 +602,11 @@ declare function createCoinReservationRef(reservedBalance: bigint, owner: string
|
|
|
595
602
|
* (V1 drops CallArg::FundsWithdrawal).
|
|
596
603
|
*/
|
|
597
604
|
declare function toSuiTransaction(txb: Transaction | unknown): Transaction;
|
|
605
|
+
declare function getIntentionContent(intention: unknown): unknown;
|
|
606
|
+
/**
|
|
607
|
+
* Restore a Transaction from plain-tx `intention.content`.
|
|
608
|
+
* Accepts V2 JSON (`tx.toJSON()`), hex BCS bytes, or a JSON object.
|
|
609
|
+
*/
|
|
610
|
+
declare function transactionFromContent(content: unknown): Transaction;
|
|
598
611
|
|
|
599
|
-
export { AddressBookSDK, COIN_RESERVATION_MAGIC, COIN_TYPE_ARG_REGEX, Coin, CoinHelper, CreateHelper, type CreateMSafeInfo, DEV_API_URL, DEV_SYNCING_URL, ENV_CONFIGS, Formatter, type FutureIntention, type GasFundingMode, type GasFundingResult, type GasObjectReference, HexToUint8Array, type HistorySendTx, type HistoryVote, type IWallet, InfoTypeEnabledDto, InfoTypeKey, InsufficientGasFundsError, LOCAL_API_URL, LOCAL_SYNCING_URL, MAINNET_RPC_URL, MSafeAccount, MSafeClient, type MSafeConfig, type MSafeConfigOptions, MSafeEnabledDto, MSafeEnv, MSafeGlobals, type NotificationData, type NotificationInfo, NotificationSubscribeDto, NotificationUpdateDto, PREV_API_URL, PROD_API_URL, type Pagination, type PendingTx, type PendingVote, type ProposeIntention, type ReceiveTransaction, SUI_COIN, SignatureVerifier, type SimulateDryRunResponse, type SimulationFailedResult, type SimulationOption, type SimulationResult, type SimulationSuccessResult, TESTNET_RPC_URL, Uint8ArrayToHex, addPrefix, computeGasBudget, createCoinReservationRef, estimateGasBudget, getAllCoins, getMSafeConfig, getPublicKeyFromChain, httpUrlToGrpcBaseUrl, isCoinReservationDigest, msafeChainToSuiNetwork, preferClassicGasPayment, prepareGasFunding, selectGasFunding, stringToBuffer, toSuiTransaction };
|
|
612
|
+
export { AddressBookSDK, COIN_RESERVATION_MAGIC, COIN_TYPE_ARG_REGEX, Coin, CoinHelper, CreateHelper, type CreateMSafeInfo, DEV_API_URL, DEV_SYNCING_URL, ENV_CONFIGS, Formatter, type FutureIntention, type GasFundingMode, type GasFundingResult, type GasObjectReference, HexToUint8Array, type HistorySendTx, type HistoryVote, type IWallet, InfoTypeEnabledDto, InfoTypeKey, InsufficientGasFundsError, LOCAL_API_URL, LOCAL_SYNCING_URL, MAINNET_RPC_URL, MSafeAccount, MSafeClient, type MSafeConfig, type MSafeConfigOptions, MSafeEnabledDto, MSafeEnv, MSafeGlobals, type NotificationData, type NotificationInfo, NotificationSubscribeDto, NotificationUpdateDto, PREV_API_URL, PROD_API_URL, type Pagination, type PendingTx, type PendingVote, type ProposeIntention, type ReceiveTransaction, SUI_COIN, SignatureVerifier, type SimulateDryRunResponse, type SimulationFailedResult, type SimulationOption, type SimulationResult, type SimulationSuccessResult, TESTNET_RPC_URL, Uint8ArrayToHex, addPrefix, computeGasBudget, createCoinReservationRef, estimateGasBudget, getAllCoins, getIntentionContent, getMSafeConfig, getPublicKeyFromChain, httpUrlToGrpcBaseUrl, isCoinReservationDigest, msafeChainToSuiNetwork, preferClassicGasPayment, prepareGasFunding, selectGasFunding, stringToBuffer, toSuiTransaction, transactionFromContent };
|
package/dist/index.js
CHANGED
|
@@ -134,7 +134,7 @@ import {
|
|
|
134
134
|
isSameAddress as isSameAddress2
|
|
135
135
|
} from "@msafe/sui3-utils";
|
|
136
136
|
import { Transaction as Transaction4 } from "@mysten/sui/transactions";
|
|
137
|
-
import { fromHex as
|
|
137
|
+
import { fromHex as fromHex3, normalizeStructTag as normalizeStructTag4, toHex as toHex2 } from "@mysten/sui/utils";
|
|
138
138
|
import { SUI_MAINNET_CHAIN, SUI_TESTNET_CHAIN } from "@mysten/wallet-standard";
|
|
139
139
|
|
|
140
140
|
// src/simulate/simulator.ts
|
|
@@ -802,6 +802,7 @@ var SignatureVerifier = class _SignatureVerifier {
|
|
|
802
802
|
|
|
803
803
|
// src/utils/transaction.ts
|
|
804
804
|
import { Transaction as Transaction3, isTransaction } from "@mysten/sui/transactions";
|
|
805
|
+
import { fromHex as fromHex2 } from "@mysten/sui/utils";
|
|
805
806
|
function toSuiTransaction(txb) {
|
|
806
807
|
if (isTransaction(txb)) {
|
|
807
808
|
return txb;
|
|
@@ -815,6 +816,30 @@ function toSuiTransaction(txb) {
|
|
|
815
816
|
}
|
|
816
817
|
throw new Error("Unsupported transaction value for toSuiTransaction");
|
|
817
818
|
}
|
|
819
|
+
function isHex(str) {
|
|
820
|
+
return /^[0-9a-fA-F]+$/.test(str);
|
|
821
|
+
}
|
|
822
|
+
function getIntentionContent(intention) {
|
|
823
|
+
if (intention && typeof intention === "object" && "content" in intention) {
|
|
824
|
+
return intention.content;
|
|
825
|
+
}
|
|
826
|
+
return void 0;
|
|
827
|
+
}
|
|
828
|
+
function transactionFromContent(content) {
|
|
829
|
+
if (content instanceof Uint8Array) {
|
|
830
|
+
return Transaction3.from(content);
|
|
831
|
+
}
|
|
832
|
+
if (typeof content === "string") {
|
|
833
|
+
if (isHex(content)) {
|
|
834
|
+
return Transaction3.from(fromHex2(content));
|
|
835
|
+
}
|
|
836
|
+
return Transaction3.from(content);
|
|
837
|
+
}
|
|
838
|
+
if (content && typeof content === "object") {
|
|
839
|
+
return Transaction3.from(JSON.stringify(content));
|
|
840
|
+
}
|
|
841
|
+
throw new Error("Invalid transaction content");
|
|
842
|
+
}
|
|
818
843
|
|
|
819
844
|
// src/utils/iter/iterator.ts
|
|
820
845
|
var REQUEST_PAGE_SIZE = 25;
|
|
@@ -1037,30 +1062,7 @@ var MSafeAccount = class _MSafeAccount {
|
|
|
1037
1062
|
return this.backend.getNextSequenceNumber(this.address);
|
|
1038
1063
|
}
|
|
1039
1064
|
async simulateIntention(request) {
|
|
1040
|
-
|
|
1041
|
-
if (request.txb) {
|
|
1042
|
-
txb = request.txb;
|
|
1043
|
-
} else {
|
|
1044
|
-
const appHelper = appHelpers.getAppHelper(request.application);
|
|
1045
|
-
if (!appHelper) {
|
|
1046
|
-
throw new Error(`Can't find app helper for application ${request.application}`);
|
|
1047
|
-
}
|
|
1048
|
-
txb = toSuiTransaction(
|
|
1049
|
-
await appHelper.build({
|
|
1050
|
-
network: this.globals.config.network,
|
|
1051
|
-
intentionData: request.intention,
|
|
1052
|
-
txType: request.txType,
|
|
1053
|
-
txSubType: request.txSubType,
|
|
1054
|
-
clientUrl: this.globals.config.suiClient.url,
|
|
1055
|
-
account: {
|
|
1056
|
-
address: this.address,
|
|
1057
|
-
publicKey: fromHex2(this.address),
|
|
1058
|
-
chains: [SUI_MAINNET_CHAIN, SUI_TESTNET_CHAIN],
|
|
1059
|
-
features: []
|
|
1060
|
-
}
|
|
1061
|
-
})
|
|
1062
|
-
);
|
|
1063
|
-
}
|
|
1065
|
+
const txb = await this.buildTxFromIntention(request);
|
|
1064
1066
|
txb.setSender(this.address);
|
|
1065
1067
|
return this.simulator.simulate({ txb, sender: this.address });
|
|
1066
1068
|
}
|
|
@@ -1080,30 +1082,7 @@ var MSafeAccount = class _MSafeAccount {
|
|
|
1080
1082
|
});
|
|
1081
1083
|
}
|
|
1082
1084
|
async proposeIntentionAndBuildVote(input) {
|
|
1083
|
-
|
|
1084
|
-
if (input.txb) {
|
|
1085
|
-
txb = input.txb;
|
|
1086
|
-
} else {
|
|
1087
|
-
const appHelper = appHelpers.getAppHelper(input.application);
|
|
1088
|
-
if (!appHelper) {
|
|
1089
|
-
throw new Error(`Can't find app helper for application ${input.application}`);
|
|
1090
|
-
}
|
|
1091
|
-
txb = toSuiTransaction(
|
|
1092
|
-
await appHelper.build({
|
|
1093
|
-
network: this.globals.config.network,
|
|
1094
|
-
intentionData: input.intention,
|
|
1095
|
-
txType: input.txType,
|
|
1096
|
-
txSubType: input.txSubType,
|
|
1097
|
-
clientUrl: this.globals.config.suiClient.url,
|
|
1098
|
-
account: {
|
|
1099
|
-
address: this.address,
|
|
1100
|
-
publicKey: fromHex2(this.address),
|
|
1101
|
-
chains: [SUI_MAINNET_CHAIN, SUI_TESTNET_CHAIN],
|
|
1102
|
-
features: []
|
|
1103
|
-
}
|
|
1104
|
-
})
|
|
1105
|
-
);
|
|
1106
|
-
}
|
|
1085
|
+
const txb = await this.buildTxFromIntention(input);
|
|
1107
1086
|
txb.setGasPrice(input.gasPrice);
|
|
1108
1087
|
txb.setSender(this.address);
|
|
1109
1088
|
await prepareGasFunding({
|
|
@@ -1213,14 +1192,6 @@ var MSafeAccount = class _MSafeAccount {
|
|
|
1213
1192
|
throw new Error("Already rejected");
|
|
1214
1193
|
}
|
|
1215
1194
|
const rejectTxb = toSuiTransaction(buildRejectTxb(this.address));
|
|
1216
|
-
rejectTxb.setGasPrice(input.gasPrice);
|
|
1217
|
-
await prepareGasFunding({
|
|
1218
|
-
tx: rejectTxb,
|
|
1219
|
-
suiClient: this.suiClient,
|
|
1220
|
-
owner: this.address,
|
|
1221
|
-
gasPrice: input.gasPrice,
|
|
1222
|
-
gasBudget: input.gasBudget
|
|
1223
|
-
});
|
|
1224
1195
|
const digest = await rejectTxb.getDigest({ client: this.suiClient });
|
|
1225
1196
|
const payload = await rejectTxb.build({ client: this.suiClient });
|
|
1226
1197
|
const signature = await this.wallet.signTransactionBlock({ transactionBlock: payload });
|
|
@@ -1233,25 +1204,12 @@ var MSafeAccount = class _MSafeAccount {
|
|
|
1233
1204
|
}
|
|
1234
1205
|
async simulateBuildTransaction() {
|
|
1235
1206
|
const intention = await this.backend.getNextIntention({ msafeAddress: this.address });
|
|
1236
|
-
const
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
network: this.globals.config.network,
|
|
1243
|
-
intentionData: intention.intention,
|
|
1244
|
-
txType: intention.txType,
|
|
1245
|
-
txSubType: intention.txSubType,
|
|
1246
|
-
clientUrl: this.globals.config.suiClient.url,
|
|
1247
|
-
account: {
|
|
1248
|
-
address: this.address,
|
|
1249
|
-
publicKey: fromHex2(this.address),
|
|
1250
|
-
chains: [SUI_MAINNET_CHAIN, SUI_TESTNET_CHAIN],
|
|
1251
|
-
features: []
|
|
1252
|
-
}
|
|
1253
|
-
})
|
|
1254
|
-
);
|
|
1207
|
+
const txb = await this.buildTxFromIntention({
|
|
1208
|
+
application: intention.application,
|
|
1209
|
+
intention: intention.intention,
|
|
1210
|
+
txType: intention.txType,
|
|
1211
|
+
txSubType: intention.txSubType
|
|
1212
|
+
});
|
|
1255
1213
|
txb.setSender(this.address);
|
|
1256
1214
|
return this.simulator.simulate({ txb, sender: this.address });
|
|
1257
1215
|
}
|
|
@@ -1296,6 +1254,45 @@ var MSafeAccount = class _MSafeAccount {
|
|
|
1296
1254
|
msafeAddress: this.address
|
|
1297
1255
|
});
|
|
1298
1256
|
}
|
|
1257
|
+
/**
|
|
1258
|
+
* Resolve a Transaction from propose/simulate input.
|
|
1259
|
+
* 1. Caller-supplied `txb` (generic store path — do not rebuild).
|
|
1260
|
+
* 2. Registered app helper `build`.
|
|
1261
|
+
* 3. Unregistered app: restore from `intention.content` (JSON or hex).
|
|
1262
|
+
*/
|
|
1263
|
+
async buildTxFromIntention(input) {
|
|
1264
|
+
if (input.txb) {
|
|
1265
|
+
return input.txb;
|
|
1266
|
+
}
|
|
1267
|
+
let appHelper;
|
|
1268
|
+
try {
|
|
1269
|
+
appHelper = appHelpers.getAppHelper(input.application);
|
|
1270
|
+
} catch {
|
|
1271
|
+
appHelper = void 0;
|
|
1272
|
+
}
|
|
1273
|
+
if (appHelper) {
|
|
1274
|
+
return toSuiTransaction(
|
|
1275
|
+
await appHelper.build({
|
|
1276
|
+
network: this.globals.config.network,
|
|
1277
|
+
intentionData: input.intention,
|
|
1278
|
+
txType: input.txType,
|
|
1279
|
+
txSubType: input.txSubType,
|
|
1280
|
+
clientUrl: this.globals.config.suiClient.url,
|
|
1281
|
+
account: {
|
|
1282
|
+
address: this.address,
|
|
1283
|
+
publicKey: fromHex3(this.address),
|
|
1284
|
+
chains: [SUI_MAINNET_CHAIN, SUI_TESTNET_CHAIN],
|
|
1285
|
+
features: []
|
|
1286
|
+
}
|
|
1287
|
+
})
|
|
1288
|
+
);
|
|
1289
|
+
}
|
|
1290
|
+
const content = getIntentionContent(input.intention);
|
|
1291
|
+
if (content != null) {
|
|
1292
|
+
return transactionFromContent(content);
|
|
1293
|
+
}
|
|
1294
|
+
throw new Error(`Can't find app helper for application ${input.application}`);
|
|
1295
|
+
}
|
|
1299
1296
|
calculateWeightFromVotes(votes) {
|
|
1300
1297
|
return this.calculateWeight(votes.map((vote) => vote.userAddress));
|
|
1301
1298
|
}
|
|
@@ -2030,6 +2027,7 @@ export {
|
|
|
2030
2027
|
createCoinReservationRef,
|
|
2031
2028
|
estimateGasBudget,
|
|
2032
2029
|
getAllCoins,
|
|
2030
|
+
getIntentionContent,
|
|
2033
2031
|
getMSafeConfig,
|
|
2034
2032
|
getPublicKeyFromChain,
|
|
2035
2033
|
httpUrlToGrpcBaseUrl,
|
|
@@ -2039,6 +2037,7 @@ export {
|
|
|
2039
2037
|
prepareGasFunding,
|
|
2040
2038
|
selectGasFunding,
|
|
2041
2039
|
stringToBuffer,
|
|
2042
|
-
toSuiTransaction
|
|
2040
|
+
toSuiTransaction,
|
|
2041
|
+
transactionFromContent
|
|
2043
2042
|
};
|
|
2044
2043
|
//# sourceMappingURL=index.js.map
|