@imtbl/sdk 1.43.5 → 1.43.6
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-b707cdfe.js +1 -0
- package/dist/blockchain_data.js +1 -1
- package/dist/browser/checkout/sdk.js +4 -4
- package/dist/{checkout-835624fb.js → checkout-2b3fb1c2.js} +2 -2
- package/dist/{checkout.d-ae9ca847.d.ts → checkout.d-7613e722.d.ts} +5 -0
- package/dist/checkout.d.ts +1 -1
- package/dist/checkout.js +1 -1
- package/dist/{config-e6decb95.js → config-85c79b7b.js} +1 -1
- package/dist/config.js +1 -1
- package/dist/{index-cfadae12.js → index-1465defe.js} +1 -1
- package/dist/{index-974c422d.js → index-3379fae3.js} +1 -1
- package/dist/{index-7d2761cb.js → index-79a47cb5.js} +1 -1
- package/dist/{index-3c4d20df.js → index-8891a569.js} +1 -1
- package/dist/{index-d7b7aff9.js → index-c6873334.js} +1 -1
- package/dist/{index-1ff17202.js → index-db991a0e.js} +1 -1
- package/dist/index.browser.js +4 -4
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs +12 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{minting_backend-10ddbfd1.js → minting_backend-e41ac518.js} +1 -1
- package/dist/minting_backend.js +1 -1
- package/dist/{orderbook-10fe79b7.js → orderbook-0f158b43.js} +1 -1
- package/dist/orderbook.js +1 -1
- package/dist/{passport-e96a6719.js → passport-5ce49992.js} +1 -1
- package/dist/passport.js +1 -1
- package/dist/webhook-acd3b92c.js +1 -0
- package/dist/webhook.js +1 -1
- package/dist/{x-7dcaea97.js → x-95ef888b.js} +1 -1
- package/dist/x.js +1 -1
- package/package.json +1 -1
- package/dist/blockchain_data-08e66ad1.js +0 -1
- package/dist/webhook-8b165b7a.js +0 -1
package/dist/passport.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{J as JsonRpcError,P as Passport,a as PassportError,b as ProviderErrorCode,c as ProviderEvent,R as RpcErrorCode}from"./passport-
|
|
1
|
+
export{J as JsonRpcError,P as Passport,a as PassportError,b as ProviderErrorCode,c as ProviderEvent,R as RpcErrorCode}from"./passport-5ce49992.js";import"axios";import"./index-8891a569.js";import"./index-3379fae3.js";import"./index-1465defe.js";import"lru-memorise";import"global-const";import"@ethersproject/keccak256";import"@ethersproject/strings";import"bn.js";import"enc-utils";import"ethers";import"@ethersproject/bytes";import"hash.js";import"elliptic";import"ethereumjs-wallet";import"assert";import"@ethersproject/abstract-signer";import"oidc-client-ts";import"crypto";import"jwt-decode";import"magic-sdk";import"@magic-ext/oidc";import"@ethersproject/providers";import"events";import"@0xsequence/abi";import"@0xsequence/core";import"uuid";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{h as e}from"./index-c6873334.js";var r=Object.freeze({__proto__:null,handle:e});export{r as w};
|
package/dist/webhook.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{h as handle}from"./index-
|
|
1
|
+
export{h as handle}from"./index-c6873334.js";import"sns-validator";import"./index-1465defe.js";import"axios";import"lru-memorise";import"global-const";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as e,c as t,s as a,e as n,a as s,E as i,M as r,b as o,A as d,d as c,B as u,C as g,D as _,f as l,g as f,h as m,i as w,j as p,k as h,l as C,N as E,O as k,P as y,m as A,T as S,n as b,o as T,U as R,W as N,p as I,q as v,r as O,t as x,u as X,v as P,w as M,x as q,y as L,z as D}from"./index-974c422d.js";import{b as V}from"./index-3c4d20df.js";import{isAxiosError as W}from"axios";import*as U from"enc-utils";import{parseUnits as G}from"@ethersproject/units";import{BigNumber as B}from"@ethersproject/bignumber";import{ethers as K}from"ethers";import Q from"@metamask/detect-provider";import{E as H,I as j}from"./index-cfadae12.js";import{Signer as Y}from"@ethersproject/abstract-signer";async function Z(e,t){if(!function(e,t){return e===t.ethConfiguration.chainID}(await e.getChainId(),t))throw new Error("The wallet used for this operation is not connected to the correct network.")}async function $(e,t,a){await Z(t,a.immutableXConfig);const s=a.immutableXConfig,i=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,t);try{return await i.isRegistered(e)}catch(e){if("USER_UNREGISTERED"===e.reason)return!1;throw e}}const z=e=>{if(void 0!==e)return e;throw new Error("undefined field exception")};async function F(e,t,a,n){const s=new V.EncodingApi(a.apiConfiguration);return(await s.encodeAsset({assetType:e,encodeAssetRequest:{token:{type:t,...n&&{data:n}}}})).data}async function J(e,t,a,s){return n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e).getWithdrawalBalance(t,a)}async function ee(e,t,a,n,s,i){switch(a.type){case"ETH":return await async function(e,t,a){const n=await F("asset","ETH",a);return await J(e,t,n.asset_id,a)}(e,t,i);case"ERC20":return await async function(e,t,a,n){const s=await F("asset","ERC20",n,{token_address:a});return await J(e,t,s.asset_id,n)}(e,t,a.tokenAddress,i);case"ERC721":return await async function(e,t,a,n,s,i){try{const n=await s.getMintableTokenDetailsByClientTokenId({tokenAddress:a.tokenAddress,tokenId:a.tokenId}),r=await F("mintable-asset","ERC721",i,{id:a.tokenId,token_address:a.tokenAddress,...n.data.blueprint&&{blueprint:n.data.blueprint}});return await J(e,t,r.asset_id,i)}catch(n){if(404===n.response?.status){const n=await F("asset","ERC721",i,{token_id:a.tokenId,token_address:a.tokenAddress});return await J(e,t,n.asset_id,i)}throw n}}(e,t,a,0,s,i);default:throw new Error("Unsupported token type")}}async function te(e,t,a,n,s){new i(s.apiConfiguration);const o=new r(s.apiConfiguration);return{v3Balance:await ee(e,t,n,0,o,s),v4Balance:await ee(e,a,n,0,o,s)}}const ae="ERC20";async function ne(e,t,a,s,i){const r=await e.getAddress(),d=await o(t,r,a),c=n.RegistrationV4.connect(i.ethConfiguration.registrationV4ContractAddress||i.ethConfiguration.registrationContractAddress,e),u=await c.populateTransaction.registerAndWithdrawAll(r,a,d,s);return e.sendTransaction(u)}async function se(e,t,a,s){const i=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,e),r=await i.populateTransaction.withdrawAll(await e.getAddress(),t,a);return e.sendTransaction(r)}async function ie(e,t,a,s){const i=n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e),r=await i.populateTransaction.withdraw(await e.getAddress(),a);return e.sendTransaction(r)}const re="ERC721";function oe(e){const{id:t}=e.data,a=e.data.blueprint||"";return U.sanitizeHex(U.utf8ToHex(`{${t}}:{${a}}`))}async function de(e,t,a,s,i){return e.getMintableTokenDetailsByClientTokenId({tokenAddress:s.tokenAddress,tokenId:s.tokenId}).then((e=>async function(e,t,a,s){const i=await e.getAddress(),r=await t.getAddress(),d=await F("mintable-asset",re,s,{id:a.data.id,token_address:a.data.tokenAddress,...a.data.blueprint&&{blueprint:a.data.blueprint}}),c=oe(a),u=await o(t,i,r),g=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,e),_=await g.populateTransaction.registerWithdrawAndMint(i,r,u,d.asset_type,c);return e.sendTransaction(_)}(t,a,{type:re,data:{id:s.tokenId,tokenAddress:s.tokenAddress,blueprint:e.data.blueprint}},i))).catch((e=>{if(404===e.response?.status)return async function(e,t,a,s){const i=await e.getAddress(),r=await t.getAddress(),d=await F("asset",re,s,{token_id:a.tokenId,token_address:a.tokenAddress}),c=await o(t,i,r),u=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,e),g=await u.populateTransaction.registerAndWithdrawNft(i,r,c,d.asset_type,a.tokenId);return e.sendTransaction(g)}(t,a,s,i);throw e}))}async function ce(e,t,a,s,i){return e.getMintableTokenDetailsByClientTokenId({tokenAddress:s.tokenAddress,tokenId:s.tokenId}).then((e=>async function(e,t,a,s){const i=await F("mintable-asset",re,s,{id:a.data.id,token_address:a.data.tokenAddress,...a.data.blueprint&&{blueprint:a.data.blueprint}}),r=oe(a),o=n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e),d=await o.populateTransaction.withdrawAndMint(t,i.asset_type,r);return e.sendTransaction(d)}(t,a,{type:re,data:{id:s.tokenId,tokenAddress:s.tokenAddress,blueprint:e.data.blueprint}},i))).catch((e=>{if(404===e.response?.status)return async function(e,t,a,s){const i=await F("asset",re,s,{token_id:a.tokenId,token_address:a.tokenAddress}),r=n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e),o=await r.populateTransaction.withdrawNft(t,i.asset_type,a.tokenId);return e.sendTransaction(o)}(t,a,s,i);throw e}))}async function ue({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s},r){await Z(e,s.immutableXConfig);const o=await e.getAddress(),{v3Balance:d,v4Balance:c}=await async function(e,t,a,n,s,r){return new i(s.apiConfiguration),{v3Balance:await ee(e,t,n,0,r,s),v4Balance:await ee(e,a,n,0,r,s)}}(e,a,o,{type:re,tokenAddress:n.tokenAddress,tokenId:n.tokenId},s.immutableXConfig,r);if(!d.isZero()&&!d.isNegative()){return await $(a,e,s)?ce(r,e,a,n,s.immutableXConfig):de(r,e,t,n,s.immutableXConfig)}if(!c.isZero()&&!c.isNegative())return ce(r,e,o,n,s.immutableXConfig);throw new Error("No balance to withdraw")}const ge="ETH";async function _e({signers:e,withdrawal:a,config:n}){const i=new V.WithdrawalsApi(n.immutableXConfig.apiConfiguration);return async function(e,a){const{signers:{ethSigner:n,starkSigner:i}}=e;await Z(n,e.config);const r="ERC721"===e.type?"1":e.amount,o=await a.getSignableWithdrawalV2({getSignableWithdrawalRequest:{user:await n.getAddress(),token:t(e),amount:r}}),{signable_message:d,payload_hash:c}=o.data,u=await i.signMessage(c),{ethAddress:g,ethSignature:_}=await s(d,n);return(await a.createWithdrawalV2({createWithdrawalRequestV2:{sender_stark_key:z(o.data.sender_stark_key),sender_vault_id:z(o.data.sender_vault_id),receiver_stark_key:z(o.data.receiver_stark_key),receiver_vault_id:z(o.data.receiver_vault_id),amount:r,asset_id:z(o.data.asset_id),expiration_timestamp:z(o.data.expiration_timestamp),nonce:z(o.data.nonce),stark_signature:u},xImxEthAddress:g,xImxEthSignature:_})).data}({signers:e,config:n.immutableXConfig,...a},i)}async function le({signers:{ethSigner:e,starkSigner:t},starkPublicKey:a,token:n,config:s}){const i=new V.MintsApi(s.immutableXConfig.apiConfiguration);switch(n.type){case"ETH":return async function({ethSigner:e,starkSigner:t,starkPublicKey:a,config:n}){await Z(e,n.immutableXConfig);const{v3Balance:s,v4Balance:i}=await te(e,a,await e.getAddress(),{type:ge},n.immutableXConfig),r=await F("asset",ge,n.immutableXConfig);if(!s.isZero()&&!s.isNegative())return await $(a,e,n)?se(e,a,r.asset_type,n.immutableXConfig):ne(e,t,a,r.asset_type,n.immutableXConfig);if(!i.isZero()&&!i.isNegative())return ie(e,0,r.asset_type,n.immutableXConfig);throw new Error("No balance to withdraw")}({ethSigner:e,starkSigner:t,starkPublicKey:a,config:s});case"ERC20":return async function({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s}){await Z(e,s.immutableXConfig);const{v3Balance:i,v4Balance:r}=await te(e,a,await e.getAddress(),{type:ae,tokenAddress:n.tokenAddress},s.immutableXConfig),o=await F("asset",ae,s.immutableXConfig,{token_address:n.tokenAddress});if(!i.isZero()&&!i.isNegative())return await $(a,e,s)?se(e,a,o.asset_type,s.immutableXConfig):ne(e,t,a,o.asset_type,s.immutableXConfig);if(!r.isZero()&&!r.isNegative())return ie(e,0,o.asset_type,s.immutableXConfig);throw new Error("No balance to withdraw")}({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s});case"ERC721":return ue({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s},i)}}async function fe({signers:{ethSigner:e},deposit:t,config:a}){await Z(e,a.immutableXConfig);const s=await e.getAddress(),i=G(t.amount,"wei"),r=a.immutableXConfig,o=new V.DepositsApi(r.apiConfiguration),d=new V.EncodingApi(r.apiConfiguration),c={user:s,token:{type:t.type,data:{decimals:18}},amount:i.toString()},u=await o.getSignableDeposit({getSignableDepositRequest:c});return async function(e,t,a,s,i,r){const o=n.CoreV4.connect(r.ethConfiguration.coreContractAddress,e),d=await o.populateTransaction["deposit(uint256,uint256,uint256)"](s,a,i);return e.sendTransaction({...d,value:t})}(e,i,(await d.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type}}})).data.asset_type,u.data.stark_key,u.data.vault_id,r)}async function me({signers:{ethSigner:e},deposit:t,config:a}){await Z(e,a.immutableXConfig);const{apiConfiguration:s,ethConfiguration:i}=a.immutableXConfig,r=await e.getAddress(),o=new V.TokensApi(s),d=new V.DepositsApi(s),c=new V.EncodingApi(s),u=await o.getToken({address:t.tokenAddress}),g={decimals:parseInt(u.data.decimals),token_address:t.tokenAddress},_=G(t.amount,0),l=n.IERC20.connect(t.tokenAddress,e),f=await l.populateTransaction.approve(i.coreContractAddress,_);await e.sendTransaction(f);const m={user:r,token:{type:t.type,data:g},amount:_.toString()},w=await d.getSignableDeposit({getSignableDepositRequest:m}),p=(await c.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type,data:{token_address:t.tokenAddress}}}})).data.asset_type,h=w.data.stark_key,C=w.data.vault_id;return async function(e,t,a,s,i,r){const o=n.CoreV4.connect(r.coreContractAddress,e),d=await o.populateTransaction.depositERC20(s,a,i,t);return e.sendTransaction(d)}(e,B.from(w.data.amount),p,h,C,i)}async function we({signers:{ethSigner:e},deposit:t,config:a}){await Z(e,a.immutableXConfig);const s=await e.getAddress(),{immutableXConfig:i}=a,r=new V.DepositsApi(i.apiConfiguration),o=new V.EncodingApi(i.apiConfiguration),d={token_address:t.tokenAddress,token_id:t.tokenId},c={user:s,token:{type:t.type,data:d},amount:"1".toString()},u=await r.getSignableDeposit({getSignableDepositRequest:c}),g=(await o.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type,data:{token_address:t.tokenAddress,token_id:t.tokenId}}}})).data.asset_type,_=u.data.stark_key,l=u.data.vault_id,f=n.IERC721.connect(t.tokenAddress,e),m=i.ethConfiguration.coreContractAddress;return await f.isApprovedForAll(s,m)||await f.setApprovalForAll(m,!0),async function(e,t,a,s,i,r){const o=n.CoreV4.connect(r.ethConfiguration.coreContractAddress,e),d=await o.populateTransaction.depositNft(s,a,i,t);return e.sendTransaction(d)}(e,t.tokenId,g,_,l,i)}class pe{config;signers;constructor(e,t,a){this.config=e,this.signers={ethSigner:t,starkSigner:a}}async getAddress(){return this.signers.ethSigner.getAddress()}async isRegisteredOffchain(){return async function(e,t){try{const a=new V.UsersApi(t.immutableXConfig.apiConfiguration),n=await a.getUsers({user:e}),{accounts:s}=n.data;return s?.length>0}catch(e){if(W(e)&&404===e.response?.status)return!1;throw e}}(await this.getAddress(),this.config)}registerOffchain(){return async function(e,t){await Z(e.ethSigner,t.immutableXConfig);const n=new V.UsersApi(t.immutableXConfig.apiConfiguration),s=await e.ethSigner.getAddress(),i=await e.starkSigner.getAddress(),r=await n.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:s,stark_key:i}}),{signable_message:o,payload_hash:d}=r.data,c=await a(o,e.ethSigner),u=await e.starkSigner.signMessage(d);return(await n.registerUser({registerUserRequest:{eth_signature:c,ether_key:s,stark_signature:u,stark_key:i}})).data}(this.signers,this.config)}batchNftTransfer(e){return async function({signers:{ethSigner:e,starkSigner:n},request:s,config:i}){await Z(e,i.immutableXConfig);const r=await e.getAddress(),o=new V.TransfersApi(i.immutableXConfig.apiConfiguration),d=s.map((e=>({amount:"1",token:t({type:"ERC721",tokenId:e.tokenId,tokenAddress:e.tokenAddress}),receiver:e.receiver}))),c=await o.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:r,signable_requests:d}}),u=c.data.signable_message;if(void 0===u)throw new Error("Invalid response from Signable registration offchain");const g=await a(u,e),_=[];for(const e of c.data.signable_responses){const t=await n.signMessage(e.payload_hash),a={sender_vault_id:e.sender_vault_id,receiver_stark_key:e.receiver_stark_key,receiver_vault_id:e.receiver_vault_id,asset_id:e.asset_id,amount:e.amount,nonce:e.nonce,expiration_timestamp:e.expiration_timestamp,stark_signature:t};_.push(a)}const l={sender_stark_key:c.data.sender_stark_key,requests:_},f=await o.createTransfer({createTransferRequestV2:l,xImxEthAddress:r,xImxEthSignature:g});return{transfer_ids:f?.data.transfer_ids}}({signers:this.signers,request:e,config:this.config})}cancelOrder(e){return async function({signers:e,request:t,config:n}){const s=new V.OrdersApi(n.immutableXConfig.apiConfiguration),i=await s.getSignableCancelOrderV3({getSignableCancelOrderRequest:{order_id:t.order_id}}),{signable_message:r,payload_hash:o}=i.data,d=await a(r,e.ethSigner),c=await e.starkSigner.signMessage(o),u=await e.ethSigner.getAddress(),g=await s.cancelOrderV3({id:t.order_id.toString(),cancelOrderRequest:{order_id:t.order_id,stark_signature:c},xImxEthAddress:u,xImxEthSignature:d});return{order_id:g.data.order_id,status:g.data.status}}({signers:this.signers,request:e,config:this.config})}completeWithdrawal(e,t){return le({config:this.config,signers:this.signers,token:t,starkPublicKey:e})}createOrder(e){return async function({signers:e,request:n,config:s}){await Z(e.ethSigner,s.immutableXConfig);const i=await e.ethSigner.getAddress(),r=new V.OrdersApi(s.immutableXConfig.apiConfiguration),o="ERC721"===n.sell.type?"1":n.sell.amount,d={user:i,amount_buy:"ERC721"===n.buy.type?"1":n.buy.amount,token_buy:t(n.buy),amount_sell:o,token_sell:t(n.sell),fees:n.fees,expiration_timestamp:n.expiration_timestamp},c=await r.getSignableOrder({getSignableOrderRequestV3:d}),{signable_message:u,payload_hash:g}=c.data,_=await a(u,e.ethSigner),l=await e.starkSigner.signMessage(g),f=c.data,m={createOrderRequest:{amount_buy:f.amount_buy,amount_sell:f.amount_sell,asset_id_buy:f.asset_id_buy,asset_id_sell:f.asset_id_sell,expiration_timestamp:f.expiration_timestamp,fees:n.fees,nonce:f.nonce,stark_key:f.stark_key,stark_signature:l,vault_id_buy:f.vault_id_buy,vault_id_sell:f.vault_id_sell},xImxEthAddress:i,xImxEthSignature:_};return{...(await r.createOrderV3(m)).data}}({signers:this.signers,request:e,config:this.config})}createTrade(e){return async function({signers:{ethSigner:e,starkSigner:t},request:n,config:s}){await Z(e,s.immutableXConfig);const i=await e.getAddress(),r=new V.TradesApi(s.immutableXConfig.apiConfiguration),o=await r.getSignableTrade({getSignableTradeRequest:{user:i,order_id:n.order_id,fees:n.fees}}),{signable_message:d,payload_hash:c}=o.data,u=await a(d,e),g=await t.signMessage(c);return(await r.createTradeV3({createTradeRequest:{amount_buy:o.data.amount_buy,amount_sell:o.data.amount_sell,asset_id_buy:o.data.asset_id_buy,asset_id_sell:o.data.asset_id_sell,expiration_timestamp:o.data.expiration_timestamp,fee_info:o.data.fee_info,fees:n.fees,include_fees:!0,nonce:o.data.nonce,order_id:n.order_id,stark_key:o.data.stark_key,vault_id_buy:o.data.vault_id_buy,vault_id_sell:o.data.vault_id_sell,stark_signature:g},xImxEthAddress:i,xImxEthSignature:u})).data}({signers:this.signers,request:e,config:this.config})}deposit(e){return async function({signers:e,deposit:t,config:a}){switch(t.type){case"ETH":return fe({signers:e,deposit:t,config:a});case"ERC20":return me({signers:e,deposit:t,config:a});case"ERC721":return we({signers:e,deposit:t,config:a})}}({signers:this.signers,deposit:e,config:this.config})}exchangeTransfer(e){return async function({signers:e,request:n,config:s}){await Z(e.ethSigner,s.immutableXConfig);const i=new V.ExchangesApi(s.immutableXConfig.apiConfiguration),r=await e.ethSigner.getAddress(),o=n.amount,d=await i.getExchangeSignableTransfer({id:n.transactionID,getSignableTransferRequest:{sender:r,token:t(n),amount:o,receiver:n.receiver}}),{signable_message:c,payload_hash:u}=d.data,g=await a(c,e.ethSigner),_=await e.starkSigner.signMessage(u),l={sender_stark_key:d.data.sender_stark_key,sender_vault_id:d.data.sender_vault_id,receiver_stark_key:d.data.receiver_stark_key,receiver_vault_id:d.data.receiver_vault_id,asset_id:d.data.asset_id,amount:d.data.amount,nonce:d.data.nonce,expiration_timestamp:d.data.expiration_timestamp,stark_signature:_},f=await i.createExchangeTransfer({id:n.transactionID,createTransferRequest:l,xImxEthAddress:r,xImxEthSignature:g});return{sent_signature:f?.data.sent_signature,status:f?.data.status?.toString(),time:f?.data.time,transfer_id:f?.data.transfer_id}}({signers:this.signers,request:e,config:this.config})}async isRegisteredOnchain(){return $(await this.signers.starkSigner.getAddress(),this.signers.ethSigner,this.config)}prepareWithdrawal(e){return _e({signers:this.signers,withdrawal:e,config:this.config})}transfer(e){return async function({signers:{ethSigner:e,starkSigner:n},request:s,config:i}){await Z(e,i.immutableXConfig);const r=await e.getAddress(),o=new V.TransfersApi(i.immutableXConfig.apiConfiguration),d="ERC721"===s.type?"1":s.amount,c=await o.getSignableTransferV1({getSignableTransferRequest:{sender:r,token:t(s),amount:d,receiver:s.receiver}}),{signable_message:u,payload_hash:g}=c.data,_=await a(u,e),l=await n.signMessage(g),f={sender_stark_key:c.data.sender_stark_key,sender_vault_id:c.data.sender_vault_id,receiver_stark_key:c.data.receiver_stark_key,receiver_vault_id:c.data.receiver_vault_id,asset_id:c.data.asset_id,amount:c.data.amount,nonce:c.data.nonce,expiration_timestamp:c.data.expiration_timestamp,stark_signature:l},m=await o.createTransferV1({createTransferRequest:f,xImxEthAddress:r,xImxEthSignature:_});return{sent_signature:m?.data.sent_signature,status:m?.data.status?.toString(),time:m?.data.time,transfer_id:m?.data.transfer_id}}({signers:this.signers,request:e,config:this.config})}}const he={SWITCH_CHAIN:"wallet_switchEthereumChain",CONNECT:"eth_requestAccounts"};const Ce="The Metamask provider was not found";async function Ee({chainID:e}){const t=await Q();if(!function(e){return!!e?.request}(t))throw new Error(Ce);return await async function(e,t){await e.request({method:he.CONNECT}),t&&await e.request({method:he.SWITCH_CHAIN,params:[{chainId:`0x${t.toString(16)}`}]})}(t,e),new K.providers.Web3Provider(t)}const ke="message";var ye,Ae;function Se(e,t){e&&e.contentWindow&&e.contentWindow.postMessage(t,new URL(e.src).origin)}function be(e,t,a,n){if(e&&t.source!==e.contentWindow)return;const s=t.data;s.type===a&&n(s.details)}!function(e){e.GET_CONNECTION_REQUEST="GET_CONNECTION_REQUEST",e.CONNECT_WALLET_REQUEST="CONNECT_WALLET_REQUEST",e.SIGN_MESSAGE_REQUEST="SIGN_MESSAGE_REQUEST",e.DISCONNECT_WALLET_REQUEST="DISCONNECT_WALLET_REQUEST",e.GET_Y_COORDINATE_REQUEST="GET_Y_COORDINATE_REQUEST"}(ye||(ye={})),function(e){e.CONNECT_WALLET_RESPONSE="CONNECT_WALLET_RESPONSE",e.SIGN_MESSAGE_RESPONSE="SIGN_MESSAGE_RESPONSE",e.GET_CONNECTION_RESPONSE="GET_CONNECTION_RESPONSE",e.DISCONNECT_WALLET_RESPONSE="DISCONNECT_WALLET_RESPONSE",e.GET_Y_COORDINATE_RESPONSE="GET_Y_COORDINATE_RESPONSE"}(Ae||(Ae={}));class Te{publicAddress;iframe;constructor(e,t){this.publicAddress=e,this.iframe=t}getAddress(){return this.publicAddress}signMessage(e){return new Promise(((t,a)=>{const n=e=>{be(this.iframe,e,Ae.SIGN_MESSAGE_RESPONSE,(e=>{window.removeEventListener(ke,n),e.success||a(new Error(e.error?.message)),t(e.data.signedMessage)}))};window.addEventListener(ke,n),Se(this.iframe,{type:ye.SIGN_MESSAGE_REQUEST,details:{starkPublicKey:this.publicAddress,message:e}})}))}getIFrame(){return this.iframe}getYCoordinate(){return new Promise(((e,t)=>{const a=n=>{be(this.iframe,n,Ae.GET_Y_COORDINATE_RESPONSE,(n=>{window.removeEventListener(ke,a),n.success||t(new Error(n.error?.message)),e(n.data.yCoordinate)}))};window.addEventListener(ke,a),Se(this.iframe,{type:ye.GET_Y_COORDINATE_REQUEST,details:{starkPublicKey:this.publicAddress}})}))}}const Re="imx-wallet-app",Ne={[H.SANDBOX]:"https://wallets.sandbox.immutable.com",[H.PRODUCTION]:"https://wallets.immutable.com"},Ie="display: none;";async function ve(e){const t=document.querySelector(`iframe#${Re}`);return t||await async function(e){return new Promise((t=>{const a=document.createElement("iframe");a.setAttribute("id",Re),a.setAttribute("src",Ne[e]),a.setAttribute("style",Ie),document.body.appendChild(a),a.onload=()=>t(a)}))}(e)}var Oe;!function(e){e.PROVIDER_CONNECTION_ERROR="PROVIDER_CONNECTION_ERROR",e.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR"}(Oe||(Oe={}));class xe extends Error{type;constructor(e,t){super(e),this.type=t}}const Xe=async(e,t)=>{try{return await e()}catch(e){const a=t.message||`${e.message}`||"UnknownError";throw new xe(a,t.type)}};class Pe extends pe{static imxSigner;static async connect(e){return await Xe((async()=>{const t=await Ee({chainID:e.immutableXConfig.ethConfiguration.chainID});return this.imxSigner=await async function(e,t){const a=e.getSigner(),n=await a.getAddress(),s=await a.signMessage("Only sign this request if you’ve initiated an action with Immutable X."),i=await ve(t);return new Promise(((e,t)=>{const a=n=>{be(i,n,Ae.CONNECT_WALLET_RESPONSE,(n=>{window.removeEventListener(ke,a),n.success||t(new Error("The L2 IMX Wallet connection has failed")),e(new Te(n.data.starkPublicKey,i))}))};window.addEventListener(ke,a),Se(i,{type:ye.CONNECT_WALLET_REQUEST,details:{ethAddress:n,signature:s}})}))}(t,e.baseConfig.environment),new Pe(e,t.getSigner(),this.imxSigner)}),{type:Oe.WALLET_CONNECTION_ERROR})}static async disconnect(){if(!this.imxSigner)throw new xe("Attempted to disconnect from the MetaMask IMX provider without an established connection",Oe.PROVIDER_CONNECTION_ERROR);return Xe((async()=>{await async function(e){const t=e.getIFrame();return new Promise(((a,n)=>{const s=e=>{be(t,e,Ae.DISCONNECT_WALLET_RESPONSE,(e=>{window.removeEventListener(ke,s),!e.success&&e.error&&n(e.error),t.remove(),a()}))};window.addEventListener(ke,s),Se(t,{type:ye.DISCONNECT_WALLET_REQUEST,details:{starkPublicKey:e.getAddress()}})}))}(this.imxSigner)}),{type:Oe.PROVIDER_CONNECTION_ERROR})}static async signMessage(e){if(!this.imxSigner)throw new xe("Attempted to sign a message with the MetaMask IMX provider without an established connection",Oe.PROVIDER_CONNECTION_ERROR);return Xe((async()=>await this.imxSigner.signMessage(e)),{type:Oe.PROVIDER_CONNECTION_ERROR})}}class Me{immutableXConfig;baseConfig;constructor({baseConfig:t,overrides:a}){if(this.baseConfig=t,a)this.immutableXConfig=a.immutableXConfig;else{const a=new e({baseConfig:t});this.immutableXConfig=a.immutableXConfig}}}var qe=Object.freeze({__proto__:null,ApiConfiguration:d,AssetsApi:c,BalancesApi:u,CollectionsApi:g,Contracts:n,DepositsApi:_,EncodingApi:i,get Environment(){return H},EthSigner:Y,ExchangesApi:l,GenericIMXProvider:pe,IMXClient:f,IMXError:m,ImmutableConfiguration:j,ImmutableX:w,ImxConfiguration:e,MetaMaskIMXProvider:Pe,MetadataApi:p,MetadataRefreshesApi:h,MetadataSchemaRequestTypeEnum:C,MintsApi:r,NftCheckoutPrimaryApi:E,OrdersApi:k,PrimarySalesApi:y,ProjectsApi:A,ProviderConfiguration:Me,TokensApi:S,TradesApi:b,TransfersApi:T,UsersApi:R,WithdrawalsApi:N,createConfig:I,createImmutableXConfiguration:v,createStarkSigner:O,generateLegacyStarkPrivateKey:x,generateStarkPrivateKey:X,imxClientConfig:P,imxClientCreateStarkSigner:O,imxClientGenerateLegacyStarkPrivateKey:x,production:M,sandbox:q,serializePackedSignature:L,signRegisterEthAddress:o,starkEcOrder:D});export{pe as G,Pe as M,Me as P,qe as x};
|
|
1
|
+
import{I as e,c as t,s as a,e as n,a as s,E as i,M as r,b as o,A as d,d as c,B as u,C as g,D as _,f as l,g as f,h as m,i as w,j as p,k as h,l as C,N as E,O as k,P as y,m as A,T as S,n as b,o as T,U as R,W as N,p as I,q as v,r as O,t as x,u as X,v as P,w as M,x as q,y as L,z as D}from"./index-3379fae3.js";import{b as V}from"./index-8891a569.js";import{isAxiosError as W}from"axios";import*as U from"enc-utils";import{parseUnits as G}from"@ethersproject/units";import{BigNumber as B}from"@ethersproject/bignumber";import{ethers as K}from"ethers";import Q from"@metamask/detect-provider";import{E as H,I as j}from"./index-1465defe.js";import{Signer as Y}from"@ethersproject/abstract-signer";async function Z(e,t){if(!function(e,t){return e===t.ethConfiguration.chainID}(await e.getChainId(),t))throw new Error("The wallet used for this operation is not connected to the correct network.")}async function $(e,t,a){await Z(t,a.immutableXConfig);const s=a.immutableXConfig,i=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,t);try{return await i.isRegistered(e)}catch(e){if("USER_UNREGISTERED"===e.reason)return!1;throw e}}const z=e=>{if(void 0!==e)return e;throw new Error("undefined field exception")};async function F(e,t,a,n){const s=new V.EncodingApi(a.apiConfiguration);return(await s.encodeAsset({assetType:e,encodeAssetRequest:{token:{type:t,...n&&{data:n}}}})).data}async function J(e,t,a,s){return n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e).getWithdrawalBalance(t,a)}async function ee(e,t,a,n,s,i){switch(a.type){case"ETH":return await async function(e,t,a){const n=await F("asset","ETH",a);return await J(e,t,n.asset_id,a)}(e,t,i);case"ERC20":return await async function(e,t,a,n){const s=await F("asset","ERC20",n,{token_address:a});return await J(e,t,s.asset_id,n)}(e,t,a.tokenAddress,i);case"ERC721":return await async function(e,t,a,n,s,i){try{const n=await s.getMintableTokenDetailsByClientTokenId({tokenAddress:a.tokenAddress,tokenId:a.tokenId}),r=await F("mintable-asset","ERC721",i,{id:a.tokenId,token_address:a.tokenAddress,...n.data.blueprint&&{blueprint:n.data.blueprint}});return await J(e,t,r.asset_id,i)}catch(n){if(404===n.response?.status){const n=await F("asset","ERC721",i,{token_id:a.tokenId,token_address:a.tokenAddress});return await J(e,t,n.asset_id,i)}throw n}}(e,t,a,0,s,i);default:throw new Error("Unsupported token type")}}async function te(e,t,a,n,s){new i(s.apiConfiguration);const o=new r(s.apiConfiguration);return{v3Balance:await ee(e,t,n,0,o,s),v4Balance:await ee(e,a,n,0,o,s)}}const ae="ERC20";async function ne(e,t,a,s,i){const r=await e.getAddress(),d=await o(t,r,a),c=n.RegistrationV4.connect(i.ethConfiguration.registrationV4ContractAddress||i.ethConfiguration.registrationContractAddress,e),u=await c.populateTransaction.registerAndWithdrawAll(r,a,d,s);return e.sendTransaction(u)}async function se(e,t,a,s){const i=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,e),r=await i.populateTransaction.withdrawAll(await e.getAddress(),t,a);return e.sendTransaction(r)}async function ie(e,t,a,s){const i=n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e),r=await i.populateTransaction.withdraw(await e.getAddress(),a);return e.sendTransaction(r)}const re="ERC721";function oe(e){const{id:t}=e.data,a=e.data.blueprint||"";return U.sanitizeHex(U.utf8ToHex(`{${t}}:{${a}}`))}async function de(e,t,a,s,i){return e.getMintableTokenDetailsByClientTokenId({tokenAddress:s.tokenAddress,tokenId:s.tokenId}).then((e=>async function(e,t,a,s){const i=await e.getAddress(),r=await t.getAddress(),d=await F("mintable-asset",re,s,{id:a.data.id,token_address:a.data.tokenAddress,...a.data.blueprint&&{blueprint:a.data.blueprint}}),c=oe(a),u=await o(t,i,r),g=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,e),_=await g.populateTransaction.registerWithdrawAndMint(i,r,u,d.asset_type,c);return e.sendTransaction(_)}(t,a,{type:re,data:{id:s.tokenId,tokenAddress:s.tokenAddress,blueprint:e.data.blueprint}},i))).catch((e=>{if(404===e.response?.status)return async function(e,t,a,s){const i=await e.getAddress(),r=await t.getAddress(),d=await F("asset",re,s,{token_id:a.tokenId,token_address:a.tokenAddress}),c=await o(t,i,r),u=n.RegistrationV4.connect(s.ethConfiguration.registrationV4ContractAddress||s.ethConfiguration.registrationContractAddress,e),g=await u.populateTransaction.registerAndWithdrawNft(i,r,c,d.asset_type,a.tokenId);return e.sendTransaction(g)}(t,a,s,i);throw e}))}async function ce(e,t,a,s,i){return e.getMintableTokenDetailsByClientTokenId({tokenAddress:s.tokenAddress,tokenId:s.tokenId}).then((e=>async function(e,t,a,s){const i=await F("mintable-asset",re,s,{id:a.data.id,token_address:a.data.tokenAddress,...a.data.blueprint&&{blueprint:a.data.blueprint}}),r=oe(a),o=n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e),d=await o.populateTransaction.withdrawAndMint(t,i.asset_type,r);return e.sendTransaction(d)}(t,a,{type:re,data:{id:s.tokenId,tokenAddress:s.tokenAddress,blueprint:e.data.blueprint}},i))).catch((e=>{if(404===e.response?.status)return async function(e,t,a,s){const i=await F("asset",re,s,{token_id:a.tokenId,token_address:a.tokenAddress}),r=n.CoreV4.connect(s.ethConfiguration.coreContractAddress,e),o=await r.populateTransaction.withdrawNft(t,i.asset_type,a.tokenId);return e.sendTransaction(o)}(t,a,s,i);throw e}))}async function ue({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s},r){await Z(e,s.immutableXConfig);const o=await e.getAddress(),{v3Balance:d,v4Balance:c}=await async function(e,t,a,n,s,r){return new i(s.apiConfiguration),{v3Balance:await ee(e,t,n,0,r,s),v4Balance:await ee(e,a,n,0,r,s)}}(e,a,o,{type:re,tokenAddress:n.tokenAddress,tokenId:n.tokenId},s.immutableXConfig,r);if(!d.isZero()&&!d.isNegative()){return await $(a,e,s)?ce(r,e,a,n,s.immutableXConfig):de(r,e,t,n,s.immutableXConfig)}if(!c.isZero()&&!c.isNegative())return ce(r,e,o,n,s.immutableXConfig);throw new Error("No balance to withdraw")}const ge="ETH";async function _e({signers:e,withdrawal:a,config:n}){const i=new V.WithdrawalsApi(n.immutableXConfig.apiConfiguration);return async function(e,a){const{signers:{ethSigner:n,starkSigner:i}}=e;await Z(n,e.config);const r="ERC721"===e.type?"1":e.amount,o=await a.getSignableWithdrawalV2({getSignableWithdrawalRequest:{user:await n.getAddress(),token:t(e),amount:r}}),{signable_message:d,payload_hash:c}=o.data,u=await i.signMessage(c),{ethAddress:g,ethSignature:_}=await s(d,n);return(await a.createWithdrawalV2({createWithdrawalRequestV2:{sender_stark_key:z(o.data.sender_stark_key),sender_vault_id:z(o.data.sender_vault_id),receiver_stark_key:z(o.data.receiver_stark_key),receiver_vault_id:z(o.data.receiver_vault_id),amount:r,asset_id:z(o.data.asset_id),expiration_timestamp:z(o.data.expiration_timestamp),nonce:z(o.data.nonce),stark_signature:u},xImxEthAddress:g,xImxEthSignature:_})).data}({signers:e,config:n.immutableXConfig,...a},i)}async function le({signers:{ethSigner:e,starkSigner:t},starkPublicKey:a,token:n,config:s}){const i=new V.MintsApi(s.immutableXConfig.apiConfiguration);switch(n.type){case"ETH":return async function({ethSigner:e,starkSigner:t,starkPublicKey:a,config:n}){await Z(e,n.immutableXConfig);const{v3Balance:s,v4Balance:i}=await te(e,a,await e.getAddress(),{type:ge},n.immutableXConfig),r=await F("asset",ge,n.immutableXConfig);if(!s.isZero()&&!s.isNegative())return await $(a,e,n)?se(e,a,r.asset_type,n.immutableXConfig):ne(e,t,a,r.asset_type,n.immutableXConfig);if(!i.isZero()&&!i.isNegative())return ie(e,0,r.asset_type,n.immutableXConfig);throw new Error("No balance to withdraw")}({ethSigner:e,starkSigner:t,starkPublicKey:a,config:s});case"ERC20":return async function({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s}){await Z(e,s.immutableXConfig);const{v3Balance:i,v4Balance:r}=await te(e,a,await e.getAddress(),{type:ae,tokenAddress:n.tokenAddress},s.immutableXConfig),o=await F("asset",ae,s.immutableXConfig,{token_address:n.tokenAddress});if(!i.isZero()&&!i.isNegative())return await $(a,e,s)?se(e,a,o.asset_type,s.immutableXConfig):ne(e,t,a,o.asset_type,s.immutableXConfig);if(!r.isZero()&&!r.isNegative())return ie(e,0,o.asset_type,s.immutableXConfig);throw new Error("No balance to withdraw")}({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s});case"ERC721":return ue({ethSigner:e,starkSigner:t,starkPublicKey:a,token:n,config:s},i)}}async function fe({signers:{ethSigner:e},deposit:t,config:a}){await Z(e,a.immutableXConfig);const s=await e.getAddress(),i=G(t.amount,"wei"),r=a.immutableXConfig,o=new V.DepositsApi(r.apiConfiguration),d=new V.EncodingApi(r.apiConfiguration),c={user:s,token:{type:t.type,data:{decimals:18}},amount:i.toString()},u=await o.getSignableDeposit({getSignableDepositRequest:c});return async function(e,t,a,s,i,r){const o=n.CoreV4.connect(r.ethConfiguration.coreContractAddress,e),d=await o.populateTransaction["deposit(uint256,uint256,uint256)"](s,a,i);return e.sendTransaction({...d,value:t})}(e,i,(await d.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type}}})).data.asset_type,u.data.stark_key,u.data.vault_id,r)}async function me({signers:{ethSigner:e},deposit:t,config:a}){await Z(e,a.immutableXConfig);const{apiConfiguration:s,ethConfiguration:i}=a.immutableXConfig,r=await e.getAddress(),o=new V.TokensApi(s),d=new V.DepositsApi(s),c=new V.EncodingApi(s),u=await o.getToken({address:t.tokenAddress}),g={decimals:parseInt(u.data.decimals),token_address:t.tokenAddress},_=G(t.amount,0),l=n.IERC20.connect(t.tokenAddress,e),f=await l.populateTransaction.approve(i.coreContractAddress,_);await e.sendTransaction(f);const m={user:r,token:{type:t.type,data:g},amount:_.toString()},w=await d.getSignableDeposit({getSignableDepositRequest:m}),p=(await c.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type,data:{token_address:t.tokenAddress}}}})).data.asset_type,h=w.data.stark_key,C=w.data.vault_id;return async function(e,t,a,s,i,r){const o=n.CoreV4.connect(r.coreContractAddress,e),d=await o.populateTransaction.depositERC20(s,a,i,t);return e.sendTransaction(d)}(e,B.from(w.data.amount),p,h,C,i)}async function we({signers:{ethSigner:e},deposit:t,config:a}){await Z(e,a.immutableXConfig);const s=await e.getAddress(),{immutableXConfig:i}=a,r=new V.DepositsApi(i.apiConfiguration),o=new V.EncodingApi(i.apiConfiguration),d={token_address:t.tokenAddress,token_id:t.tokenId},c={user:s,token:{type:t.type,data:d},amount:"1".toString()},u=await r.getSignableDeposit({getSignableDepositRequest:c}),g=(await o.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type,data:{token_address:t.tokenAddress,token_id:t.tokenId}}}})).data.asset_type,_=u.data.stark_key,l=u.data.vault_id,f=n.IERC721.connect(t.tokenAddress,e),m=i.ethConfiguration.coreContractAddress;return await f.isApprovedForAll(s,m)||await f.setApprovalForAll(m,!0),async function(e,t,a,s,i,r){const o=n.CoreV4.connect(r.ethConfiguration.coreContractAddress,e),d=await o.populateTransaction.depositNft(s,a,i,t);return e.sendTransaction(d)}(e,t.tokenId,g,_,l,i)}class pe{config;signers;constructor(e,t,a){this.config=e,this.signers={ethSigner:t,starkSigner:a}}async getAddress(){return this.signers.ethSigner.getAddress()}async isRegisteredOffchain(){return async function(e,t){try{const a=new V.UsersApi(t.immutableXConfig.apiConfiguration),n=await a.getUsers({user:e}),{accounts:s}=n.data;return s?.length>0}catch(e){if(W(e)&&404===e.response?.status)return!1;throw e}}(await this.getAddress(),this.config)}registerOffchain(){return async function(e,t){await Z(e.ethSigner,t.immutableXConfig);const n=new V.UsersApi(t.immutableXConfig.apiConfiguration),s=await e.ethSigner.getAddress(),i=await e.starkSigner.getAddress(),r=await n.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:s,stark_key:i}}),{signable_message:o,payload_hash:d}=r.data,c=await a(o,e.ethSigner),u=await e.starkSigner.signMessage(d);return(await n.registerUser({registerUserRequest:{eth_signature:c,ether_key:s,stark_signature:u,stark_key:i}})).data}(this.signers,this.config)}batchNftTransfer(e){return async function({signers:{ethSigner:e,starkSigner:n},request:s,config:i}){await Z(e,i.immutableXConfig);const r=await e.getAddress(),o=new V.TransfersApi(i.immutableXConfig.apiConfiguration),d=s.map((e=>({amount:"1",token:t({type:"ERC721",tokenId:e.tokenId,tokenAddress:e.tokenAddress}),receiver:e.receiver}))),c=await o.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:r,signable_requests:d}}),u=c.data.signable_message;if(void 0===u)throw new Error("Invalid response from Signable registration offchain");const g=await a(u,e),_=[];for(const e of c.data.signable_responses){const t=await n.signMessage(e.payload_hash),a={sender_vault_id:e.sender_vault_id,receiver_stark_key:e.receiver_stark_key,receiver_vault_id:e.receiver_vault_id,asset_id:e.asset_id,amount:e.amount,nonce:e.nonce,expiration_timestamp:e.expiration_timestamp,stark_signature:t};_.push(a)}const l={sender_stark_key:c.data.sender_stark_key,requests:_},f=await o.createTransfer({createTransferRequestV2:l,xImxEthAddress:r,xImxEthSignature:g});return{transfer_ids:f?.data.transfer_ids}}({signers:this.signers,request:e,config:this.config})}cancelOrder(e){return async function({signers:e,request:t,config:n}){const s=new V.OrdersApi(n.immutableXConfig.apiConfiguration),i=await s.getSignableCancelOrderV3({getSignableCancelOrderRequest:{order_id:t.order_id}}),{signable_message:r,payload_hash:o}=i.data,d=await a(r,e.ethSigner),c=await e.starkSigner.signMessage(o),u=await e.ethSigner.getAddress(),g=await s.cancelOrderV3({id:t.order_id.toString(),cancelOrderRequest:{order_id:t.order_id,stark_signature:c},xImxEthAddress:u,xImxEthSignature:d});return{order_id:g.data.order_id,status:g.data.status}}({signers:this.signers,request:e,config:this.config})}completeWithdrawal(e,t){return le({config:this.config,signers:this.signers,token:t,starkPublicKey:e})}createOrder(e){return async function({signers:e,request:n,config:s}){await Z(e.ethSigner,s.immutableXConfig);const i=await e.ethSigner.getAddress(),r=new V.OrdersApi(s.immutableXConfig.apiConfiguration),o="ERC721"===n.sell.type?"1":n.sell.amount,d={user:i,amount_buy:"ERC721"===n.buy.type?"1":n.buy.amount,token_buy:t(n.buy),amount_sell:o,token_sell:t(n.sell),fees:n.fees,expiration_timestamp:n.expiration_timestamp},c=await r.getSignableOrder({getSignableOrderRequestV3:d}),{signable_message:u,payload_hash:g}=c.data,_=await a(u,e.ethSigner),l=await e.starkSigner.signMessage(g),f=c.data,m={createOrderRequest:{amount_buy:f.amount_buy,amount_sell:f.amount_sell,asset_id_buy:f.asset_id_buy,asset_id_sell:f.asset_id_sell,expiration_timestamp:f.expiration_timestamp,fees:n.fees,nonce:f.nonce,stark_key:f.stark_key,stark_signature:l,vault_id_buy:f.vault_id_buy,vault_id_sell:f.vault_id_sell},xImxEthAddress:i,xImxEthSignature:_};return{...(await r.createOrderV3(m)).data}}({signers:this.signers,request:e,config:this.config})}createTrade(e){return async function({signers:{ethSigner:e,starkSigner:t},request:n,config:s}){await Z(e,s.immutableXConfig);const i=await e.getAddress(),r=new V.TradesApi(s.immutableXConfig.apiConfiguration),o=await r.getSignableTrade({getSignableTradeRequest:{user:i,order_id:n.order_id,fees:n.fees}}),{signable_message:d,payload_hash:c}=o.data,u=await a(d,e),g=await t.signMessage(c);return(await r.createTradeV3({createTradeRequest:{amount_buy:o.data.amount_buy,amount_sell:o.data.amount_sell,asset_id_buy:o.data.asset_id_buy,asset_id_sell:o.data.asset_id_sell,expiration_timestamp:o.data.expiration_timestamp,fee_info:o.data.fee_info,fees:n.fees,include_fees:!0,nonce:o.data.nonce,order_id:n.order_id,stark_key:o.data.stark_key,vault_id_buy:o.data.vault_id_buy,vault_id_sell:o.data.vault_id_sell,stark_signature:g},xImxEthAddress:i,xImxEthSignature:u})).data}({signers:this.signers,request:e,config:this.config})}deposit(e){return async function({signers:e,deposit:t,config:a}){switch(t.type){case"ETH":return fe({signers:e,deposit:t,config:a});case"ERC20":return me({signers:e,deposit:t,config:a});case"ERC721":return we({signers:e,deposit:t,config:a})}}({signers:this.signers,deposit:e,config:this.config})}exchangeTransfer(e){return async function({signers:e,request:n,config:s}){await Z(e.ethSigner,s.immutableXConfig);const i=new V.ExchangesApi(s.immutableXConfig.apiConfiguration),r=await e.ethSigner.getAddress(),o=n.amount,d=await i.getExchangeSignableTransfer({id:n.transactionID,getSignableTransferRequest:{sender:r,token:t(n),amount:o,receiver:n.receiver}}),{signable_message:c,payload_hash:u}=d.data,g=await a(c,e.ethSigner),_=await e.starkSigner.signMessage(u),l={sender_stark_key:d.data.sender_stark_key,sender_vault_id:d.data.sender_vault_id,receiver_stark_key:d.data.receiver_stark_key,receiver_vault_id:d.data.receiver_vault_id,asset_id:d.data.asset_id,amount:d.data.amount,nonce:d.data.nonce,expiration_timestamp:d.data.expiration_timestamp,stark_signature:_},f=await i.createExchangeTransfer({id:n.transactionID,createTransferRequest:l,xImxEthAddress:r,xImxEthSignature:g});return{sent_signature:f?.data.sent_signature,status:f?.data.status?.toString(),time:f?.data.time,transfer_id:f?.data.transfer_id}}({signers:this.signers,request:e,config:this.config})}async isRegisteredOnchain(){return $(await this.signers.starkSigner.getAddress(),this.signers.ethSigner,this.config)}prepareWithdrawal(e){return _e({signers:this.signers,withdrawal:e,config:this.config})}transfer(e){return async function({signers:{ethSigner:e,starkSigner:n},request:s,config:i}){await Z(e,i.immutableXConfig);const r=await e.getAddress(),o=new V.TransfersApi(i.immutableXConfig.apiConfiguration),d="ERC721"===s.type?"1":s.amount,c=await o.getSignableTransferV1({getSignableTransferRequest:{sender:r,token:t(s),amount:d,receiver:s.receiver}}),{signable_message:u,payload_hash:g}=c.data,_=await a(u,e),l=await n.signMessage(g),f={sender_stark_key:c.data.sender_stark_key,sender_vault_id:c.data.sender_vault_id,receiver_stark_key:c.data.receiver_stark_key,receiver_vault_id:c.data.receiver_vault_id,asset_id:c.data.asset_id,amount:c.data.amount,nonce:c.data.nonce,expiration_timestamp:c.data.expiration_timestamp,stark_signature:l},m=await o.createTransferV1({createTransferRequest:f,xImxEthAddress:r,xImxEthSignature:_});return{sent_signature:m?.data.sent_signature,status:m?.data.status?.toString(),time:m?.data.time,transfer_id:m?.data.transfer_id}}({signers:this.signers,request:e,config:this.config})}}const he={SWITCH_CHAIN:"wallet_switchEthereumChain",CONNECT:"eth_requestAccounts"};const Ce="The Metamask provider was not found";async function Ee({chainID:e}){const t=await Q();if(!function(e){return!!e?.request}(t))throw new Error(Ce);return await async function(e,t){await e.request({method:he.CONNECT}),t&&await e.request({method:he.SWITCH_CHAIN,params:[{chainId:`0x${t.toString(16)}`}]})}(t,e),new K.providers.Web3Provider(t)}const ke="message";var ye,Ae;function Se(e,t){e&&e.contentWindow&&e.contentWindow.postMessage(t,new URL(e.src).origin)}function be(e,t,a,n){if(e&&t.source!==e.contentWindow)return;const s=t.data;s.type===a&&n(s.details)}!function(e){e.GET_CONNECTION_REQUEST="GET_CONNECTION_REQUEST",e.CONNECT_WALLET_REQUEST="CONNECT_WALLET_REQUEST",e.SIGN_MESSAGE_REQUEST="SIGN_MESSAGE_REQUEST",e.DISCONNECT_WALLET_REQUEST="DISCONNECT_WALLET_REQUEST",e.GET_Y_COORDINATE_REQUEST="GET_Y_COORDINATE_REQUEST"}(ye||(ye={})),function(e){e.CONNECT_WALLET_RESPONSE="CONNECT_WALLET_RESPONSE",e.SIGN_MESSAGE_RESPONSE="SIGN_MESSAGE_RESPONSE",e.GET_CONNECTION_RESPONSE="GET_CONNECTION_RESPONSE",e.DISCONNECT_WALLET_RESPONSE="DISCONNECT_WALLET_RESPONSE",e.GET_Y_COORDINATE_RESPONSE="GET_Y_COORDINATE_RESPONSE"}(Ae||(Ae={}));class Te{publicAddress;iframe;constructor(e,t){this.publicAddress=e,this.iframe=t}getAddress(){return this.publicAddress}signMessage(e){return new Promise(((t,a)=>{const n=e=>{be(this.iframe,e,Ae.SIGN_MESSAGE_RESPONSE,(e=>{window.removeEventListener(ke,n),e.success||a(new Error(e.error?.message)),t(e.data.signedMessage)}))};window.addEventListener(ke,n),Se(this.iframe,{type:ye.SIGN_MESSAGE_REQUEST,details:{starkPublicKey:this.publicAddress,message:e}})}))}getIFrame(){return this.iframe}getYCoordinate(){return new Promise(((e,t)=>{const a=n=>{be(this.iframe,n,Ae.GET_Y_COORDINATE_RESPONSE,(n=>{window.removeEventListener(ke,a),n.success||t(new Error(n.error?.message)),e(n.data.yCoordinate)}))};window.addEventListener(ke,a),Se(this.iframe,{type:ye.GET_Y_COORDINATE_REQUEST,details:{starkPublicKey:this.publicAddress}})}))}}const Re="imx-wallet-app",Ne={[H.SANDBOX]:"https://wallets.sandbox.immutable.com",[H.PRODUCTION]:"https://wallets.immutable.com"},Ie="display: none;";async function ve(e){const t=document.querySelector(`iframe#${Re}`);return t||await async function(e){return new Promise((t=>{const a=document.createElement("iframe");a.setAttribute("id",Re),a.setAttribute("src",Ne[e]),a.setAttribute("style",Ie),document.body.appendChild(a),a.onload=()=>t(a)}))}(e)}var Oe;!function(e){e.PROVIDER_CONNECTION_ERROR="PROVIDER_CONNECTION_ERROR",e.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR"}(Oe||(Oe={}));class xe extends Error{type;constructor(e,t){super(e),this.type=t}}const Xe=async(e,t)=>{try{return await e()}catch(e){const a=t.message||`${e.message}`||"UnknownError";throw new xe(a,t.type)}};class Pe extends pe{static imxSigner;static async connect(e){return await Xe((async()=>{const t=await Ee({chainID:e.immutableXConfig.ethConfiguration.chainID});return this.imxSigner=await async function(e,t){const a=e.getSigner(),n=await a.getAddress(),s=await a.signMessage("Only sign this request if you’ve initiated an action with Immutable X."),i=await ve(t);return new Promise(((e,t)=>{const a=n=>{be(i,n,Ae.CONNECT_WALLET_RESPONSE,(n=>{window.removeEventListener(ke,a),n.success||t(new Error("The L2 IMX Wallet connection has failed")),e(new Te(n.data.starkPublicKey,i))}))};window.addEventListener(ke,a),Se(i,{type:ye.CONNECT_WALLET_REQUEST,details:{ethAddress:n,signature:s}})}))}(t,e.baseConfig.environment),new Pe(e,t.getSigner(),this.imxSigner)}),{type:Oe.WALLET_CONNECTION_ERROR})}static async disconnect(){if(!this.imxSigner)throw new xe("Attempted to disconnect from the MetaMask IMX provider without an established connection",Oe.PROVIDER_CONNECTION_ERROR);return Xe((async()=>{await async function(e){const t=e.getIFrame();return new Promise(((a,n)=>{const s=e=>{be(t,e,Ae.DISCONNECT_WALLET_RESPONSE,(e=>{window.removeEventListener(ke,s),!e.success&&e.error&&n(e.error),t.remove(),a()}))};window.addEventListener(ke,s),Se(t,{type:ye.DISCONNECT_WALLET_REQUEST,details:{starkPublicKey:e.getAddress()}})}))}(this.imxSigner)}),{type:Oe.PROVIDER_CONNECTION_ERROR})}static async signMessage(e){if(!this.imxSigner)throw new xe("Attempted to sign a message with the MetaMask IMX provider without an established connection",Oe.PROVIDER_CONNECTION_ERROR);return Xe((async()=>await this.imxSigner.signMessage(e)),{type:Oe.PROVIDER_CONNECTION_ERROR})}}class Me{immutableXConfig;baseConfig;constructor({baseConfig:t,overrides:a}){if(this.baseConfig=t,a)this.immutableXConfig=a.immutableXConfig;else{const a=new e({baseConfig:t});this.immutableXConfig=a.immutableXConfig}}}var qe=Object.freeze({__proto__:null,ApiConfiguration:d,AssetsApi:c,BalancesApi:u,CollectionsApi:g,Contracts:n,DepositsApi:_,EncodingApi:i,get Environment(){return H},EthSigner:Y,ExchangesApi:l,GenericIMXProvider:pe,IMXClient:f,IMXError:m,ImmutableConfiguration:j,ImmutableX:w,ImxConfiguration:e,MetaMaskIMXProvider:Pe,MetadataApi:p,MetadataRefreshesApi:h,MetadataSchemaRequestTypeEnum:C,MintsApi:r,NftCheckoutPrimaryApi:E,OrdersApi:k,PrimarySalesApi:y,ProjectsApi:A,ProviderConfiguration:Me,TokensApi:S,TradesApi:b,TransfersApi:T,UsersApi:R,WithdrawalsApi:N,createConfig:I,createImmutableXConfiguration:v,createStarkSigner:O,generateLegacyStarkPrivateKey:x,generateStarkPrivateKey:X,imxClientConfig:P,imxClientCreateStarkSigner:O,imxClientGenerateLegacyStarkPrivateKey:x,production:M,sandbox:q,serializePackedSignature:L,signRegisterEthAddress:o,starkEcOrder:D});export{pe as G,Pe as M,Me as P,qe as x};
|
package/dist/x.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{A as ApiConfiguration,d as AssetsApi,B as BalancesApi,C as CollectionsApi,e as Contracts,D as DepositsApi,E as EncodingApi,f as ExchangesApi,g as IMXClient,h as IMXError,i as ImmutableX,I as ImxConfiguration,j as MetadataApi,k as MetadataRefreshesApi,l as MetadataSchemaRequestTypeEnum,M as MintsApi,N as NftCheckoutPrimaryApi,O as OrdersApi,P as PrimarySalesApi,m as ProjectsApi,T as TokensApi,n as TradesApi,o as TransfersApi,U as UsersApi,W as WithdrawalsApi,p as createConfig,q as createImmutableXConfiguration,r as createStarkSigner,t as generateLegacyStarkPrivateKey,u as generateStarkPrivateKey,v as imxClientConfig,r as imxClientCreateStarkSigner,t as imxClientGenerateLegacyStarkPrivateKey,w as production,x as sandbox,y as serializePackedSignature,b as signRegisterEthAddress,z as starkEcOrder}from"./index-
|
|
1
|
+
export{A as ApiConfiguration,d as AssetsApi,B as BalancesApi,C as CollectionsApi,e as Contracts,D as DepositsApi,E as EncodingApi,f as ExchangesApi,g as IMXClient,h as IMXError,i as ImmutableX,I as ImxConfiguration,j as MetadataApi,k as MetadataRefreshesApi,l as MetadataSchemaRequestTypeEnum,M as MintsApi,N as NftCheckoutPrimaryApi,O as OrdersApi,P as PrimarySalesApi,m as ProjectsApi,T as TokensApi,n as TradesApi,o as TransfersApi,U as UsersApi,W as WithdrawalsApi,p as createConfig,q as createImmutableXConfiguration,r as createStarkSigner,t as generateLegacyStarkPrivateKey,u as generateStarkPrivateKey,v as imxClientConfig,r as imxClientCreateStarkSigner,t as imxClientGenerateLegacyStarkPrivateKey,w as production,x as sandbox,y as serializePackedSignature,b as signRegisterEthAddress,z as starkEcOrder}from"./index-3379fae3.js";export{G as GenericIMXProvider,M as MetaMaskIMXProvider,P as ProviderConfiguration}from"./x-95ef888b.js";export{E as Environment,I as ImmutableConfiguration}from"./index-1465defe.js";export{Signer as EthSigner}from"@ethersproject/abstract-signer";import"./index-8891a569.js";import"axios";import"@ethersproject/keccak256";import"@ethersproject/strings";import"bn.js";import"enc-utils";import"ethers";import"@ethersproject/bytes";import"hash.js";import"elliptic";import"ethereumjs-wallet";import"assert";import"@ethersproject/units";import"@ethersproject/bignumber";import"@metamask/detect-provider";import"lru-memorise";import"global-const";
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as r,B as a}from"./index-7d2761cb.js";import{i as o}from"./index-3c4d20df.js";var e=Object.freeze({__proto__:null,APIError:r,BlockchainData:a,Types:o});export{e as b};
|
package/dist/webhook-8b165b7a.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./index-d7b7aff9.js";var r=Object.freeze({__proto__:null,handle:e});export{r as w};
|