@gala-chain/launchpad-sdk 7.0.0-beta.2 → 7.0.0-beta.4

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.
Files changed (51) hide show
  1. package/README.md +2 -0
  2. package/dist/LaunchpadSDK.d.ts +10 -8
  3. package/dist/LaunchpadSDK.d.ts.map +1 -1
  4. package/dist/api/dto/BondingCurveDTOs.d.ts +2 -2
  5. package/dist/api/dto/BondingCurveDTOs.d.ts.map +1 -1
  6. package/dist/api/dto/BurnTokensDto.d.ts +1 -1
  7. package/dist/api/dto/BurnTokensDto.d.ts.map +1 -1
  8. package/dist/api/dto/LockTokenDto.d.ts +1 -1
  9. package/dist/api/dto/LockTokenDto.d.ts.map +1 -1
  10. package/dist/api/dto/TransferTokenDto.d.ts +1 -1
  11. package/dist/api/dto/TransferTokenDto.d.ts.map +1 -1
  12. package/dist/api/dto/UnlockTokenDto.d.ts +1 -1
  13. package/dist/api/dto/UnlockTokenDto.d.ts.map +1 -1
  14. package/dist/bridge/strategies/EthereumBridgeStrategy.d.ts.map +1 -1
  15. package/dist/constants/version.generated.d.ts +1 -1
  16. package/dist/helpers/sdk.d.ts.map +1 -1
  17. package/dist/index.browser.esm.js +1 -1
  18. package/dist/index.cjs +1 -1
  19. package/dist/index.esm.js +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/launchpad/writes.d.ts.map +1 -1
  22. package/dist/native.cjs +1 -1
  23. package/dist/native.esm.js +1 -1
  24. package/dist/react.cjs +1 -1
  25. package/dist/react.esm.js +1 -1
  26. package/dist/schemas/files.d.ts +4 -4
  27. package/dist/schemas/files.d.ts.map +1 -1
  28. package/dist/schemas/launchpad.d.ts +2 -2
  29. package/dist/schemas/user.d.ts +7 -7
  30. package/dist/schemas/user.d.ts.map +1 -1
  31. package/dist/schemas/validators.d.ts +1 -1
  32. package/dist/services/ContentReactionService.d.ts.map +1 -1
  33. package/dist/services/LaunchpadService.d.ts +1 -6
  34. package/dist/services/LaunchpadService.d.ts.map +1 -1
  35. package/dist/services/ModeratorService.d.ts.map +1 -1
  36. package/dist/services/NftCollectionService.d.ts.map +1 -1
  37. package/dist/services/UserService.d.ts +3 -10
  38. package/dist/services/UserService.d.ts.map +1 -1
  39. package/dist/signing/signers.d.ts +4 -2
  40. package/dist/signing/signers.d.ts.map +1 -1
  41. package/dist/types/backend-responses.d.ts +1 -1
  42. package/dist/types/backend-responses.d.ts.map +1 -1
  43. package/dist/types/dto.d.ts +2 -2
  44. package/dist/types/dto.d.ts.map +1 -1
  45. package/dist/types/options.dto.d.ts +10 -10
  46. package/dist/types/user.dto.d.ts +13 -5
  47. package/dist/types/user.dto.d.ts.map +1 -1
  48. package/dist/wallet/GalaChainConnectProvider.d.ts.map +1 -1
  49. package/dist/wallet.cjs +1 -1
  50. package/dist/wallet.esm.js +1 -1
  51. package/package.json +37 -37
