@imtbl/sdk 0.3.0-alpha.2 → 0.3.0-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/blockchain-data.js +1 -1
- package/dist/browser/checkout.js +2 -2
- package/dist/checkout_sdk.d.ts +11 -0
- package/dist/checkout_sdk.js +23 -3
- package/dist/checkout_widgets.d.ts +3 -0
- package/dist/checkout_widgets.js +1 -1
- package/dist/immutablex_client.js +1 -1
- package/dist/index.browser.js +15 -15
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs +90 -43
- package/dist/index.d.ts +32 -4
- package/dist/index.js +77 -31
- package/dist/passport.d.ts +18 -4
- package/dist/passport.js +52 -26
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { Web3Provider, JsonRpcProvider } from '@ethersproject/providers';
|
|
|
11
11
|
import { ethers, BigNumber as BigNumber$1, providers, constants, utils as utils$2, Contract as Contract$1, ContractFactory } from 'ethers';
|
|
12
12
|
import { walletContracts } from '@0xsequence/abi';
|
|
13
13
|
import { encodeSignature } from '@0xsequence/config';
|
|
14
|
+
import { EventEmitter } from 'events';
|
|
14
15
|
import FormData$2 from 'form-data';
|
|
15
16
|
import { Seaport as Seaport$1 } from '@opensea/seaport-js';
|
|
16
17
|
import { parseUnits } from '@ethersproject/units';
|
|
@@ -5530,7 +5531,7 @@ class MultiRollupApiClients {
|
|
|
5530
5531
|
}
|
|
5531
5532
|
|
|
5532
5533
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5533
|
-
const defaultHeaders$1 = { 'x-sdk-version': 'ts-immutable-sdk-0.3.0-alpha.
|
|
5534
|
+
const defaultHeaders$1 = { 'x-sdk-version': 'ts-immutable-sdk-0.3.0-alpha.3' };
|
|
5534
5535
|
const createConfig = ({ basePath, headers, }) => {
|
|
5535
5536
|
if (!basePath.trim()) {
|
|
5536
5537
|
throw Error('basePath can not be empty');
|
|
@@ -5590,7 +5591,7 @@ class APIError extends Error {
|
|
|
5590
5591
|
|
|
5591
5592
|
/* eslint-disable implicit-arrow-linebreak */
|
|
5592
5593
|
const defaultHeaders = {
|
|
5593
|
-
sdkVersion: 'ts-immutable-sdk-multi-rollup-api-client-0.3.0-alpha.
|
|
5594
|
+
sdkVersion: 'ts-immutable-sdk-multi-rollup-api-client-0.3.0-alpha.3',
|
|
5594
5595
|
};
|
|
5595
5596
|
/**
|
|
5596
5597
|
* createAPIConfiguration to create a custom Configuration
|
|
@@ -5856,7 +5857,7 @@ const createImmutableXConfiguration = ({ basePath, chainID, coreContractAddress,
|
|
|
5856
5857
|
chainID,
|
|
5857
5858
|
coreContractAddress,
|
|
5858
5859
|
registrationContractAddress,
|
|
5859
|
-
sdkVersion: 'ts-immutable-sdk-0.3.0-alpha.
|
|
5860
|
+
sdkVersion: 'ts-immutable-sdk-0.3.0-alpha.3',
|
|
5860
5861
|
});
|
|
5861
5862
|
/**
|
|
5862
5863
|
* Sets `sdkVersion` at the time of build
|
|
@@ -11295,7 +11296,7 @@ function digestOfTransactionsAndNonce(nonce, normalisedTransactions) {
|
|
|
11295
11296
|
return ethers.utils.keccak256(packMetaTransactionsNonceData);
|
|
11296
11297
|
}
|
|
11297
11298
|
const getNonce = async (jsonRpcProvider, smartContractWalletAddress) => {
|
|
11298
|
-
const code = await jsonRpcProvider.send('eth_getCode', [smartContractWalletAddress]);
|
|
11299
|
+
const code = await jsonRpcProvider.send('eth_getCode', [smartContractWalletAddress, 'latest']);
|
|
11299
11300
|
if (code && code !== '0x') {
|
|
11300
11301
|
const contract = new ethers.Contract(smartContractWalletAddress, walletContracts.mainModule.abi, jsonRpcProvider);
|
|
11301
11302
|
return contract.nonce();
|
|
@@ -11346,7 +11347,21 @@ var RelayerTransactionStatus;
|
|
|
11346
11347
|
RelayerTransactionStatus["REVERTED"] = "REVERTED";
|
|
11347
11348
|
RelayerTransactionStatus["FAILED"] = "FAILED";
|
|
11348
11349
|
})(RelayerTransactionStatus || (RelayerTransactionStatus = {}));
|
|
11350
|
+
var ProviderEventNames;
|
|
11351
|
+
(function (ProviderEventNames) {
|
|
11352
|
+
ProviderEventNames["ACCOUNTS_CHANGED"] = "accountsChanged";
|
|
11353
|
+
})(ProviderEventNames || (ProviderEventNames = {}));
|
|
11349
11354
|
|
|
11355
|
+
/**
|
|
11356
|
+
* ProviderErrors should take priority over RpcErrorCodes
|
|
11357
|
+
*/
|
|
11358
|
+
var ProviderErrorCode;
|
|
11359
|
+
(function (ProviderErrorCode) {
|
|
11360
|
+
ProviderErrorCode[ProviderErrorCode["USER_REJECTED_REQUEST"] = 4001] = "USER_REJECTED_REQUEST";
|
|
11361
|
+
ProviderErrorCode[ProviderErrorCode["UNAUTHORIZED"] = 4100] = "UNAUTHORIZED";
|
|
11362
|
+
ProviderErrorCode[ProviderErrorCode["UNSUPPORTED_METHOD"] = 4200] = "UNSUPPORTED_METHOD";
|
|
11363
|
+
ProviderErrorCode[ProviderErrorCode["DISCONNECTED"] = 4900] = "DISCONNECTED";
|
|
11364
|
+
})(ProviderErrorCode || (ProviderErrorCode = {}));
|
|
11350
11365
|
var RpcErrorCode;
|
|
11351
11366
|
(function (RpcErrorCode) {
|
|
11352
11367
|
RpcErrorCode[RpcErrorCode["RPC_SERVER_ERROR"] = -32000] = "RPC_SERVER_ERROR";
|
|
@@ -11354,7 +11369,6 @@ var RpcErrorCode;
|
|
|
11354
11369
|
RpcErrorCode[RpcErrorCode["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
|
|
11355
11370
|
RpcErrorCode[RpcErrorCode["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
|
|
11356
11371
|
RpcErrorCode[RpcErrorCode["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
|
|
11357
|
-
RpcErrorCode[RpcErrorCode["UNAUTHORIZED"] = -32604] = "UNAUTHORIZED";
|
|
11358
11372
|
RpcErrorCode[RpcErrorCode["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
|
|
11359
11373
|
})(RpcErrorCode || (RpcErrorCode = {}));
|
|
11360
11374
|
class JsonRpcError extends Error {
|
|
@@ -11369,7 +11383,7 @@ class JsonRpcError extends Error {
|
|
|
11369
11383
|
|
|
11370
11384
|
const MAX_TRANSACTION_HASH_RETRIEVAL_RETRIES = 30;
|
|
11371
11385
|
const TRANSACTION_HASH_RETRIEVAL_WAIT = 1000;
|
|
11372
|
-
const
|
|
11386
|
+
const sendTransaction = async ({ params, magicProvider, jsonRpcProvider, relayerClient, config, user, }) => {
|
|
11373
11387
|
const transactionRequest = params[0];
|
|
11374
11388
|
if (!transactionRequest.to) {
|
|
11375
11389
|
throw new JsonRpcError(RpcErrorCode.INVALID_PARAMS, 'eth_sendTransaction requires a "to" field');
|
|
@@ -11434,6 +11448,19 @@ const ethSendTransaction = async ({ params, magicProvider, jsonRpcProvider, rela
|
|
|
11434
11448
|
return relayerTransaction.hash;
|
|
11435
11449
|
};
|
|
11436
11450
|
|
|
11451
|
+
class TypedEventEmitter {
|
|
11452
|
+
emitter = new EventEmitter();
|
|
11453
|
+
emit(eventName, ...eventArg) {
|
|
11454
|
+
this.emitter.emit(eventName, ...eventArg);
|
|
11455
|
+
}
|
|
11456
|
+
on(eventName, handler) {
|
|
11457
|
+
this.emitter.on(eventName, handler);
|
|
11458
|
+
}
|
|
11459
|
+
removeListener(eventName, handler) {
|
|
11460
|
+
this.emitter.removeListener(eventName, handler);
|
|
11461
|
+
}
|
|
11462
|
+
}
|
|
11463
|
+
|
|
11437
11464
|
class RelayerClient {
|
|
11438
11465
|
config;
|
|
11439
11466
|
constructor({ config }) {
|
|
@@ -11493,7 +11520,7 @@ class RelayerClient {
|
|
|
11493
11520
|
}
|
|
11494
11521
|
|
|
11495
11522
|
const MESSAGE_TO_SIGN = 'Only sign this message from Immutable Passport';
|
|
11496
|
-
async function
|
|
11523
|
+
async function registerZkEvmUser({ authManager, magicProvider, multiRollupApiClients, accessToken, }) {
|
|
11497
11524
|
const web3Provider = new Web3Provider(magicProvider);
|
|
11498
11525
|
const ethSigner = web3Provider.getSigner();
|
|
11499
11526
|
const ethereumAddress = await ethSigner.getAddress();
|
|
@@ -11517,7 +11544,7 @@ async function createCounterfactualAddress({ authManager, magicProvider, multiRo
|
|
|
11517
11544
|
return user;
|
|
11518
11545
|
}
|
|
11519
11546
|
|
|
11520
|
-
const
|
|
11547
|
+
const loginZkEvmUser = async ({ authManager, config, magicAdapter, multiRollupApiClients, }) => {
|
|
11521
11548
|
const user = await authManager.getUser() || await authManager.login();
|
|
11522
11549
|
if (!user.idToken) {
|
|
11523
11550
|
throw new Error('User is missing idToken');
|
|
@@ -11525,7 +11552,7 @@ const registerZkEvmUser = async ({ authManager, config, magicAdapter, multiRollu
|
|
|
11525
11552
|
const magicProvider = await magicAdapter.login(user.idToken, config.network);
|
|
11526
11553
|
if (!user.zkEvm) {
|
|
11527
11554
|
// Generate counterfactual address and retrieve updated Auth0 user
|
|
11528
|
-
const userZkevm = await
|
|
11555
|
+
const userZkevm = await registerZkEvmUser({
|
|
11529
11556
|
authManager,
|
|
11530
11557
|
magicProvider,
|
|
11531
11558
|
multiRollupApiClients,
|
|
@@ -11542,7 +11569,7 @@ const registerZkEvmUser = async ({ authManager, config, magicAdapter, multiRollu
|
|
|
11542
11569
|
};
|
|
11543
11570
|
};
|
|
11544
11571
|
|
|
11545
|
-
class ZkEvmProvider {
|
|
11572
|
+
class ZkEvmProvider extends TypedEventEmitter {
|
|
11546
11573
|
authManager;
|
|
11547
11574
|
config;
|
|
11548
11575
|
confirmationScreen;
|
|
@@ -11553,6 +11580,7 @@ class ZkEvmProvider {
|
|
|
11553
11580
|
magicProvider; // Used for signing
|
|
11554
11581
|
user;
|
|
11555
11582
|
constructor({ authManager, magicAdapter, config, confirmationScreen, multiRollupApiClients, }) {
|
|
11583
|
+
super();
|
|
11556
11584
|
this.authManager = authManager;
|
|
11557
11585
|
this.magicAdapter = magicAdapter;
|
|
11558
11586
|
this.config = config;
|
|
@@ -11565,25 +11593,12 @@ class ZkEvmProvider {
|
|
|
11565
11593
|
return this.magicProvider !== undefined && this.user !== undefined;
|
|
11566
11594
|
}
|
|
11567
11595
|
async performRequest(request) {
|
|
11568
|
-
const authWrapper = (fn) => {
|
|
11569
|
-
if (!this.isLoggedIn()) {
|
|
11570
|
-
throw new JsonRpcError(RpcErrorCode.UNAUTHORIZED, 'Unauthorised - call eth_requestAccounts first');
|
|
11571
|
-
}
|
|
11572
|
-
return fn({
|
|
11573
|
-
params: request.params || [],
|
|
11574
|
-
magicProvider: this.magicProvider,
|
|
11575
|
-
jsonRpcProvider: this.jsonRpcProvider,
|
|
11576
|
-
config: this.config,
|
|
11577
|
-
relayerClient: this.relayerClient,
|
|
11578
|
-
user: this.user,
|
|
11579
|
-
});
|
|
11580
|
-
};
|
|
11581
11596
|
switch (request.method) {
|
|
11582
11597
|
case 'eth_requestAccounts': {
|
|
11583
11598
|
if (this.isLoggedIn()) {
|
|
11584
11599
|
return [this.user.zkEvm.ethAddress];
|
|
11585
11600
|
}
|
|
11586
|
-
const { magicProvider, user } = await
|
|
11601
|
+
const { magicProvider, user } = await loginZkEvmUser({
|
|
11587
11602
|
authManager: this.authManager,
|
|
11588
11603
|
config: this.config,
|
|
11589
11604
|
magicAdapter: this.magicAdapter,
|
|
@@ -11591,10 +11606,21 @@ class ZkEvmProvider {
|
|
|
11591
11606
|
});
|
|
11592
11607
|
this.user = user;
|
|
11593
11608
|
this.magicProvider = magicProvider;
|
|
11609
|
+
this.emit(ProviderEventNames.ACCOUNTS_CHANGED, [this.user.zkEvm.ethAddress]);
|
|
11594
11610
|
return [this.user.zkEvm.ethAddress];
|
|
11595
11611
|
}
|
|
11596
11612
|
case 'eth_sendTransaction': {
|
|
11597
|
-
|
|
11613
|
+
if (!this.isLoggedIn()) {
|
|
11614
|
+
throw new JsonRpcError(ProviderErrorCode.UNAUTHORIZED, 'Unauthorised - call eth_requestAccounts first');
|
|
11615
|
+
}
|
|
11616
|
+
return sendTransaction({
|
|
11617
|
+
params: request.params || [],
|
|
11618
|
+
magicProvider: this.magicProvider,
|
|
11619
|
+
jsonRpcProvider: this.jsonRpcProvider,
|
|
11620
|
+
config: this.config,
|
|
11621
|
+
relayerClient: this.relayerClient,
|
|
11622
|
+
user: this.user,
|
|
11623
|
+
});
|
|
11598
11624
|
}
|
|
11599
11625
|
case 'eth_accounts': {
|
|
11600
11626
|
return this.isLoggedIn() ? [this.user.zkEvm.ethAddress] : [];
|
|
@@ -11615,7 +11641,7 @@ class ZkEvmProvider {
|
|
|
11615
11641
|
return this.jsonRpcProvider.send(request.method, request.params || []);
|
|
11616
11642
|
}
|
|
11617
11643
|
default: {
|
|
11618
|
-
throw new JsonRpcError(
|
|
11644
|
+
throw new JsonRpcError(ProviderErrorCode.UNSUPPORTED_METHOD, 'Method not supported');
|
|
11619
11645
|
}
|
|
11620
11646
|
}
|
|
11621
11647
|
}
|
|
@@ -27317,16 +27343,28 @@ const SUPPORTED_CHAIN_IDS_FOR_ENVIRONMENT = {
|
|
|
27317
27343
|
[Environment$1.PRODUCTION]: SUPPORTED_PRODUCTION_CHAINS,
|
|
27318
27344
|
};
|
|
27319
27345
|
function validateOverrides(overrides) {
|
|
27320
|
-
|
|
27321
|
-
|
|
27346
|
+
const keysToCheck = ['rpcURL', 'exchangeContracts', 'commonRoutingTokens', 'nativeToken'];
|
|
27347
|
+
for (const key of keysToCheck) {
|
|
27348
|
+
if (!overrides[key]) {
|
|
27322
27349
|
throw new InvalidConfigurationError(`Missing override: ${key}`);
|
|
27323
27350
|
}
|
|
27324
|
-
}
|
|
27351
|
+
}
|
|
27325
27352
|
Object.entries(overrides.exchangeContracts).forEach(([key, contract]) => {
|
|
27326
27353
|
if (!isValidNonZeroAddress(contract)) {
|
|
27327
27354
|
throw new InvalidConfigurationError(`Invalid exchange contract address for ${key}`);
|
|
27328
27355
|
}
|
|
27329
27356
|
});
|
|
27357
|
+
if (!overrides.secondaryFees) {
|
|
27358
|
+
return;
|
|
27359
|
+
}
|
|
27360
|
+
for (const secondaryFee of overrides.secondaryFees) {
|
|
27361
|
+
if (!isValidNonZeroAddress(secondaryFee.feeRecipient)) {
|
|
27362
|
+
throw new InvalidConfigurationError(`Invalid secondary fee recipient address: ${secondaryFee.feeRecipient}`);
|
|
27363
|
+
}
|
|
27364
|
+
if (secondaryFee.feeBasisPoints < 0 || secondaryFee.feeBasisPoints > 10000) {
|
|
27365
|
+
throw new InvalidConfigurationError(`Invalid secondary fee percentage: ${secondaryFee.feeBasisPoints}`);
|
|
27366
|
+
}
|
|
27367
|
+
}
|
|
27330
27368
|
}
|
|
27331
27369
|
/**
|
|
27332
27370
|
* {@link ExchangeConfiguration} is used to configure the {@link Exchange} class.
|
|
@@ -27336,6 +27374,7 @@ function validateOverrides(overrides) {
|
|
|
27336
27374
|
class ExchangeConfiguration {
|
|
27337
27375
|
baseConfig;
|
|
27338
27376
|
chain;
|
|
27377
|
+
secondaryFees;
|
|
27339
27378
|
constructor({ chainId, baseConfig, overrides }) {
|
|
27340
27379
|
this.baseConfig = baseConfig;
|
|
27341
27380
|
if (overrides) {
|
|
@@ -27347,8 +27386,10 @@ class ExchangeConfiguration {
|
|
|
27347
27386
|
commonRoutingTokens: overrides.commonRoutingTokens,
|
|
27348
27387
|
nativeToken: overrides.nativeToken,
|
|
27349
27388
|
};
|
|
27389
|
+
this.secondaryFees = overrides.secondaryFees ? overrides.secondaryFees : [];
|
|
27350
27390
|
return;
|
|
27351
27391
|
}
|
|
27392
|
+
this.secondaryFees = [];
|
|
27352
27393
|
const chain = SUPPORTED_CHAIN_IDS_FOR_ENVIRONMENT[baseConfig.environment][chainId];
|
|
27353
27394
|
if (!chain) {
|
|
27354
27395
|
throw new ChainNotSupportedError(chainId, baseConfig.environment);
|
|
@@ -27362,11 +27403,13 @@ class Exchange {
|
|
|
27362
27403
|
router;
|
|
27363
27404
|
chainId;
|
|
27364
27405
|
nativeToken;
|
|
27406
|
+
secondaryFees;
|
|
27365
27407
|
constructor(configuration) {
|
|
27366
27408
|
const config = new ExchangeConfiguration(configuration);
|
|
27367
27409
|
this.chainId = config.chain.chainId;
|
|
27368
27410
|
this.nativeToken = config.chain.nativeToken;
|
|
27369
27411
|
this.provider = new ethers.providers.JsonRpcProvider(config.chain.rpcUrl);
|
|
27412
|
+
this.secondaryFees = config.secondaryFees;
|
|
27370
27413
|
this.router = new Router(this.provider, config.chain.commonRoutingTokens, {
|
|
27371
27414
|
multicallAddress: config.chain.contracts.multicall,
|
|
27372
27415
|
factoryAddress: config.chain.contracts.coreFactory,
|
|
@@ -27449,6 +27492,9 @@ class Exchange {
|
|
|
27449
27492
|
async getUnsignedSwapTxFromAmountOut(fromAddress, tokenInAddress, tokenOutAddress, amountOut, slippagePercent = DEFAULT_SLIPPAGE, maxHops = DEFAULT_MAX_HOPS, deadline = DEFAULT_DEADLINE) {
|
|
27450
27493
|
return await this.getUnsignedSwapTx(fromAddress, tokenInAddress, tokenOutAddress, amountOut, slippagePercent, maxHops, deadline, TradeType.EXACT_OUTPUT);
|
|
27451
27494
|
}
|
|
27495
|
+
thereAreSecondaryFees() {
|
|
27496
|
+
return this.secondaryFees.length > 0;
|
|
27497
|
+
}
|
|
27452
27498
|
}
|
|
27453
27499
|
|
|
27454
27500
|
/* eslint-disable class-methods-use-this */
|
|
@@ -28572,7 +28618,7 @@ class $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 {
|
|
|
28572
28618
|
function $parcel$export(e, n, v, s) {
|
|
28573
28619
|
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
28574
28620
|
}
|
|
28575
|
-
const $d663162fd5a0853f$export$38a083d9fb5551ca = "0.3.0-alpha.
|
|
28621
|
+
const $d663162fd5a0853f$export$38a083d9fb5551ca = "0.3.0-alpha.3";
|
|
28576
28622
|
const $d663162fd5a0853f$export$83bf90b30cdfd29f = ()=>false;
|
|
28577
28623
|
const $d663162fd5a0853f$export$1169f5475725171b = ()=>$d663162fd5a0853f$export$38a083d9fb5551ca;
|
|
28578
28624
|
|
|
@@ -30371,4 +30417,4 @@ class ERC721PermissionedMintable {
|
|
|
30371
30417
|
}
|
|
30372
30418
|
}
|
|
30373
30419
|
|
|
30374
|
-
export { APIError, BlockchainData, $15cc9e120aa6f3bf$export$d1bfa21f7c76447a as BridgeEventType, $1f969328e5988c99$export$30f61ebf204c69f6 as BridgeReact, $d85ad1457a3f1a83$export$161d4a74df65fc08 as CHECKOUT_API_BASE_URL, $0472f23319457bfb$export$c06e1e7429de6283 as ChainId, $0472f23319457bfb$export$b874c6b1dfe85e02 as ChainName, $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 as Checkout, $a8bc256d81a5e2c1$export$e3dc0620abde7f5a as CheckoutErrorType, $045213b18e9f1f94$export$75be0f6af9650f2c as CheckoutWidgetTagNames, $430e3eda76fa4d5f$export$af210a0808087845 as CheckoutWidgets, $a85ecdbd885c58ad$export$e72e7f9969a47dd3 as ConnectEventType, $f2083cd30e2f5c56$export$49d62957f420a1e2 as ConnectReact, ERC20, ERC721PermissionedMintable, Environment$1 as Environment, $de275b98d2b651c3$export$788b1fd17f3dad84 as GasEstimateType, GenericIMXProvider, $207ed853f11d19d5$export$5a0ace85cae72d45 as IMTBLWidgetEvents, ImmutableConfiguration, ImmutableXClient, MetaMaskIMXProvider, $a47e48dd2c04791b$export$1f05a55fe0680cc7 as NetworkFilterTypes, Networks, $ad06b030b1a3ba34$export$b80d2daf830437b9 as OrchestrationEventType, Orderbook, Passport, PassportError, ProviderConfiguration, $53d219e7f6bf0cd6$export$140a49745ab55563 as SwapEventType, $a4fbb8e3a6aeff58$export$971e031379577f4 as SwapReact, $08d5ddc39acd6833$export$fd9b17d87f4121d2 as TokenFilterTypes, $430e3eda76fa4d5f$export$bf1548ba7e61c17f as UpdateConfig, $77b6aac5c353d4a9$export$d9be06b70b28c742 as WalletEventType, $4f91c5f280efe242$export$a75605c67ea83a5a as WalletFilterTypes, $e768639828688ca3$export$2d7a51a18d87e21d as WalletProviderName, $89d55ace0f8f1c07$export$ceaac94f34dba154 as WalletReact, $045213b18e9f1f94$export$c88931fdc51854eb as WidgetTheme, module };
|
|
30420
|
+
export { APIError, BlockchainData, $15cc9e120aa6f3bf$export$d1bfa21f7c76447a as BridgeEventType, $1f969328e5988c99$export$30f61ebf204c69f6 as BridgeReact, $d85ad1457a3f1a83$export$161d4a74df65fc08 as CHECKOUT_API_BASE_URL, $0472f23319457bfb$export$c06e1e7429de6283 as ChainId, $0472f23319457bfb$export$b874c6b1dfe85e02 as ChainName, $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 as Checkout, $a8bc256d81a5e2c1$export$e3dc0620abde7f5a as CheckoutErrorType, $045213b18e9f1f94$export$75be0f6af9650f2c as CheckoutWidgetTagNames, $430e3eda76fa4d5f$export$af210a0808087845 as CheckoutWidgets, $a85ecdbd885c58ad$export$e72e7f9969a47dd3 as ConnectEventType, $f2083cd30e2f5c56$export$49d62957f420a1e2 as ConnectReact, ERC20, ERC721PermissionedMintable, Environment$1 as Environment, $de275b98d2b651c3$export$788b1fd17f3dad84 as GasEstimateType, GenericIMXProvider, $207ed853f11d19d5$export$5a0ace85cae72d45 as IMTBLWidgetEvents, ImmutableConfiguration, ImmutableXClient, JsonRpcError, MetaMaskIMXProvider, $a47e48dd2c04791b$export$1f05a55fe0680cc7 as NetworkFilterTypes, Networks, $ad06b030b1a3ba34$export$b80d2daf830437b9 as OrchestrationEventType, Orderbook, Passport, PassportError, ProviderConfiguration, ProviderErrorCode, ProviderEventNames, RpcErrorCode, $53d219e7f6bf0cd6$export$140a49745ab55563 as SwapEventType, $a4fbb8e3a6aeff58$export$971e031379577f4 as SwapReact, $08d5ddc39acd6833$export$fd9b17d87f4121d2 as TokenFilterTypes, $430e3eda76fa4d5f$export$bf1548ba7e61c17f as UpdateConfig, $77b6aac5c353d4a9$export$d9be06b70b28c742 as WalletEventType, $4f91c5f280efe242$export$a75605c67ea83a5a as WalletFilterTypes, $e768639828688ca3$export$2d7a51a18d87e21d as WalletProviderName, $89d55ace0f8f1c07$export$ceaac94f34dba154 as WalletReact, $045213b18e9f1f94$export$c88931fdc51854eb as WidgetTheme, module };
|
package/dist/passport.d.ts
CHANGED
|
@@ -10509,19 +10509,27 @@ type DeviceTokenResponse = {
|
|
|
10509
10509
|
expires_in: number;
|
|
10510
10510
|
};
|
|
10511
10511
|
|
|
10512
|
+
/**
|
|
10513
|
+
* ProviderErrors should take priority over RpcErrorCodes
|
|
10514
|
+
*/
|
|
10515
|
+
declare enum ProviderErrorCode {
|
|
10516
|
+
USER_REJECTED_REQUEST = 4001,
|
|
10517
|
+
UNAUTHORIZED = 4100,
|
|
10518
|
+
UNSUPPORTED_METHOD = 4200,
|
|
10519
|
+
DISCONNECTED = 4900
|
|
10520
|
+
}
|
|
10512
10521
|
declare enum RpcErrorCode {
|
|
10513
10522
|
RPC_SERVER_ERROR = -32000,
|
|
10514
10523
|
INVALID_REQUEST = -32600,
|
|
10515
10524
|
METHOD_NOT_FOUND = -32601,
|
|
10516
10525
|
INVALID_PARAMS = -32602,
|
|
10517
10526
|
INTERNAL_ERROR = -32603,
|
|
10518
|
-
UNAUTHORIZED = -32604,
|
|
10519
10527
|
PARSE_ERROR = -32700
|
|
10520
10528
|
}
|
|
10521
10529
|
declare class JsonRpcError extends Error {
|
|
10522
10530
|
readonly message: string;
|
|
10523
|
-
readonly code: RpcErrorCode;
|
|
10524
|
-
constructor(code: RpcErrorCode, message: string);
|
|
10531
|
+
readonly code: ProviderErrorCode | RpcErrorCode;
|
|
10532
|
+
constructor(code: ProviderErrorCode | RpcErrorCode, message: string);
|
|
10525
10533
|
}
|
|
10526
10534
|
|
|
10527
10535
|
interface RequestArguments {
|
|
@@ -10545,7 +10553,13 @@ type Provider = {
|
|
|
10545
10553
|
request: (request: RequestArguments) => Promise<any>;
|
|
10546
10554
|
sendAsync: (request: JsonRpcRequestPayload | JsonRpcRequestPayload[], callback: JsonRpcRequestCallback) => void;
|
|
10547
10555
|
send: (request: string | JsonRpcRequestPayload | JsonRpcRequestPayload[], callbackOrParams?: JsonRpcRequestCallback | Array<any>, callback?: JsonRpcRequestCallback) => void;
|
|
10556
|
+
on: (event: string, listener: (...args: any[]) => void) => void;
|
|
10557
|
+
removeListener: (event: string, listener: (...args: any[]) => void) => void;
|
|
10548
10558
|
};
|
|
10559
|
+
declare enum ProviderEventNames {
|
|
10560
|
+
ACCOUNTS_CHANGED = "accountsChanged"
|
|
10561
|
+
}
|
|
10562
|
+
type AccountsChangedEvent = Array<string>;
|
|
10549
10563
|
|
|
10550
10564
|
declare class Passport {
|
|
10551
10565
|
private readonly authManager;
|
|
@@ -10580,4 +10594,4 @@ declare class Passport {
|
|
|
10580
10594
|
getAccessToken(): Promise<string | undefined>;
|
|
10581
10595
|
}
|
|
10582
10596
|
|
|
10583
|
-
export { DeviceConnectResponse, DeviceTokenResponse, JsonRpcRequestCallback, JsonRpcRequestPayload, JsonRpcResponsePayload, Networks, Passport, PassportError, PassportModuleConfiguration, PassportOverrides, Provider, RequestArguments, UserProfile };
|
|
10597
|
+
export { AccountsChangedEvent, DeviceConnectResponse, DeviceTokenResponse, JsonRpcError, JsonRpcRequestCallback, JsonRpcRequestPayload, JsonRpcResponsePayload, Networks, Passport, PassportError, PassportModuleConfiguration, PassportOverrides, Provider, ProviderErrorCode, ProviderEventNames, RequestArguments, RpcErrorCode, UserProfile };
|
package/dist/passport.js
CHANGED
|
@@ -10,6 +10,7 @@ import { Web3Provider, JsonRpcProvider } from '@ethersproject/providers';
|
|
|
10
10
|
import { ethers, BigNumber } from 'ethers';
|
|
11
11
|
import { walletContracts } from '@0xsequence/abi';
|
|
12
12
|
import { encodeSignature } from '@0xsequence/config';
|
|
13
|
+
import { EventEmitter } from 'events';
|
|
13
14
|
|
|
14
15
|
function bind$1(fn, thisArg) {
|
|
15
16
|
return function wrap() {
|
|
@@ -4606,7 +4607,7 @@ class MultiRollupApiClients {
|
|
|
4606
4607
|
}
|
|
4607
4608
|
|
|
4608
4609
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4609
|
-
const defaultHeaders = { 'x-sdk-version': 'ts-immutable-sdk-0.3.0-alpha.
|
|
4610
|
+
const defaultHeaders = { 'x-sdk-version': 'ts-immutable-sdk-0.3.0-alpha.3' };
|
|
4610
4611
|
const createConfig = ({ basePath, headers, }) => {
|
|
4611
4612
|
if (!basePath.trim()) {
|
|
4612
4613
|
throw Error('basePath can not be empty');
|
|
@@ -4662,7 +4663,7 @@ const createImmutableXConfiguration = ({ basePath, chainID, coreContractAddress,
|
|
|
4662
4663
|
chainID,
|
|
4663
4664
|
coreContractAddress,
|
|
4664
4665
|
registrationContractAddress,
|
|
4665
|
-
sdkVersion: 'ts-immutable-sdk-0.3.0-alpha.
|
|
4666
|
+
sdkVersion: 'ts-immutable-sdk-0.3.0-alpha.3',
|
|
4666
4667
|
});
|
|
4667
4668
|
/**
|
|
4668
4669
|
* Sets `sdkVersion` at the time of build
|
|
@@ -10092,7 +10093,7 @@ function digestOfTransactionsAndNonce(nonce, normalisedTransactions) {
|
|
|
10092
10093
|
return ethers.utils.keccak256(packMetaTransactionsNonceData);
|
|
10093
10094
|
}
|
|
10094
10095
|
const getNonce = async (jsonRpcProvider, smartContractWalletAddress) => {
|
|
10095
|
-
const code = await jsonRpcProvider.send('eth_getCode', [smartContractWalletAddress]);
|
|
10096
|
+
const code = await jsonRpcProvider.send('eth_getCode', [smartContractWalletAddress, 'latest']);
|
|
10096
10097
|
if (code && code !== '0x') {
|
|
10097
10098
|
const contract = new ethers.Contract(smartContractWalletAddress, walletContracts.mainModule.abi, jsonRpcProvider);
|
|
10098
10099
|
return contract.nonce();
|
|
@@ -10143,7 +10144,21 @@ var RelayerTransactionStatus;
|
|
|
10143
10144
|
RelayerTransactionStatus["REVERTED"] = "REVERTED";
|
|
10144
10145
|
RelayerTransactionStatus["FAILED"] = "FAILED";
|
|
10145
10146
|
})(RelayerTransactionStatus || (RelayerTransactionStatus = {}));
|
|
10147
|
+
var ProviderEventNames;
|
|
10148
|
+
(function (ProviderEventNames) {
|
|
10149
|
+
ProviderEventNames["ACCOUNTS_CHANGED"] = "accountsChanged";
|
|
10150
|
+
})(ProviderEventNames || (ProviderEventNames = {}));
|
|
10146
10151
|
|
|
10152
|
+
/**
|
|
10153
|
+
* ProviderErrors should take priority over RpcErrorCodes
|
|
10154
|
+
*/
|
|
10155
|
+
var ProviderErrorCode;
|
|
10156
|
+
(function (ProviderErrorCode) {
|
|
10157
|
+
ProviderErrorCode[ProviderErrorCode["USER_REJECTED_REQUEST"] = 4001] = "USER_REJECTED_REQUEST";
|
|
10158
|
+
ProviderErrorCode[ProviderErrorCode["UNAUTHORIZED"] = 4100] = "UNAUTHORIZED";
|
|
10159
|
+
ProviderErrorCode[ProviderErrorCode["UNSUPPORTED_METHOD"] = 4200] = "UNSUPPORTED_METHOD";
|
|
10160
|
+
ProviderErrorCode[ProviderErrorCode["DISCONNECTED"] = 4900] = "DISCONNECTED";
|
|
10161
|
+
})(ProviderErrorCode || (ProviderErrorCode = {}));
|
|
10147
10162
|
var RpcErrorCode;
|
|
10148
10163
|
(function (RpcErrorCode) {
|
|
10149
10164
|
RpcErrorCode[RpcErrorCode["RPC_SERVER_ERROR"] = -32000] = "RPC_SERVER_ERROR";
|
|
@@ -10151,7 +10166,6 @@ var RpcErrorCode;
|
|
|
10151
10166
|
RpcErrorCode[RpcErrorCode["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
|
|
10152
10167
|
RpcErrorCode[RpcErrorCode["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
|
|
10153
10168
|
RpcErrorCode[RpcErrorCode["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
|
|
10154
|
-
RpcErrorCode[RpcErrorCode["UNAUTHORIZED"] = -32604] = "UNAUTHORIZED";
|
|
10155
10169
|
RpcErrorCode[RpcErrorCode["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
|
|
10156
10170
|
})(RpcErrorCode || (RpcErrorCode = {}));
|
|
10157
10171
|
class JsonRpcError extends Error {
|
|
@@ -10166,7 +10180,7 @@ class JsonRpcError extends Error {
|
|
|
10166
10180
|
|
|
10167
10181
|
const MAX_TRANSACTION_HASH_RETRIEVAL_RETRIES = 30;
|
|
10168
10182
|
const TRANSACTION_HASH_RETRIEVAL_WAIT = 1000;
|
|
10169
|
-
const
|
|
10183
|
+
const sendTransaction = async ({ params, magicProvider, jsonRpcProvider, relayerClient, config, user, }) => {
|
|
10170
10184
|
const transactionRequest = params[0];
|
|
10171
10185
|
if (!transactionRequest.to) {
|
|
10172
10186
|
throw new JsonRpcError(RpcErrorCode.INVALID_PARAMS, 'eth_sendTransaction requires a "to" field');
|
|
@@ -10231,6 +10245,19 @@ const ethSendTransaction = async ({ params, magicProvider, jsonRpcProvider, rela
|
|
|
10231
10245
|
return relayerTransaction.hash;
|
|
10232
10246
|
};
|
|
10233
10247
|
|
|
10248
|
+
class TypedEventEmitter {
|
|
10249
|
+
emitter = new EventEmitter();
|
|
10250
|
+
emit(eventName, ...eventArg) {
|
|
10251
|
+
this.emitter.emit(eventName, ...eventArg);
|
|
10252
|
+
}
|
|
10253
|
+
on(eventName, handler) {
|
|
10254
|
+
this.emitter.on(eventName, handler);
|
|
10255
|
+
}
|
|
10256
|
+
removeListener(eventName, handler) {
|
|
10257
|
+
this.emitter.removeListener(eventName, handler);
|
|
10258
|
+
}
|
|
10259
|
+
}
|
|
10260
|
+
|
|
10234
10261
|
class RelayerClient {
|
|
10235
10262
|
config;
|
|
10236
10263
|
constructor({ config }) {
|
|
@@ -10290,7 +10317,7 @@ class RelayerClient {
|
|
|
10290
10317
|
}
|
|
10291
10318
|
|
|
10292
10319
|
const MESSAGE_TO_SIGN = 'Only sign this message from Immutable Passport';
|
|
10293
|
-
async function
|
|
10320
|
+
async function registerZkEvmUser({ authManager, magicProvider, multiRollupApiClients, accessToken, }) {
|
|
10294
10321
|
const web3Provider = new Web3Provider(magicProvider);
|
|
10295
10322
|
const ethSigner = web3Provider.getSigner();
|
|
10296
10323
|
const ethereumAddress = await ethSigner.getAddress();
|
|
@@ -10314,7 +10341,7 @@ async function createCounterfactualAddress({ authManager, magicProvider, multiRo
|
|
|
10314
10341
|
return user;
|
|
10315
10342
|
}
|
|
10316
10343
|
|
|
10317
|
-
const
|
|
10344
|
+
const loginZkEvmUser = async ({ authManager, config, magicAdapter, multiRollupApiClients, }) => {
|
|
10318
10345
|
const user = await authManager.getUser() || await authManager.login();
|
|
10319
10346
|
if (!user.idToken) {
|
|
10320
10347
|
throw new Error('User is missing idToken');
|
|
@@ -10322,7 +10349,7 @@ const registerZkEvmUser = async ({ authManager, config, magicAdapter, multiRollu
|
|
|
10322
10349
|
const magicProvider = await magicAdapter.login(user.idToken, config.network);
|
|
10323
10350
|
if (!user.zkEvm) {
|
|
10324
10351
|
// Generate counterfactual address and retrieve updated Auth0 user
|
|
10325
|
-
const userZkevm = await
|
|
10352
|
+
const userZkevm = await registerZkEvmUser({
|
|
10326
10353
|
authManager,
|
|
10327
10354
|
magicProvider,
|
|
10328
10355
|
multiRollupApiClients,
|
|
@@ -10339,7 +10366,7 @@ const registerZkEvmUser = async ({ authManager, config, magicAdapter, multiRollu
|
|
|
10339
10366
|
};
|
|
10340
10367
|
};
|
|
10341
10368
|
|
|
10342
|
-
class ZkEvmProvider {
|
|
10369
|
+
class ZkEvmProvider extends TypedEventEmitter {
|
|
10343
10370
|
authManager;
|
|
10344
10371
|
config;
|
|
10345
10372
|
confirmationScreen;
|
|
@@ -10350,6 +10377,7 @@ class ZkEvmProvider {
|
|
|
10350
10377
|
magicProvider; // Used for signing
|
|
10351
10378
|
user;
|
|
10352
10379
|
constructor({ authManager, magicAdapter, config, confirmationScreen, multiRollupApiClients, }) {
|
|
10380
|
+
super();
|
|
10353
10381
|
this.authManager = authManager;
|
|
10354
10382
|
this.magicAdapter = magicAdapter;
|
|
10355
10383
|
this.config = config;
|
|
@@ -10362,25 +10390,12 @@ class ZkEvmProvider {
|
|
|
10362
10390
|
return this.magicProvider !== undefined && this.user !== undefined;
|
|
10363
10391
|
}
|
|
10364
10392
|
async performRequest(request) {
|
|
10365
|
-
const authWrapper = (fn) => {
|
|
10366
|
-
if (!this.isLoggedIn()) {
|
|
10367
|
-
throw new JsonRpcError(RpcErrorCode.UNAUTHORIZED, 'Unauthorised - call eth_requestAccounts first');
|
|
10368
|
-
}
|
|
10369
|
-
return fn({
|
|
10370
|
-
params: request.params || [],
|
|
10371
|
-
magicProvider: this.magicProvider,
|
|
10372
|
-
jsonRpcProvider: this.jsonRpcProvider,
|
|
10373
|
-
config: this.config,
|
|
10374
|
-
relayerClient: this.relayerClient,
|
|
10375
|
-
user: this.user,
|
|
10376
|
-
});
|
|
10377
|
-
};
|
|
10378
10393
|
switch (request.method) {
|
|
10379
10394
|
case 'eth_requestAccounts': {
|
|
10380
10395
|
if (this.isLoggedIn()) {
|
|
10381
10396
|
return [this.user.zkEvm.ethAddress];
|
|
10382
10397
|
}
|
|
10383
|
-
const { magicProvider, user } = await
|
|
10398
|
+
const { magicProvider, user } = await loginZkEvmUser({
|
|
10384
10399
|
authManager: this.authManager,
|
|
10385
10400
|
config: this.config,
|
|
10386
10401
|
magicAdapter: this.magicAdapter,
|
|
@@ -10388,10 +10403,21 @@ class ZkEvmProvider {
|
|
|
10388
10403
|
});
|
|
10389
10404
|
this.user = user;
|
|
10390
10405
|
this.magicProvider = magicProvider;
|
|
10406
|
+
this.emit(ProviderEventNames.ACCOUNTS_CHANGED, [this.user.zkEvm.ethAddress]);
|
|
10391
10407
|
return [this.user.zkEvm.ethAddress];
|
|
10392
10408
|
}
|
|
10393
10409
|
case 'eth_sendTransaction': {
|
|
10394
|
-
|
|
10410
|
+
if (!this.isLoggedIn()) {
|
|
10411
|
+
throw new JsonRpcError(ProviderErrorCode.UNAUTHORIZED, 'Unauthorised - call eth_requestAccounts first');
|
|
10412
|
+
}
|
|
10413
|
+
return sendTransaction({
|
|
10414
|
+
params: request.params || [],
|
|
10415
|
+
magicProvider: this.magicProvider,
|
|
10416
|
+
jsonRpcProvider: this.jsonRpcProvider,
|
|
10417
|
+
config: this.config,
|
|
10418
|
+
relayerClient: this.relayerClient,
|
|
10419
|
+
user: this.user,
|
|
10420
|
+
});
|
|
10395
10421
|
}
|
|
10396
10422
|
case 'eth_accounts': {
|
|
10397
10423
|
return this.isLoggedIn() ? [this.user.zkEvm.ethAddress] : [];
|
|
@@ -10412,7 +10438,7 @@ class ZkEvmProvider {
|
|
|
10412
10438
|
return this.jsonRpcProvider.send(request.method, request.params || []);
|
|
10413
10439
|
}
|
|
10414
10440
|
default: {
|
|
10415
|
-
throw new JsonRpcError(
|
|
10441
|
+
throw new JsonRpcError(ProviderErrorCode.UNSUPPORTED_METHOD, 'Method not supported');
|
|
10416
10442
|
}
|
|
10417
10443
|
}
|
|
10418
10444
|
}
|
|
@@ -10599,4 +10625,4 @@ class Passport {
|
|
|
10599
10625
|
}
|
|
10600
10626
|
}
|
|
10601
10627
|
|
|
10602
|
-
export { Networks, Passport, PassportError };
|
|
10628
|
+
export { JsonRpcError, Networks, Passport, PassportError, ProviderErrorCode, ProviderEventNames, RpcErrorCode };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imtbl/sdk",
|
|
3
3
|
"description": "Immutable Unified SDK",
|
|
4
|
-
"version": "0.3.0-alpha.
|
|
4
|
+
"version": "0.3.0-alpha.3",
|
|
5
5
|
"author": "Immutable",
|
|
6
6
|
"browser": "./dist/index.browser.js",
|
|
7
7
|
"bugs": "https://github.com/immutable/ts-immutable-sdk/issues",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"@jest/globals": "^29.5.0",
|
|
16
16
|
"@magic-ext/oidc": "^1.0.1",
|
|
17
17
|
"@metamask/detect-provider": "^2.0.0",
|
|
18
|
-
"@opensea/seaport-js": "
|
|
18
|
+
"@opensea/seaport-js": "2.0.5",
|
|
19
19
|
"@uniswap/router-sdk": "^1.4.0",
|
|
20
20
|
"@uniswap/sdk-core": "^3.0.1",
|
|
21
21
|
"@uniswap/v3-sdk": "^3.9.0",
|