@imtbl/sdk 0.0.1-alpha.1 → 0.0.1-alpha.3
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/base.d.ts +14 -119
- package/dist/base.js +8 -20
- package/dist/browser/checkout.js +2 -0
- package/dist/checkout_sdk.d.ts +692 -0
- package/dist/checkout_sdk.js +553 -0
- package/dist/checkout_widgets.d.ts +14447 -0
- package/dist/checkout_widgets.js +198 -0
- package/dist/index.cjs +844 -154
- package/dist/index.d.ts +20637 -4534
- package/dist/index.js +844 -155
- package/dist/passport.d.ts +40 -14
- package/dist/passport.js +96 -92
- package/dist/provider.d.ts +36 -20
- package/dist/provider.js +66 -55
- package/dist/starkex.d.ts +2015 -824
- package/dist/starkex.js +52 -4
- package/package.json +32 -4
package/dist/provider.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { Config, TransfersApi, OrdersApi, UsersApi, Contracts, TradesApi, ExchangesApi, WithdrawalsApi, MintsApi, DepositsApi, EncodingApi, TokensApi } from '@imtbl/core-sdk';
|
|
1
2
|
import BN from 'bn.js';
|
|
2
3
|
import * as encUtils from 'enc-utils';
|
|
3
|
-
import { Config, TransfersApi, OrdersApi, UsersApi, Contracts, TradesApi, ExchangesApi, WithdrawalsApi, MintsApi, DepositsApi, EncodingApi, TokensApi } from '@imtbl/core-sdk';
|
|
4
4
|
import { parseUnits } from '@ethersproject/units';
|
|
5
5
|
import { BigNumber } from '@ethersproject/bignumber';
|
|
6
6
|
import { ethers } from 'ethers';
|
|
@@ -78,18 +78,9 @@ function convertToSignableToken(token) {
|
|
|
78
78
|
|
|
79
79
|
var Environment;
|
|
80
80
|
(function (Environment) {
|
|
81
|
-
Environment["DEVELOPMENT"] = "development";
|
|
82
|
-
Environment["SANDBOX"] = "sandbox";
|
|
83
81
|
Environment["PRODUCTION"] = "production";
|
|
82
|
+
Environment["SANDBOX"] = "sandbox";
|
|
84
83
|
})(Environment || (Environment = {}));
|
|
85
|
-
({
|
|
86
|
-
...Config.PRODUCTION,
|
|
87
|
-
env: Environment.PRODUCTION,
|
|
88
|
-
});
|
|
89
|
-
({
|
|
90
|
-
...Config.SANDBOX,
|
|
91
|
-
env: Environment.SANDBOX,
|
|
92
|
-
});
|
|
93
84
|
|
|
94
85
|
function isChainValid(chainID, config) {
|
|
95
86
|
return chainID === config.ethConfiguration.chainID;
|
|
@@ -101,9 +92,9 @@ async function validateChain(signer, config) {
|
|
|
101
92
|
}
|
|
102
93
|
|
|
103
94
|
async function transfer({ signers: { ethSigner, starkExSigner }, request, config, }) {
|
|
104
|
-
await validateChain(ethSigner, config.
|
|
95
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
105
96
|
const ethAddress = await ethSigner.getAddress();
|
|
106
|
-
const transfersApi = new TransfersApi(config.
|
|
97
|
+
const transfersApi = new TransfersApi(config.immutableXConfig.apiConfiguration);
|
|
107
98
|
const transferAmount = request.type === 'ERC721' ? '1' : request.amount;
|
|
108
99
|
const signableResult = await transfersApi.getSignableTransferV1({
|
|
109
100
|
getSignableTransferRequest: {
|
|
@@ -141,9 +132,9 @@ async function transfer({ signers: { ethSigner, starkExSigner }, request, config
|
|
|
141
132
|
};
|
|
142
133
|
}
|
|
143
134
|
async function batchTransfer({ signers: { ethSigner, starkExSigner }, request, config, }) {
|
|
144
|
-
await validateChain(ethSigner, config.
|
|
135
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
145
136
|
const ethAddress = await ethSigner.getAddress();
|
|
146
|
-
const transfersApi = new TransfersApi(config.
|
|
137
|
+
const transfersApi = new TransfersApi(config.immutableXConfig.apiConfiguration);
|
|
147
138
|
const signableRequests = request.map((nftTransfer) => {
|
|
148
139
|
return {
|
|
149
140
|
amount: '1',
|
|
@@ -197,9 +188,9 @@ async function batchTransfer({ signers: { ethSigner, starkExSigner }, request, c
|
|
|
197
188
|
}
|
|
198
189
|
|
|
199
190
|
async function createOrder({ signers, request, config, }) {
|
|
200
|
-
await validateChain(signers.ethSigner, config.
|
|
191
|
+
await validateChain(signers.ethSigner, config.immutableXConfig);
|
|
201
192
|
const ethAddress = await signers.ethSigner.getAddress();
|
|
202
|
-
const ordersApi = new OrdersApi(config.
|
|
193
|
+
const ordersApi = new OrdersApi(config.immutableXConfig.apiConfiguration);
|
|
203
194
|
const amountSell = request.sell.type === 'ERC721' ? '1' : request.sell.amount;
|
|
204
195
|
const amountBuy = request.buy.type === 'ERC721' ? '1' : request.buy.amount;
|
|
205
196
|
const getSignableOrderRequest = {
|
|
@@ -242,7 +233,7 @@ async function createOrder({ signers, request, config, }) {
|
|
|
242
233
|
};
|
|
243
234
|
}
|
|
244
235
|
async function cancelOrder({ signers, request, config, }) {
|
|
245
|
-
const ordersApi = new OrdersApi(config.
|
|
236
|
+
const ordersApi = new OrdersApi(config.immutableXConfig.apiConfiguration);
|
|
246
237
|
const getSignableCancelOrderResponse = await ordersApi.getSignableCancelOrder({
|
|
247
238
|
getSignableCancelOrderRequest: {
|
|
248
239
|
order_id: request.order_id,
|
|
@@ -268,8 +259,8 @@ async function cancelOrder({ signers, request, config, }) {
|
|
|
268
259
|
}
|
|
269
260
|
|
|
270
261
|
async function registerOffchain(signers, config) {
|
|
271
|
-
await validateChain(signers.ethSigner, config.
|
|
272
|
-
const usersApi = new UsersApi(config.
|
|
262
|
+
await validateChain(signers.ethSigner, config.immutableXConfig);
|
|
263
|
+
const usersApi = new UsersApi(config.immutableXConfig.apiConfiguration);
|
|
273
264
|
const userAddress = await signers.ethSigner.getAddress();
|
|
274
265
|
const starkPublicKey = await signers.starkExSigner.getAddress();
|
|
275
266
|
const signableResult = await usersApi.getSignableRegistrationOffchain({
|
|
@@ -292,8 +283,8 @@ async function registerOffchain(signers, config) {
|
|
|
292
283
|
return registeredUser.data;
|
|
293
284
|
}
|
|
294
285
|
async function isRegisteredOnChain(starkPublicKey, ethSigner, config) {
|
|
295
|
-
await validateChain(ethSigner, config.
|
|
296
|
-
const registrationContract = Contracts.Registration.connect(config.
|
|
286
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
287
|
+
const registrationContract = Contracts.Registration.connect(config.immutableXConfig.ethConfiguration.registrationContractAddress, ethSigner);
|
|
297
288
|
try {
|
|
298
289
|
return await registrationContract.isRegistered(starkPublicKey);
|
|
299
290
|
}
|
|
@@ -368,10 +359,10 @@ async function getEncodeAssetInfo(assetType, tokenType, config, tokenData) {
|
|
|
368
359
|
|
|
369
360
|
async function executeRegisterAndWithdrawERC20({ ethSigner, assetType, starkPublicKey, config, }) {
|
|
370
361
|
const etherKey = await ethSigner.getAddress();
|
|
371
|
-
const starkExConfig = config.
|
|
362
|
+
const starkExConfig = config.immutableXConfig;
|
|
372
363
|
const usersApi = new UsersApi(starkExConfig.apiConfiguration);
|
|
373
364
|
const signableResult = await getSignableRegistrationOnchain(etherKey, starkPublicKey, usersApi);
|
|
374
|
-
const contract = Contracts.Registration.connect(config.
|
|
365
|
+
const contract = Contracts.Registration.connect(config.immutableXConfig.ethConfiguration.registrationContractAddress, ethSigner);
|
|
375
366
|
const populatedTransaction = await contract.populateTransaction.registerAndWithdraw(etherKey, starkPublicKey, signableResult.operator_signature, assetType);
|
|
376
367
|
return ethSigner.sendTransaction(populatedTransaction);
|
|
377
368
|
}
|
|
@@ -381,8 +372,8 @@ async function executeWithdrawERC20(ethSigner, assetType, starkPublicKey, config
|
|
|
381
372
|
return ethSigner.sendTransaction(populatedTransaction);
|
|
382
373
|
}
|
|
383
374
|
async function completeERC20WithdrawalAction({ ethSigner, starkPublicKey, token, config, }) {
|
|
384
|
-
await validateChain(ethSigner, config.
|
|
385
|
-
const starkExConfig = config.
|
|
375
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
376
|
+
const starkExConfig = config.immutableXConfig;
|
|
386
377
|
const assetType = await getEncodeAssetInfo('asset', 'ERC20', starkExConfig, {
|
|
387
378
|
token_address: token.tokenAddress,
|
|
388
379
|
});
|
|
@@ -419,7 +410,7 @@ function getMintingBlob(token) {
|
|
|
419
410
|
return encUtils.sanitizeHex(encUtils.utf8ToHex(`{${id}}:{${blueprint}}`));
|
|
420
411
|
}
|
|
421
412
|
async function completeMintableERC721Withdrawal(ethSigner, starkPublicKey, token, config) {
|
|
422
|
-
const starkExConfig = config.
|
|
413
|
+
const starkExConfig = config.immutableXConfig;
|
|
423
414
|
const assetType = await getEncodeAssetInfo('mintable-asset', 'ERC721', starkExConfig, {
|
|
424
415
|
id: token.data.id,
|
|
425
416
|
token_address: token.data.tokenAddress,
|
|
@@ -448,7 +439,7 @@ async function executeWithdrawERC721(ethSigner, assetType, starkPublicKey, token
|
|
|
448
439
|
return ethSigner.sendTransaction(populatedTransaction);
|
|
449
440
|
}
|
|
450
441
|
async function completeERC721Withdrawal(ethSigner, starkPublicKey, token, config) {
|
|
451
|
-
const starkExConfig = config.
|
|
442
|
+
const starkExConfig = config.immutableXConfig;
|
|
452
443
|
const assetType = await getEncodeAssetInfo('asset', 'ERC721', starkExConfig, {
|
|
453
444
|
token_id: token.tokenId,
|
|
454
445
|
token_address: token.tokenAddress,
|
|
@@ -462,10 +453,10 @@ async function completeERC721Withdrawal(ethSigner, starkPublicKey, token, config
|
|
|
462
453
|
}
|
|
463
454
|
}
|
|
464
455
|
async function completeERC721WithdrawalAction({ ethSigner, starkPublicKey, token, config, }) {
|
|
465
|
-
await validateChain(ethSigner, config.
|
|
456
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
466
457
|
const tokenAddress = token.tokenAddress;
|
|
467
458
|
const tokenId = token.tokenId;
|
|
468
|
-
const starkExConfig = config.
|
|
459
|
+
const starkExConfig = config.immutableXConfig;
|
|
469
460
|
const mintsApi = new MintsApi(starkExConfig.apiConfiguration);
|
|
470
461
|
return await mintsApi
|
|
471
462
|
.getMintableTokenDetailsByClientTokenId({
|
|
@@ -503,8 +494,8 @@ async function executeWithdrawEth(ethSigner, assetType, starkPublicKey, config)
|
|
|
503
494
|
return ethSigner.sendTransaction(populatedTransaction);
|
|
504
495
|
}
|
|
505
496
|
async function completeEthWithdrawalAction({ ethSigner, starkPublicKey, config, }) {
|
|
506
|
-
await validateChain(ethSigner, config.
|
|
507
|
-
const starkExConfig = config.
|
|
497
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
498
|
+
const starkExConfig = config.immutableXConfig;
|
|
508
499
|
const assetType = await getEncodeAssetInfo('asset', 'ETH', starkExConfig);
|
|
509
500
|
const isRegistered = await isRegisteredOnChain(starkPublicKey, ethSigner, config);
|
|
510
501
|
if (!isRegistered) {
|
|
@@ -516,10 +507,9 @@ async function completeEthWithdrawalAction({ ethSigner, starkPublicKey, config,
|
|
|
516
507
|
}
|
|
517
508
|
|
|
518
509
|
async function prepareWithdrawal({ signers, withdrawal, config, }) {
|
|
519
|
-
const starkExConfig = config.getStarkExConfig();
|
|
520
510
|
return prepareWithdrawalAction({
|
|
521
511
|
signers,
|
|
522
|
-
config:
|
|
512
|
+
config: config.immutableXConfig,
|
|
523
513
|
...withdrawal,
|
|
524
514
|
});
|
|
525
515
|
}
|
|
@@ -545,9 +535,9 @@ async function completeWithdrawal({ signers: { ethSigner }, starkPublicKey, toke
|
|
|
545
535
|
}
|
|
546
536
|
|
|
547
537
|
async function createTrade({ signers: { ethSigner, starkExSigner }, request, config, }) {
|
|
548
|
-
await validateChain(ethSigner, config.
|
|
538
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
549
539
|
const ethAddress = await ethSigner.getAddress();
|
|
550
|
-
const tradesApi = new TradesApi(config.
|
|
540
|
+
const tradesApi = new TradesApi(config.immutableXConfig.apiConfiguration);
|
|
551
541
|
const signableResult = await tradesApi.getSignableTrade({
|
|
552
542
|
getSignableTradeRequest: {
|
|
553
543
|
user: ethAddress,
|
|
@@ -582,13 +572,13 @@ async function createTrade({ signers: { ethSigner, starkExSigner }, request, con
|
|
|
582
572
|
}
|
|
583
573
|
|
|
584
574
|
async function depositEth({ signers: { ethSigner }, deposit, config, }) {
|
|
585
|
-
await validateChain(ethSigner, config.
|
|
575
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
586
576
|
const user = await ethSigner.getAddress();
|
|
587
577
|
const data = {
|
|
588
578
|
decimals: 18,
|
|
589
579
|
};
|
|
590
580
|
const amount = parseUnits(deposit.amount, 'wei');
|
|
591
|
-
const starkExConfig = config.
|
|
581
|
+
const starkExConfig = config.immutableXConfig;
|
|
592
582
|
const depositsApi = new DepositsApi(starkExConfig.apiConfiguration);
|
|
593
583
|
const encodingApi = new EncodingApi(starkExConfig.apiConfiguration);
|
|
594
584
|
const usersApi = new UsersApi(starkExConfig.apiConfiguration);
|
|
@@ -636,8 +626,8 @@ async function executeDepositEth(ethSigner, amount, assetType, starkPublicKey, v
|
|
|
636
626
|
}
|
|
637
627
|
|
|
638
628
|
async function depositERC20({ signers: { ethSigner }, deposit, config, }) {
|
|
639
|
-
await validateChain(ethSigner, config.
|
|
640
|
-
const { apiConfiguration, ethConfiguration } = config.
|
|
629
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
630
|
+
const { apiConfiguration, ethConfiguration } = config.immutableXConfig;
|
|
641
631
|
const user = await ethSigner.getAddress();
|
|
642
632
|
const tokensApi = new TokensApi(apiConfiguration);
|
|
643
633
|
const depositsApi = new DepositsApi(apiConfiguration);
|
|
@@ -704,12 +694,12 @@ async function executeRegisterAndDepositERC20(ethSigner, quantizedAmount, assetT
|
|
|
704
694
|
}
|
|
705
695
|
|
|
706
696
|
async function depositERC721({ signers: { ethSigner }, deposit, config, }) {
|
|
707
|
-
await validateChain(ethSigner, config.
|
|
697
|
+
await validateChain(ethSigner, config.immutableXConfig);
|
|
708
698
|
const user = await ethSigner.getAddress();
|
|
709
|
-
const
|
|
710
|
-
const depositsApi = new DepositsApi(
|
|
711
|
-
const encodingApi = new EncodingApi(
|
|
712
|
-
const usersApi = new UsersApi(
|
|
699
|
+
const { immutableXConfig } = config;
|
|
700
|
+
const depositsApi = new DepositsApi(immutableXConfig.apiConfiguration);
|
|
701
|
+
const encodingApi = new EncodingApi(immutableXConfig.apiConfiguration);
|
|
702
|
+
const usersApi = new UsersApi(immutableXConfig.apiConfiguration);
|
|
713
703
|
const data = {
|
|
714
704
|
token_address: deposit.tokenAddress,
|
|
715
705
|
token_id: deposit.tokenId,
|
|
@@ -745,18 +735,18 @@ async function depositERC721({ signers: { ethSigner }, deposit, config, }) {
|
|
|
745
735
|
const isRegistered = await isRegisteredOnChain(starkPublicKey, ethSigner, config);
|
|
746
736
|
// Approve whether an amount of token from an account can be spent by a third-party account
|
|
747
737
|
const tokenContract = Contracts.IERC721.connect(deposit.tokenAddress, ethSigner);
|
|
748
|
-
const operator =
|
|
738
|
+
const operator = immutableXConfig.ethConfiguration.coreContractAddress;
|
|
749
739
|
const isApprovedForAll = await tokenContract.isApprovedForAll(user, operator);
|
|
750
740
|
if (!isApprovedForAll) {
|
|
751
741
|
await tokenContract.setApprovalForAll(operator, true);
|
|
752
742
|
}
|
|
753
743
|
if (!isRegistered) {
|
|
754
744
|
const signableResult = await getSignableRegistrationOnchain(user, starkPublicKey, usersApi);
|
|
755
|
-
const coreContract = Contracts.Core.connect(
|
|
745
|
+
const coreContract = Contracts.Core.connect(immutableXConfig.ethConfiguration.coreContractAddress, ethSigner);
|
|
756
746
|
// Note: proxy registration contract registerAndDepositNft method is not used as it currently fails erc721 transfer ownership check
|
|
757
747
|
await coreContract.registerUser(user, starkPublicKey, signableResult.operator_signature);
|
|
758
748
|
}
|
|
759
|
-
return executeDepositERC721(ethSigner, deposit.tokenId, assetType, starkPublicKey, vaultId,
|
|
749
|
+
return executeDepositERC721(ethSigner, deposit.tokenId, assetType, starkPublicKey, vaultId, immutableXConfig);
|
|
760
750
|
}
|
|
761
751
|
async function executeDepositERC721(ethSigner, tokenId, assetType, starkPublicKey, vaultId, config) {
|
|
762
752
|
const coreContract = Contracts.Core.connect(config.ethConfiguration.coreContractAddress, ethSigner);
|
|
@@ -776,8 +766,8 @@ async function deposit({ signers, deposit, config }) {
|
|
|
776
766
|
}
|
|
777
767
|
|
|
778
768
|
async function exchangeTransfer({ signers, request, config, }) {
|
|
779
|
-
await validateChain(signers.ethSigner, config.
|
|
780
|
-
const exchangeApi = new ExchangesApi(config.
|
|
769
|
+
await validateChain(signers.ethSigner, config.immutableXConfig);
|
|
770
|
+
const exchangeApi = new ExchangesApi(config.immutableXConfig.apiConfiguration);
|
|
781
771
|
const ethAddress = await signers.ethSigner.getAddress();
|
|
782
772
|
const transferAmount = request.amount;
|
|
783
773
|
const signableResult = await exchangeApi.getExchangeSignableTransfer({
|
|
@@ -1000,7 +990,6 @@ class ImxSigner {
|
|
|
1000
990
|
|
|
1001
991
|
const IMX_WALLET_IFRAME_ID = 'imx-wallet-app';
|
|
1002
992
|
const IMX_WALLET_IFRAME_HOSTS = {
|
|
1003
|
-
[Environment.DEVELOPMENT]: 'http://localhost:8080',
|
|
1004
993
|
[Environment.SANDBOX]: 'https://wallets.sandbox.immutable.com',
|
|
1005
994
|
[Environment.PRODUCTION]: 'https://wallets.immutable.com',
|
|
1006
995
|
};
|
|
@@ -1098,12 +1087,11 @@ class MetaMaskIMXProvider extends GenericIMXProvider {
|
|
|
1098
1087
|
super(config, ethSigner, starkExSigner);
|
|
1099
1088
|
}
|
|
1100
1089
|
static async connect(config) {
|
|
1101
|
-
const starkExConfig = config.getStarkExConfig();
|
|
1102
1090
|
return await withProviderError(async () => {
|
|
1103
1091
|
const metaMaskProvider = await connect$1({
|
|
1104
|
-
chainID:
|
|
1092
|
+
chainID: config.immutableXConfig.ethConfiguration.chainID,
|
|
1105
1093
|
});
|
|
1106
|
-
this.imxSigner = await connect(metaMaskProvider,
|
|
1094
|
+
this.imxSigner = await connect(metaMaskProvider, config.baseConfig.environment);
|
|
1107
1095
|
return new MetaMaskIMXProvider(config, metaMaskProvider.getSigner(), this.imxSigner);
|
|
1108
1096
|
}, { type: ProviderErrorType.WALLET_CONNECTION_ERROR });
|
|
1109
1097
|
}
|
|
@@ -1125,4 +1113,27 @@ class MetaMaskIMXProvider extends GenericIMXProvider {
|
|
|
1125
1113
|
}
|
|
1126
1114
|
}
|
|
1127
1115
|
|
|
1128
|
-
|
|
1116
|
+
class ProviderConfiguration {
|
|
1117
|
+
immutableXConfig;
|
|
1118
|
+
baseConfig;
|
|
1119
|
+
constructor({ baseConfig, overrides }) {
|
|
1120
|
+
this.baseConfig = baseConfig;
|
|
1121
|
+
if (overrides) {
|
|
1122
|
+
this.immutableXConfig = overrides.immutableXConfig;
|
|
1123
|
+
}
|
|
1124
|
+
else {
|
|
1125
|
+
switch (baseConfig.environment) {
|
|
1126
|
+
case Environment.SANDBOX: {
|
|
1127
|
+
this.immutableXConfig = Config.SANDBOX;
|
|
1128
|
+
break;
|
|
1129
|
+
}
|
|
1130
|
+
case Environment.PRODUCTION: {
|
|
1131
|
+
this.immutableXConfig = Config.PRODUCTION;
|
|
1132
|
+
break;
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
export { GenericIMXProvider, MetaMaskIMXProvider, ProviderConfiguration };
|