@@ -1 +1 @@
1
- import{getAddress as e,Wallet as n}from"ethers";class t extends Error{constructor(e,n,t){super(e),this.code=n,this.originalError=t,this.name="WalletProviderError"}}var r;function s(e,n,t){return{types:{EIP712Domain:i(e),...n},primaryType:Object.keys(n)[0],domain:o(e),message:t}}function i(e){const n=[];return void 0!==e.name&&n.push({name:"name",type:"string"}),void 0!==e.version&&n.push({name:"version",type:"string"}),void 0!==e.chainId&&n.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&n.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&n.push({name:"salt",type:"bytes32"}),n}function o(e){const n={};return void 0!==e.name&&(n.name=e.name),void 0!==e.version&&(n.version=e.version),void 0!==e.chainId&&(n.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(n.verifyingContract=e.verifyingContract),void 0!==e.salt&&(n.salt=e.salt),n}function a(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function c(e,n,t){return e.request({method:"personal_sign",params:[a(t),n]})}async function d(e,n,t,r,i){return e.request({method:"eth_signTypedData_v4",params:[n,JSON.stringify(s(t,r,i))]})}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(r||(r={}));class l{constructor(n){this.connectedAddress=null,this.provider=n,this.eventHandlers=function(n,t,r){if(null==n||"function"!=typeof n.on)return{accountsChanged:null,disconnect:null};const s=n=>{const r=n[0];t(void 0===r?null:e(r))},i=()=>r();return n.on("accountsChanged",s),n.on("disconnect",i),{accountsChanged:s,disconnect:i}}(n,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,n){if("function"!=typeof e.removeListener)return;null!==n.accountsChanged&&e.removeListener("accountsChanged",n.accountsChanged);null!==n.disconnect&&e.removeListener("disconnect",n.disconnect)}(this.provider,this.eventHandlers)}}async function u(e,n,r){try{return await e()}catch(e){if(e instanceof t)throw e;return n(e,r)}}const h=4001,A=4100,w=4900,v=4901;class g extends l{constructor(e){if(super(e),this.providerType="external",null==e)throw new t("EIP-1193 provider is required",r.INVALID_CONFIG)}handleProviderError(e,n){const s=e;if(s.code===h)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(s.code===A)throw new t("Wallet is not authorized",r.NOT_CONNECTED,e instanceof Error?e:void 0);if(s.code===w||s.code===v)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);throw new t(s.message??`${n} failed`,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);return this.connectedAddress=e(s),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(()=>c(this.provider,this.connectedAddress,e),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(()=>d(this.provider,this.connectedAddress,e,n,t),(e,n)=>this.handleProviderError(e,n),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new t("Wallet is not connected",r.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new t("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}let E=null;async function f(){if(!1===E)return null;try{const e=await import("@gala-chain/connect");return E=!0,e}catch{return E=!1,null}}class y{constructor(e){if(this.providerType="external",this.connectedAddress=null,!e)throw new t("@gala-chain/connect client is required",r.INVALID_CONFIG);if("function"!=typeof e.signMessage)throw new t("Invalid @gala-chain/connect client: signMessage method is required",r.INVALID_CONFIG);this.client=e}static async createBrowserClient(e){const n=await f();if(null==n)throw new t("Failed to create BrowserConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{BrowserConnectClient:s}=n,i=s,o=e?new i(e):new i;return new y(o)}static async createTrustWalletClient(){const e=await f();if(null==e)throw new t("Failed to create TrustWalletConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{TrustWalletConnectClient:n}=e,s=new n;return new y(s)}static async isAvailable(){return null!==await f()}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED);return this.connectedAddress}async connect(){try{if("function"==typeof this.client.connect){const n=await this.client.connect();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}if("function"==typeof this.client.getAccount){const n=await this.client.getAccount();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}throw new t("Failed to connect: no account returned",r.CONNECTION_FAILED)}catch(e){if(e instanceof t)throw e;const n=e instanceof Error?e.message:String(e);if(n.length>0&&(n.includes("rejected")||n.includes("denied")))throw new t("User rejected connection",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to connect to wallet",r.CONNECTION_FAILED,e instanceof Error?e:void 0)}}async disconnect(){"function"==typeof this.client.disconnect&&await this.client.disconnect(),this.connectedAddress=null}isConnected(){return null!==this.connectedAddress}async signMessage(e){this.ensureConnected();try{return await this.client.signMessage(e)}catch(e){const n=e instanceof Error?e.message:String(e);if(n.includes("rejected")||n.includes("denied"))throw new t("User rejected signing",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}signTypedData(e,n,s){return Promise.reject(new t("signTypedData is not supported by GalaChainConnectProvider. Use ExternalWalletProvider with the underlying EIP-1193 provider instead.",r.SIGNING_FAILED))}async getAddress(){return await Promise.resolve(),this.ensureConnected()}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){return Promise.reject(new t("Private key is not accessible with @gala-chain/connect. Use PrivateKeyProvider if you need private key access.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getClient(){return this.client}}class p extends l{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new t("Gala Wallet provider is required",r.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const n=JSON.parse(e.message);if("object"==typeof n&&null!==n){const t=n,r={message:"string"==typeof t.message?t.message:e.message};return"number"==typeof t.code&&(r.code=t.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,n){const s=this.parseGalaError(e);if(4001===s.code)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(4900===s.code)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);const i=s.message?s.message:`${n} failed`;throw new t(i,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);this.galaRawAddress=s;let i=s;return i.startsWith("eth|")?i=`0x${i.slice(4)}`:i.startsWith("0x")||(i=`0x${i}`),this.connectedAddress=e(i),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),c(this.provider,this.connectedAddress,e)),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),d(this.provider,this.connectedAddress,e,n,t)),(e,n)=>this.handleProviderError(e,n),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new t("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}class I{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new n(e)}catch(e){throw new t("Invalid private key provided",r.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new I(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,n,s){try{return await this.wallet.signTypedData(e,n,s)}catch(e){throw new t("Failed to sign typed data",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(e(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}const N={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},m={[N.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[N.GALA]:"data:image/png;base64,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"};function C(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function L(){if(!C())return null;return window.ethereum??null}async function O(e=500){const n=[],t=new Map;return C()?new Promise(r=>{const s=new Set,i=e=>{const r=e,{info:i,provider:o}=r.detail;if(s.has(i.uuid))return;s.add(i.uuid);const a={id:i.rdns||i.uuid,name:i.name,rdns:i.rdns||i.uuid,icon:i.icon??m[i.rdns||""]??"",provider:o,isInjected:!1};n.push(a),t.set(a.id,a)};window.addEventListener("eip6963:announceProvider",i),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",i),0===n.length){const e=L();if(e){const r=window;let s="Browser Wallet",i="injected";r.ethereum?.isMetaMask?(s="MetaMask",i=N.METAMASK):r.ethereum?.isCoinbaseWallet?(s="Coinbase Wallet",i=N.COINBASE):r.ethereum?.isTrust&&(s="Trust Wallet",i=N.TRUST_WALLET);const o={id:i,name:s,rdns:i,icon:m[i]??"",provider:e,isInjected:!0};n.push(o),t.set(o.id,o)}}const e=window;if(e.gala?.request&&!t.has(N.GALA)){const r={id:N.GALA,name:"Gala Wallet",rdns:N.GALA,icon:m[N.GALA]??"",provider:e.gala,isInjected:!0};n.push(r),t.set(r.id,r)}r({wallets:n,byId:t,hasWallets:n.length>0,...void 0===n[0]?{}:{primary:n[0]}})},e)}):{wallets:n,byId:t,hasWallets:!1}}function T(e){if(!C())return()=>{};let n=!0,t={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!n)return;const s=r,{info:i,provider:o}=s.detail,a=i.rdns||i.uuid;if(t.byId.has(a))return;const c={id:a,name:i.name,rdns:a,icon:i.icon??"",provider:o,isInjected:!1},d=[...t.wallets,c],l=new Map(t.byId);l.set(c.id,c),t={wallets:d,byId:l,hasWallets:!0,...void 0===d[0]?{}:{primary:d[0]}},e(t)};return window.addEventListener("eip6963:announceProvider",r),O().then(r=>{n&&(t=r,e(r))}),()=>{n=!1,window.removeEventListener("eip6963:announceProvider",r)}}async function D(e,n){return(await O(n)).byId.get(e)??null}async function P(e,n){return null!==await D(e,n)}function S(){return null!==L()}function M(e){if(null!==e.privateKey&&void 0!==e.privateKey&&e.privateKey.length>0)return new I(e.privateKey);if(null!==e.eip1193Provider&&void 0!==e.eip1193Provider)return new g(e.eip1193Provider);throw new t("Invalid wallet provider config: must provide either privateKey or eip1193Provider",r.INVALID_CONFIG)}function F(e){return I.fromWallet(e)}function G(e){return new g(e)}function R(e){return"privateKey"===e.providerType}function V(e){return"external"===e.providerType}async function W(e){if(R(e))try{return await e.getPrivateKey()}catch{return}}function B(e){if(e)return I.fromWallet(e)}function U(e){if(e&&R(e))return e.getWallet()}async function K(e){return e.isConnected()?e.getAddress():e.connect()}function b(e){return"object"==typeof e&&null!==e&&"request"in e&&"function"==typeof e.request}function _(){if("undefined"==typeof window)return null;const e=window.ethereum;return b(e)?e:null}export{g as ExternalWalletProvider,y as GalaChainConnectProvider,p as GalaWalletProvider,N as KNOWN_WALLET_RDNS,I as PrivateKeyProvider,t as WalletProviderError,r as WalletProviderErrorCode,G as createProviderFromEip1193,F as createProviderFromWallet,M as createWalletProvider,O as detectWallets,K as ensureConnected,_ as getInjectedEip1193Provider,W as getPrivateKeyIfAvailable,D as getWalletByRdns,S as hasAnyWallet,b as isEip1193Provider,V as isExternalProvider,R as isPrivateKeyProvider,P as isWalletAvailable,U as providerToWallet,T as subscribeToWalletChanges,B as walletToProvider};
1
+ import{getAddress as e,Wallet as n}from"ethers";class t extends Error{constructor(e,n,t){super(e),this.code=n,this.originalError=t,this.name="WalletProviderError"}}var r;function s(e,n,t){return{types:{EIP712Domain:i(e),...n},primaryType:Object.keys(n)[0],domain:o(e),message:t}}function i(e){const n=[];return void 0!==e.name&&n.push({name:"name",type:"string"}),void 0!==e.version&&n.push({name:"version",type:"string"}),void 0!==e.chainId&&n.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&n.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&n.push({name:"salt",type:"bytes32"}),n}function o(e){const n={};return void 0!==e.name&&(n.name=e.name),void 0!==e.version&&(n.version=e.version),void 0!==e.chainId&&(n.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(n.verifyingContract=e.verifyingContract),void 0!==e.salt&&(n.salt=e.salt),n}function a(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function c(e,n,t){return e.request({method:"personal_sign",params:[a(t),n]})}async function d(e,n,t,r,i){return e.request({method:"eth_signTypedData_v4",params:[n,JSON.stringify(s(t,r,i))]})}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(r||(r={}));class l{constructor(n){this.connectedAddress=null,this.provider=n,this.eventHandlers=function(n,t,r){if(null==n||"function"!=typeof n.on)return{accountsChanged:null,disconnect:null};const s=n=>{const r=n[0];t(void 0===r?null:e(r))},i=()=>r();return n.on("accountsChanged",s),n.on("disconnect",i),{accountsChanged:s,disconnect:i}}(n,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,n){if("function"!=typeof e.removeListener)return;null!==n.accountsChanged&&e.removeListener("accountsChanged",n.accountsChanged);null!==n.disconnect&&e.removeListener("disconnect",n.disconnect)}(this.provider,this.eventHandlers)}}async function u(e,n,r){try{return await e()}catch(e){if(e instanceof t)throw e;return n(e,r)}}const h=4001,A=4100,w=4900,v=4901;class g extends l{constructor(e){if(super(e),this.providerType="external",null==e)throw new t("EIP-1193 provider is required",r.INVALID_CONFIG)}handleProviderError(e,n){const s=e;if(s.code===h)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(s.code===A)throw new t("Wallet is not authorized",r.NOT_CONNECTED,e instanceof Error?e:void 0);if(s.code===w||s.code===v)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);throw new t(s.message??`${n} failed`,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);return this.connectedAddress=e(s),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(()=>c(this.provider,this.connectedAddress,e),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(()=>d(this.provider,this.connectedAddress,e,n,t),(e,n)=>this.handleProviderError(e,n),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new t("Wallet is not connected",r.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new t("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}let E=null;async function f(){if(!1===E)return null;try{const e=["@gala-chain","connect"].join("/"),n=await import(e);return E=!0,n}catch{return E=!1,null}}class y{constructor(e){if(this.providerType="external",this.connectedAddress=null,!e)throw new t("@gala-chain/connect client is required",r.INVALID_CONFIG);if("function"!=typeof e.signMessage)throw new t("Invalid @gala-chain/connect client: signMessage method is required",r.INVALID_CONFIG);this.client=e}static async createBrowserClient(e){const n=await f();if(null==n)throw new t("Failed to create BrowserConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{BrowserConnectClient:s}=n,i=s,o=e?new i(e):new i;return new y(o)}static async createTrustWalletClient(){const e=await f();if(null==e)throw new t("Failed to create TrustWalletConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{TrustWalletConnectClient:n}=e,s=new n;return new y(s)}static async isAvailable(){return null!==await f()}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED);return this.connectedAddress}async connect(){try{if("function"==typeof this.client.connect){const n=await this.client.connect();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}if("function"==typeof this.client.getAccount){const n=await this.client.getAccount();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}throw new t("Failed to connect: no account returned",r.CONNECTION_FAILED)}catch(e){if(e instanceof t)throw e;const n=e instanceof Error?e.message:String(e);if(n.length>0&&(n.includes("rejected")||n.includes("denied")))throw new t("User rejected connection",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to connect to wallet",r.CONNECTION_FAILED,e instanceof Error?e:void 0)}}async disconnect(){"function"==typeof this.client.disconnect&&await this.client.disconnect(),this.connectedAddress=null}isConnected(){return null!==this.connectedAddress}async signMessage(e){this.ensureConnected();try{return await this.client.signMessage(e)}catch(e){const n=e instanceof Error?e.message:String(e);if(n.includes("rejected")||n.includes("denied"))throw new t("User rejected signing",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}signTypedData(e,n,s){return Promise.reject(new t("signTypedData is not supported by GalaChainConnectProvider. Use ExternalWalletProvider with the underlying EIP-1193 provider instead.",r.SIGNING_FAILED))}async getAddress(){return await Promise.resolve(),this.ensureConnected()}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){return Promise.reject(new t("Private key is not accessible with @gala-chain/connect. Use PrivateKeyProvider if you need private key access.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getClient(){return this.client}}class p extends l{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new t("Gala Wallet provider is required",r.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const n=JSON.parse(e.message);if("object"==typeof n&&null!==n){const t=n,r={message:"string"==typeof t.message?t.message:e.message};return"number"==typeof t.code&&(r.code=t.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,n){const s=this.parseGalaError(e);if(4001===s.code)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(4900===s.code)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);const i=s.message?s.message:`${n} failed`;throw new t(i,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);this.galaRawAddress=s;let i=s;return i.startsWith("eth|")?i=`0x${i.slice(4)}`:i.startsWith("0x")||(i=`0x${i}`),this.connectedAddress=e(i),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),c(this.provider,this.connectedAddress,e)),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),d(this.provider,this.connectedAddress,e,n,t)),(e,n)=>this.handleProviderError(e,n),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new t("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}class I{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new n(e)}catch(e){throw new t("Invalid private key provided",r.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new I(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,n,s){try{return await this.wallet.signTypedData(e,n,s)}catch(e){throw new t("Failed to sign typed data",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(e(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}const N={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},m={[N.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[N.GALA]:"data:image/png;base64,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"};function C(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function L(){if(!C())return null;return window.ethereum??null}async function O(e=500){const n=[],t=new Map;return C()?new Promise(r=>{const s=new Set,i=e=>{const r=e,{info:i,provider:o}=r.detail;if(s.has(i.uuid))return;s.add(i.uuid);const a={id:i.rdns||i.uuid,name:i.name,rdns:i.rdns||i.uuid,icon:i.icon??m[i.rdns||""]??"",provider:o,isInjected:!1};n.push(a),t.set(a.id,a)};window.addEventListener("eip6963:announceProvider",i),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",i),0===n.length){const e=L();if(e){const r=window;let s="Browser Wallet",i="injected";r.ethereum?.isMetaMask?(s="MetaMask",i=N.METAMASK):r.ethereum?.isCoinbaseWallet?(s="Coinbase Wallet",i=N.COINBASE):r.ethereum?.isTrust&&(s="Trust Wallet",i=N.TRUST_WALLET);const o={id:i,name:s,rdns:i,icon:m[i]??"",provider:e,isInjected:!0};n.push(o),t.set(o.id,o)}}const e=window;if(e.gala?.request&&!t.has(N.GALA)){const r={id:N.GALA,name:"Gala Wallet",rdns:N.GALA,icon:m[N.GALA]??"",provider:e.gala,isInjected:!0};n.push(r),t.set(r.id,r)}r({wallets:n,byId:t,hasWallets:n.length>0,...void 0===n[0]?{}:{primary:n[0]}})},e)}):{wallets:n,byId:t,hasWallets:!1}}function T(e){if(!C())return()=>{};let n=!0,t={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!n)return;const s=r,{info:i,provider:o}=s.detail,a=i.rdns||i.uuid;if(t.byId.has(a))return;const c={id:a,name:i.name,rdns:a,icon:i.icon??"",provider:o,isInjected:!1},d=[...t.wallets,c],l=new Map(t.byId);l.set(c.id,c),t={wallets:d,byId:l,hasWallets:!0,...void 0===d[0]?{}:{primary:d[0]}},e(t)};return window.addEventListener("eip6963:announceProvider",r),O().then(r=>{n&&(t=r,e(r))}),()=>{n=!1,window.removeEventListener("eip6963:announceProvider",r)}}async function D(e,n){return(await O(n)).byId.get(e)??null}async function P(e,n){return null!==await D(e,n)}function S(){return null!==L()}function M(e){if(null!==e.privateKey&&void 0!==e.privateKey&&e.privateKey.length>0)return new I(e.privateKey);if(null!==e.eip1193Provider&&void 0!==e.eip1193Provider)return new g(e.eip1193Provider);throw new t("Invalid wallet provider config: must provide either privateKey or eip1193Provider",r.INVALID_CONFIG)}function F(e){return I.fromWallet(e)}function G(e){return new g(e)}function R(e){return"privateKey"===e.providerType}function V(e){return"external"===e.providerType}async function W(e){if(R(e))try{return await e.getPrivateKey()}catch{return}}function B(e){if(e)return I.fromWallet(e)}function U(e){if(e&&R(e))return e.getWallet()}async function K(e){return e.isConnected()?e.getAddress():e.connect()}function b(e){return"object"==typeof e&&null!==e&&"request"in e&&"function"==typeof e.request}function _(){if("undefined"==typeof window)return null;const e=window.ethereum;return b(e)?e:null}export{g as ExternalWalletProvider,y as GalaChainConnectProvider,p as GalaWalletProvider,N as KNOWN_WALLET_RDNS,I as PrivateKeyProvider,t as WalletProviderError,r as WalletProviderErrorCode,G as createProviderFromEip1193,F as createProviderFromWallet,M as createWalletProvider,O as detectWallets,K as ensureConnected,_ as getInjectedEip1193Provider,W as getPrivateKeyIfAvailable,D as getWalletByRdns,S as hasAnyWallet,b as isEip1193Provider,V as isExternalProvider,R as isPrivateKeyProvider,P as isWalletAvailable,U as providerToWallet,T as subscribeToWalletChanges,B as walletToProvider};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@gala-chain/launchpad-sdk",
4
- "version": "7.0.0-beta.2",
4
+ "version": "7.0.0-beta.4",
5
5
  "description": "TypeScript SDK for Gala Launchpad Backend API - 273 public methods supporting optional wallet (read-only and full-access modes). Production-ready DeFi token launchpad integration with AgentConfig setup, GalaChain trading, GSwap DEX integration, price history, token creation, DEX pool discovery, WebSocket event watchers, streaming, chat, bans, moderator invites, and comprehensive user operations. Multi-format output (ESM, CJS, UMD).",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.esm.js",
@@ -100,7 +100,7 @@
100
100
  },
101
101
  "homepage": "https://gitlab.com/gala-games/defi/launchpad/sdk#readme",
102
102
  "engines": {
103
- "node": ">=18.0.0",
103
+ "node": ">=20.0.0",
104
104
  "npm": ">=10.0.0"
105
105
  },
106
106
  "publishConfig": {
@@ -108,11 +108,10 @@
108
108
  "registry": "https://registry.npmjs.org/"
109
109
  },
110
110
  "peerDependencies": {
111
- "@gala-chain/api": "^2.4.3",
112
- "@gala-chain/connect": "^2.7.0",
113
- "@gala-chain/dex": "^1.0.26",
114
- "axios": "^1.13.6",
115
- "bignumber.js": "^9.3.1",
111
+ "@gala-chain/api": "^3.3.0",
112
+ "@gala-chain/connect": "^3.3.0",
113
+ "axios": "^1.20.0",
114
+ "bignumber.js": "^11.1.5",
116
115
  "ethers": "^6.16.0",
117
116
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
118
117
  "socket.io-client": "^4.8.3",
@@ -133,22 +132,19 @@
133
132
  "not ie 11"
134
133
  ],
135
134
  "dependencies": {
136
- "@gala-chain/api": "^2.7.1",
137
- "@gala-chain/connect": "^2.7.1",
135
+ "@gala-chain/api": "^3.3.0",
138
136
  "@gala-chain/gswap-sdk": "^1.0.0-rc.3",
139
- "@gala-chain/dex": "^1.0.27",
140
- "@modelcontextprotocol/sdk": "1.27.1",
141
- "@solana/spl-token": "^0.4.14",
142
- "@solana/web3.js": "^1.98.4",
143
- "@types/uuid": "^11.0.0",
144
- "axios": "^1.13.6",
145
- "bignumber.js": "^9.3.1",
137
+ "@modelcontextprotocol/sdk": "^1.30.1",
138
+ "@solana/spl-token": "^0.4.15",
139
+ "@solana/web3.js": "^1.99.0",
140
+ "axios": "^1.20.0",
141
+ "bignumber.js": "^11.1.5",
146
142
  "bs58": "^6.0.0",
147
- "dotenv": "^17.2.3",
143
+ "dotenv": "^18.0.3",
148
144
  "ethers": "^6.16.0",
149
- "json-stringify-deterministic": "^1.0.12",
145
+ "json-stringify-deterministic": "^1.0.16",
150
146
  "socket.io-client": "^4.8.3",
151
- "uuid": "^13.0.0",
147
+ "uuid": "^14.0.2",
152
148
  "web-file-polyfill": "^1.0.4",
153
149
  "zod": "^4.3.6"
154
150
  },
@@ -165,9 +161,9 @@
165
161
  "zod",
166
162
  "dotenv",
167
163
  "events",
168
- "@gala-chain/api",
169
- "@gala-chain/connect",
170
- "@gala-chain/dex"
164
+ "crypto",
165
+ "node:crypto",
166
+ "@gala-chain/api"
171
167
  ]
172
168
  },
173
169
  {
@@ -183,11 +179,10 @@
183
179
  "dotenv",
184
180
  "events",
185
181
  "@gala-chain/api",
186
- "@gala-chain/connect",
187
- "@gala-chain/dex",
188
182
  "fs",
189
183
  "path",
190
184
  "crypto",
185
+ "node:crypto",
191
186
  "os",
192
187
  "util",
193
188
  "stream",
@@ -201,20 +196,25 @@
201
196
  }
202
197
  ],
203
198
  "devDependencies": {
204
- "@typescript-eslint/eslint-plugin": "^8.58.0",
205
- "@typescript-eslint/parser": "^8.58.0",
206
- "@testing-library/dom": "^10.4.0",
207
- "@testing-library/react": "^16.3.2",
208
- "@types/react": "^19.2.14",
209
- "@vitest/coverage-v8": "^4.1.1",
210
- "eslint": "^9.39.2",
199
+ "@gala-chain/connect-2-reference": "npm:@gala-chain/connect@2.7.1",
200
+ "@testing-library/dom": "^10.4.2",
201
+ "@testing-library/react": "^16.3.3",
202
+ "@types/react": "^19.3.0",
203
+ "@typescript-eslint/eslint-plugin": "^8.70.1",
204
+ "@typescript-eslint/parser": "^8.70.1",
205
+ "@typescript/native": "npm:typescript@^7.0.2",
206
+ "@vitest/coverage-v8": "^5.0.1",
207
+ "eslint": "^10.11.0",
211
208
  "eslint-config-prettier": "^10.1.8",
212
- "eslint-plugin-prettier": "^5.5.5",
209
+ "eslint-plugin-prettier": "^5.5.6",
213
210
  "eslint-plugin-unused-imports": "^4.4.1",
214
211
  "jscpd": "^5.1.2",
215
- "react": "^19.2.4",
216
- "react-dom": "^19.2.4",
217
- "tsx": "^4.21.0"
212
+ "react": "^19.3.0",
213
+ "react-dom": "^19.3.0",
214
+ "tsx": "^4.21.0",
215
+ "typescript": "npm:@typescript/typescript6@^6.0.2",
216
+ "vite": "^8.3.0",
217
+ "vitest": "^5.0.1"
218
218
  },
219
219
  "scripts": {
220
220
  "build": "pnpm run build:version && pnpm run clean && pnpm run build:types && pnpm run build:bundle",
@@ -228,8 +228,8 @@
228
228
  "test:live": "vitest run tests/live/stage.live.ts --config tests/live/vitest.live.config.ts --testTimeout 300000",
229
229
  "test:watch": "vitest",
230
230
  "test:coverage": "pnpm run test:cov",
231
- "test:cov": "vitest run --coverage",
232
- "test:ci": "vitest run --coverage --reporter=verbose",
231
+ "test:cov": "vitest run --coverage --maxWorkers=6",
232
+ "test:ci": "vitest run --coverage --reporter=verbose --maxWorkers=6",
233
233
  "coverage:goal": "tsx scripts/check-coverage-threshold.ts",
234
234
  "check:coverage:goal": "pnpm run test:cov && pnpm run coverage:goal",
235
235
  "check:clones": "jscpd --min-lines 12 --min-tokens 70 --threshold 0 src tests",