@tonconnect/sdk
Version:
Use it to connect your app to TON wallets via TonConnect protocol. You can find more details and the protocol specification in the [docs](https://docs.ton.org/develop/dapps/ton-connect/overview). See the example of sdk usage [here](https://github.com/ton
1 lines • 182 kB
JavaScript
var TonConnectSDK;(()=>{var e={48:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WrongAddressError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"Passed address is in incorrect format."}constructor(...e){super(...e),Object.setPrototypeOf(this,o.prototype)}}t.WrongAddressError=o},98:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regex=void 0,t.regex=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i},119:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ManifestContentErrorError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"Passed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest"}constructor(...e){super(...e),Object.setPrototypeOf(this,o.prototype)}}t.ManifestContentErrorError=o},151:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.UUIDv7=t.isWalletConnectInitialized=t.initializeWalletConnect=t.isQaModeEnabled=t.enableQaMode=t.isConnectUrl=t.decodeTelegramUrlParameters=t.encodeTelegramUrlParameters=t.isTelegramUrl=t.checkRequiredWalletFeatures=t.toUserFriendlyAddress=t.SIGN_DATA_ERROR_CODES=t.SEND_TRANSACTION_ERROR_CODES=t.CONNECT_EVENT_ERROR_CODES=t.CONNECT_ITEM_ERROR_CODES=t.SessionCrypto=t.CHAIN=t.BrowserEventDispatcher=t.createSelectedWalletEvent=t.createWalletModalOpenedEvent=t.createVersionInfo=t.createResponseVersionEvent=t.createRequestVersionEvent=t.createDataSignedEvent=t.createDataSigningFailedEvent=t.createDataSentForSignatureEvent=t.createTransactionSignedEvent=t.createTransactionSigningFailedEvent=t.createTransactionSentForSignatureEvent=t.createDisconnectionEvent=t.createConnectionRestoringCompletedEvent=t.createConnectionRestoringErrorEvent=t.createConnectionRestoringStartedEvent=t.createConnectionCompletedEvent=t.createConnectionErrorEvent=t.createConnectionStartedEvent=t.WalletsListManager=t.default=void 0,o(n(2361),t),o(n(3062),t),o(n(2931),t);var i=n(2361);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.TonConnect}});var s=n(9660);Object.defineProperty(t,"WalletsListManager",{enumerable:!0,get:function(){return s.WalletsListManager}});var a=n(613);Object.defineProperty(t,"createConnectionStartedEvent",{enumerable:!0,get:function(){return a.createConnectionStartedEvent}}),Object.defineProperty(t,"createConnectionErrorEvent",{enumerable:!0,get:function(){return a.createConnectionErrorEvent}}),Object.defineProperty(t,"createConnectionCompletedEvent",{enumerable:!0,get:function(){return a.createConnectionCompletedEvent}}),Object.defineProperty(t,"createConnectionRestoringStartedEvent",{enumerable:!0,get:function(){return a.createConnectionRestoringStartedEvent}}),Object.defineProperty(t,"createConnectionRestoringErrorEvent",{enumerable:!0,get:function(){return a.createConnectionRestoringErrorEvent}}),Object.defineProperty(t,"createConnectionRestoringCompletedEvent",{enumerable:!0,get:function(){return a.createConnectionRestoringCompletedEvent}}),Object.defineProperty(t,"createDisconnectionEvent",{enumerable:!0,get:function(){return a.createDisconnectionEvent}}),Object.defineProperty(t,"createTransactionSentForSignatureEvent",{enumerable:!0,get:function(){return a.createTransactionSentForSignatureEvent}}),Object.defineProperty(t,"createTransactionSigningFailedEvent",{enumerable:!0,get:function(){return a.createTransactionSigningFailedEvent}}),Object.defineProperty(t,"createTransactionSignedEvent",{enumerable:!0,get:function(){return a.createTransactionSignedEvent}}),Object.defineProperty(t,"createDataSentForSignatureEvent",{enumerable:!0,get:function(){return a.createDataSentForSignatureEvent}}),Object.defineProperty(t,"createDataSigningFailedEvent",{enumerable:!0,get:function(){return a.createDataSigningFailedEvent}}),Object.defineProperty(t,"createDataSignedEvent",{enumerable:!0,get:function(){return a.createDataSignedEvent}}),Object.defineProperty(t,"createRequestVersionEvent",{enumerable:!0,get:function(){return a.createRequestVersionEvent}}),Object.defineProperty(t,"createResponseVersionEvent",{enumerable:!0,get:function(){return a.createResponseVersionEvent}}),Object.defineProperty(t,"createVersionInfo",{enumerable:!0,get:function(){return a.createVersionInfo}}),Object.defineProperty(t,"createWalletModalOpenedEvent",{enumerable:!0,get:function(){return a.createWalletModalOpenedEvent}}),Object.defineProperty(t,"createSelectedWalletEvent",{enumerable:!0,get:function(){return a.createSelectedWalletEvent}});var c=n(6895);Object.defineProperty(t,"BrowserEventDispatcher",{enumerable:!0,get:function(){return c.BrowserEventDispatcher}});var l=n(7321);Object.defineProperty(t,"CHAIN",{enumerable:!0,get:function(){return l.CHAIN}}),Object.defineProperty(t,"SessionCrypto",{enumerable:!0,get:function(){return l.SessionCrypto}}),Object.defineProperty(t,"CONNECT_ITEM_ERROR_CODES",{enumerable:!0,get:function(){return l.CONNECT_ITEM_ERROR_CODES}}),Object.defineProperty(t,"CONNECT_EVENT_ERROR_CODES",{enumerable:!0,get:function(){return l.CONNECT_EVENT_ERROR_CODES}}),Object.defineProperty(t,"SEND_TRANSACTION_ERROR_CODES",{enumerable:!0,get:function(){return l.SEND_TRANSACTION_ERROR_CODES}}),Object.defineProperty(t,"SIGN_DATA_ERROR_CODES",{enumerable:!0,get:function(){return l.SIGN_DATA_ERROR_CODES}});var d=n(8409);Object.defineProperty(t,"toUserFriendlyAddress",{enumerable:!0,get:function(){return d.toUserFriendlyAddress}});var u=n(3317);Object.defineProperty(t,"checkRequiredWalletFeatures",{enumerable:!0,get:function(){return u.checkRequiredWalletFeatures}});var h=n(2192);Object.defineProperty(t,"isTelegramUrl",{enumerable:!0,get:function(){return h.isTelegramUrl}}),Object.defineProperty(t,"encodeTelegramUrlParameters",{enumerable:!0,get:function(){return h.encodeTelegramUrlParameters}}),Object.defineProperty(t,"decodeTelegramUrlParameters",{enumerable:!0,get:function(){return h.decodeTelegramUrlParameters}}),Object.defineProperty(t,"isConnectUrl",{enumerable:!0,get:function(){return h.isConnectUrl}});var p=n(6351);Object.defineProperty(t,"enableQaMode",{enumerable:!0,get:function(){return p.enableQaMode}}),Object.defineProperty(t,"isQaModeEnabled",{enumerable:!0,get:function(){return p.isQaModeEnabled}});var g=n(4504);Object.defineProperty(t,"initializeWalletConnect",{enumerable:!0,get:function(){return g.initializeWalletConnect}}),Object.defineProperty(t,"isWalletConnectInitialized",{enumerable:!0,get:function(){return g.isWalletConnectInitialized}});var f=n(6809);Object.defineProperty(t,"UUIDv7",{enumerable:!0,get:function(){return f.UUIDv7}})},166:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.signDataParser=void 0;const r=n(7321),o=n(2931),i=n(5137),s=n(4475),a={[r.SIGN_DATA_ERROR_CODES.UNKNOWN_ERROR]:i.UnknownError,[r.SIGN_DATA_ERROR_CODES.USER_REJECTS_ERROR]:o.UserRejectsError,[r.SIGN_DATA_ERROR_CODES.BAD_REQUEST_ERROR]:o.BadRequestError,[r.SIGN_DATA_ERROR_CODES.UNKNOWN_APP_ERROR]:o.UnknownAppError};class c extends s.RpcParser{convertToRpcRequest(e){return{method:"signData",params:[JSON.stringify(e)]}}parseAndThrowError(e){let t=i.UnknownError;throw e.error.code in a&&(t=a[e.error.code]||i.UnknownError),new t(e.error.message)}convertFromRpcResponse(e){return e.result}}t.signDataParser=new c},256:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultEnvironment=void 0,t.DefaultEnvironment=class{getClientEnvironment(){return""}getBrowser(){return""}getLocale(){return""}getPlatform(){return""}getTelegramUser(){}}},332:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LocalstorageNotFoundError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"Storage was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment."}constructor(...e){super(...e),Object.setPrototypeOf(this,o.prototype)}}t.LocalstorageNotFoundError=o},359:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WalletAlreadyConnectedError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"Wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection."}constructor(...e){super(...e),Object.setPrototypeOf(this,o.prototype)}}t.WalletAlreadyConnectedError=o},379:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},492:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},607:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createAbortController=function(e){const t=new AbortController;return(null==e?void 0:e.aborted)?t.abort():null==e||e.addEventListener("abort",()=>t.abort(),{once:!0}),t}},613:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createRequestVersionEvent=function(){return{type:"request-version"}},t.createResponseVersionEvent=function(e){return{type:"response-version",version:e}},t.createVersionInfo=o,t.createConnectionStartedEvent=function(e,t){return{type:"connection-started",custom_data:o(e),trace_id:null!=t?t:null}},t.createConnectionCompletedEvent=function(e,t,n,r){return Object.assign({type:"connection-completed",is_success:!0,trace_id:null!=r?r:null},i(e,t,n))},t.createConnectionErrorEvent=function(e,t,n,r,i){var s,a;return{type:"connection-error",is_success:!1,error_message:t,error_code:null!=n?n:null,trace_id:null!=i?i:null,custom_data:Object.assign({client_id:null!==(s=null==r?void 0:r.clientId)&&void 0!==s?s:null,wallet_id:null!==(a=null==r?void 0:r.walletId)&&void 0!==a?a:null},o(e))}},t.createConnectionRestoringStartedEvent=function(e,t){return{type:"connection-restoring-started",custom_data:o(e),trace_id:null!=t?t:null}},t.createConnectionRestoringCompletedEvent=function(e,t,n,r){return Object.assign({type:"connection-restoring-completed",is_success:!0,trace_id:null!=r?r:null},i(e,t,n))},t.createConnectionRestoringErrorEvent=function(e,t,n){return{type:"connection-restoring-error",is_success:!1,error_message:t,trace_id:null!=n?n:null,custom_data:o(e)}},t.createTransactionSentForSignatureEvent=function(e,t,n,r,o){return Object.assign(Object.assign({type:"transaction-sent-for-signature",trace_id:null!=o?o:null},i(e,t,r)),s(t,n))},t.createTransactionSignedEvent=function(e,t,n,r,o,a){return Object.assign(Object.assign({type:"transaction-signed",is_success:!0,signed_transaction:r.boc,trace_id:null!=a?a:null},i(e,t,o)),s(t,n))},t.createTransactionSigningFailedEvent=function(e,t,n,r,o,s,a){return Object.assign(Object.assign({type:"transaction-signing-failed",is_success:!1,error_message:r,error_code:null!=o?o:null,trace_id:null!=a?a:null},i(e,t,s)),function(e,t){var n,r,o,i;return{valid_until:null!==(n=String(t.validUntil))&&void 0!==n?n:null,from:null!==(i=null!==(r=t.from)&&void 0!==r?r:null===(o=null==e?void 0:e.account)||void 0===o?void 0:o.address)&&void 0!==i?i:null,messages:t.messages.map(e=>{var t,n,r,o;return{address:null!==(t=e.address)&&void 0!==t?t:null,amount:null!==(n=e.amount)&&void 0!==n?n:null,payload:null!==(r=e.payload)&&void 0!==r?r:null,state_init:null!==(o=e.stateInit)&&void 0!==o?o:null}})}}(t,n))},t.createDataSentForSignatureEvent=function(e,t,n,r,o){return Object.assign({type:"sign-data-request-initiated",data:n,trace_id:null!=o?o:null},i(e,t,r))},t.createDataSignedEvent=function(e,t,n,r,o,s){return Object.assign({type:"sign-data-request-completed",is_success:!0,data:n,signed_data:r,trace_id:null!=s?s:null},i(e,t,o))},t.createDataSigningFailedEvent=function(e,t,n,r,o,s,a){return Object.assign({type:"sign-data-request-failed",is_success:!1,data:n,error_message:r,error_code:null!=o?o:null,trace_id:null!=a?a:null},i(e,t,s))},t.createDisconnectionEvent=function(e,t,n,r,o){return Object.assign({type:"disconnection",scope:n,trace_id:null!=o?o:null},i(e,t,r))},t.createWalletModalOpenedEvent=function(e,t,n,r){return{type:"wallet-modal-opened",visible_wallets:t,client_id:null!=n?n:null,custom_data:e,trace_id:null!=r?r:null}},t.createSelectedWalletEvent=function(e,t,n,o,i,s,a,c){var l;let d=s;return!d&&i&&(d=(0,r.isTelegramUrl)(i)?"tg_link":"external_link"),{type:"selected-wallet",wallets_menu:o,visible_wallets:t,client_id:null!=a?a:null,custom_data:e,trace_id:null!=c?c:null,wallet_redirect_method:d,wallet_redirect_link:i||void 0,wallet_type:null!==(l=null==n?void 0:n.appName)&&void 0!==l?l:null}};const r=n(2192);function o(e){return{ton_connect_sdk_lib:e.ton_connect_sdk_lib,ton_connect_ui_lib:e.ton_connect_ui_lib}}function i(e,t,n){var r,i,s,a,c,l,d,u,h,p,g;const f=(null===(r=null==t?void 0:t.connectItems)||void 0===r?void 0:r.tonProof)&&"proof"in t.connectItems.tonProof?"ton_proof":"ton_addr";return{wallet_address:null!==(s=null===(i=null==t?void 0:t.account)||void 0===i?void 0:i.address)&&void 0!==s?s:null,wallet_state_init:null!==(a=null==t?void 0:t.account.walletStateInit)&&void 0!==a?a:null,wallet_type:null!==(c=null==t?void 0:t.device.appName)&&void 0!==c?c:null,wallet_version:null!==(l=null==t?void 0:t.device.appVersion)&&void 0!==l?l:null,auth_type:f,custom_data:Object.assign({client_id:null!==(d=null==n?void 0:n.clientId)&&void 0!==d?d:null,wallet_id:null!==(u=null==n?void 0:n.walletId)&&void 0!==u?u:null,chain_id:null!==(p=null===(h=null==t?void 0:t.account)||void 0===h?void 0:h.chain)&&void 0!==p?p:null,provider:null!==(g=null==t?void 0:t.provider)&&void 0!==g?g:null},o(e))}}function s(e,t){var n,r,o,i;return{valid_until:null!==(n=String(t.validUntil))&&void 0!==n?n:null,from:null!==(i=null!==(r=t.from)&&void 0!==r?r:null===(o=null==e?void 0:e.account)||void 0===o?void 0:o.address)&&void 0!==i?i:null,messages:t.messages.map(e=>{var t,n;return{address:null!==(t=e.address)&&void 0!==t?t:null,amount:null!==(n=e.amount)&&void 0!==n?n:null}})}}},939:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WalletMissingRequiredFeaturesError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"Missing required features. You need to update your wallet."}constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype)}}t.WalletMissingRequiredFeaturesError=o},1055:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WalletWrongNetworkError=void 0;const r=n(1689);class o extends r.TonConnectError{constructor(e,t){super(e,t),this.name="WalletWrongNetworkError",Object.setPrototypeOf(this,o.prototype)}}t.WalletWrongNetworkError=o},1118:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0}),t.AnalyticsManager=void 0;const o=n(1203),i=n(3713),s=n(6809),a=n(7233),c=n(6351),l=n(5418),d=n(2931);class u{constructor(e={}){var t,n,r,o,s,c;this.events=[],this.timeoutId=null,this.isProcessing=!1,this.backoff=1,this.shouldSend=!0,this.batchTimeoutMs=null!==(t=e.batchTimeoutMs)&&void 0!==t?t:2e3,this.currentBatchTimeoutMs=this.batchTimeoutMs,this.maxBatchSize=null!==(n=e.maxBatchSize)&&void 0!==n?n:100,this.analyticsUrl=null!==(r=e.analyticsUrl)&&void 0!==r?r:"https://analytics.ton.org/events",this.mode=null!==(o=e.mode)&&void 0!==o?o:"telemetry",this.baseEvent=Object.assign({subsystem:"dapp-sdk",version:i.tonConnectSdkVersion,client_environment:null===(c=null===(s=e.environment)||void 0===s?void 0:s.getClientEnvironment)||void 0===c?void 0:c.call(s)},(0,a.getStaticConnectionMetrics)()),this.addWindowFocusAndBlurSubscriptions()}scoped(e){return new Proxy(this,{get(t,n){const r=n.toString();if(r.startsWith("emit")){const n=r.replace("emit",""),o=(0,a.pascalToKebab)(n);return function(n){const r=Object.fromEntries(Object.entries(null!=e?e:{}).map(([e,t])=>[e,"function"==typeof t?t():t]));return t.emit(Object.assign(Object.assign({event_name:o},r),n))}}return t[n]}})}emit(e){var t;if("off"===this.mode)return;const n=null!==(t=e.trace_id)&&void 0!==t?t:(0,s.UUIDv7)(),r=(0,a.getDynamicConnectionMetrics)(),i=Object.assign(Object.assign(Object.assign(Object.assign({},this.baseEvent),r),e),{event_id:(0,s.UUIDv7)(),client_timestamp:Math.floor(Date.now()/1e3),trace_id:n}),l="telemetry"===this.mode?this.filterFullModeFields(i):i;(0,c.isQaModeEnabled)()&&(0,o.logDebug)(l),this.events.push(l),this.events.length>=this.maxBatchSize?this.flush():this.startTimeout()}startTimeout(){this.timeoutId||this.isProcessing||(this.timeoutId=setTimeout(()=>{this.flush()},this.currentBatchTimeoutMs))}flush(){return r(this,void 0,void 0,function*(){if(this.isProcessing||0===this.events.length||!this.shouldSend)return;this.clearTimeout(),this.isProcessing=!0;const e=this.extractEventsToSend();try{yield this.processEventsBatch(e),(0,o.logDebug)("Analytics events sent successfully")}catch(t){this.restoreEvents(e),(0,o.logError)("Failed to send analytics events:",t)}finally{this.isProcessing=!1,this.scheduleNextFlushIfNeeded()}})}clearTimeout(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}extractEventsToSend(){const e=this.events.slice(0,this.maxBatchSize);return this.events=this.events.slice(this.maxBatchSize),e}processEventsBatch(e){return r(this,void 0,void 0,function*(){(0,o.logDebug)("Sending analytics events...",e.length);try{const t=yield this.sendEvents(e);this.handleResponse(t)}catch(e){this.handleUnknownError(e)}})}handleResponse(e){const{status:t,statusText:n}=e;this.isTooManyRequests(t)?this.handleTooManyRequests(t,n):this.isClientError(t)?this.handleClientError(t,n):this.isServerError(t)&&this.handleUnknownError({status:t,statusText:n})}restoreEvents(e){this.events.unshift(...e)}scheduleNextFlushIfNeeded(){this.events.length>0&&this.startTimeout()}sendEvents(e){return r(this,void 0,void 0,function*(){return yield fetch(this.analyticsUrl,{method:"POST",headers:{"Content-Type":"application/json","X-Client-Timestamp":Math.floor(Date.now()/1e3).toString()},body:JSON.stringify(e)})})}isClientError(e){return e>=u.HTTP_STATUS.CLIENT_ERROR_START&&e<u.HTTP_STATUS.SERVER_ERROR_START}isServerError(e){return e>=u.HTTP_STATUS.SERVER_ERROR_START}isTooManyRequests(e){return e===u.HTTP_STATUS.TOO_MANY_REQUESTS}handleClientError(e,t){(0,o.logError)("Failed to send analytics events:",new d.TonConnectError(`Analytics API error: ${e} ${t}`))}handleUnknownError(e){if(this.backoff<u.MAX_BACKOFF_ATTEMPTS)throw this.backoff++,this.currentBatchTimeoutMs*=u.BACKOFF_MULTIPLIER,new d.TonConnectError(`Unknown analytics API error: ${e}`);return this.currentBatchTimeoutMs=this.batchTimeoutMs,void(this.backoff=1)}handleTooManyRequests(e,t){throw new d.TonConnectError(`Analytics API error: ${e} ${t}`)}addWindowFocusAndBlurSubscriptions(){const e=(0,l.getDocument)();if(e)try{e.addEventListener("visibilitychange",()=>{e.hidden?(this.clearTimeout(),this.shouldSend=!1):(this.shouldSend=!0,this.scheduleNextFlushIfNeeded())})}catch(e){(0,o.logError)("Cannot subscribe to the document.visibilitychange: ",e)}}getMode(){return this.mode}getPendingEventsCount(){return this.events.length}filterFullModeFields(e){const t=Object.assign({},e);for(const e of u.FULL_MODE_FIELDS)delete t[e];const n="event_name"in e?String(e.event_name):"";return!("error_code"in e||"error_message"in e||n.includes("error")||"connection-error"===n||"transaction-signing-failed"===n||"sign-data-request-failed"===n)&&"wallet_address"in t&&delete t.wallet_address,t}setWalletListDownloadDuration(e){this.baseEvent=Object.assign(Object.assign({},this.baseEvent),{wallet_list_download_duration:e})}}t.AnalyticsManager=u,u.HTTP_STATUS={TOO_MANY_REQUESTS:429,CLIENT_ERROR_START:400,SERVER_ERROR_START:500},u.MAX_BACKOFF_ATTEMPTS=5,u.BACKOFF_MULTIPLIER=2,u.FULL_MODE_FIELDS=["user_id","tg_id","locale","tma_is_premium"]},1203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.logDebug=function(...e){try{console.debug("[TON_CONNECT_SDK]",...e)}catch(e){}},t.logError=function(...e){try{console.error("[TON_CONNECT_SDK]",...e)}catch(e){}},t.logWarning=function(...e){try{console.warn("[TON_CONNECT_SDK]",...e)}catch(e){}}},1689:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TonConnectError=void 0;class n extends Error{get info(){return""}constructor(e,t){super(e,t),this.message=`${n.prefix} ${this.constructor.name}${this.info?": "+this.info:""}${e?"\n"+e:""}`,Object.setPrototypeOf(this,n.prototype)}}t.TonConnectError=n,n.prefix="[TON_CONNECT_SDK_ERROR]"},1739:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UnknownAppError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"App tries to send rpc request to the injected wallet while not connected."}constructor(...e){super(...e),Object.setPrototypeOf(this,o.prototype)}}t.UnknownAppError=o},1842:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UUIDv7=function(e,t,n){var c,l,d;let u;if(e)u=a(null!==(d=null!==(c=e.random)&&void 0!==c?c:null===(l=e.rng)||void 0===l?void 0:l.call(e))&&void 0!==d?d:(0,r.rng)(),e.msecs,e.seq,t,n);else{const e=Date.now(),o=(0,r.rng)();s(i,e,o),u=a(o,i.msecs,i.seq,t,n)}return null!=t?t:(0,o.unsafeStringify)(u)},t.updateV7State=s;const r=n(6669),o=n(9356),i={};function s(e,t,n){var r,o;return null!==(r=e.msecs)&&void 0!==r||(e.msecs=-1/0),null!==(o=e.seq)&&void 0!==o||(e.seq=0),t>e.msecs?(e.seq=n[6]<<23|n[7]<<16|n[8]<<8|n[9],e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++),e}function a(e,t,n,r,o=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(r){if(o<0||o+16>r.length)throw new RangeError(`UUID byte range ${o}:${o+15} is out of buffer bounds`)}else r=new Uint8Array(16),o=0;return null!=t||(t=Date.now()),null!=n||(n=127*e[6]<<24|e[7]<<16|e[8]<<8|e[9]),r[o++]=t/1099511627776&255,r[o++]=t/4294967296&255,r[o++]=t/16777216&255,r[o++]=t/65536&255,r[o++]=t/256&255,r[o++]=255&t,r[o++]=112|n>>>28&15,r[o++]=n>>>20&255,r[o++]=128|n>>>14&63,r[o++]=n>>>6&255,r[o++]=n<<2&255|3&e[10],r[o++]=e[11],r[o++]=e[12],r[o++]=e[13],r[o++]=e[14],r[o++]=e[15],r}},2118:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeBase64=function(e){if("string"!=typeof e)return;const t=e.length+(4-e.length%4)%4;return e.replace(/-/g,"+").replace(/_/g,"/").padEnd(t,"=")}},2172:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DappMetadataError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"Passed DappMetadata is in incorrect format."}constructor(...e){super(...e),Object.setPrototypeOf(this,o.prototype)}}t.DappMetadataError=o},2192:(e,t)=>{"use strict";function n(e){return"/"===e.slice(-1)?e.slice(0,-1):e}Object.defineProperty(t,"__esModule",{value:!0}),t.removeUrlLastSlash=n,t.addPathToUrl=function(e,t){return n(e)+"/"+t},t.isTelegramUrl=function(e){if(!e)return!1;const t=new URL(e);return"tg:"===t.protocol||"t.me"===t.hostname},t.isConnectUrl=function(e){return!!e&&(e.includes("ton_addr")||e.includes("ton--5Faddr"))},t.encodeTelegramUrlParameters=function(e){return e.replaceAll(".","%2E").replaceAll("-","%2D").replaceAll("_","%5F").replaceAll("&","-").replaceAll("=","__").replaceAll("%","--")},t.decodeTelegramUrlParameters=function(e){return e.replaceAll("--","%").replaceAll("__","=").replaceAll("-","&").replaceAll("%5F","_").replaceAll("%2D","-").replaceAll("%2E",".")}},2209:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PROTOCOL_VERSION=void 0,t.PROTOCOL_VERSION=2},2301:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ManifestNotFoundError=void 0;const r=n(1689);class o extends r.TonConnectError{get info(){return"Manifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest"}constructor(...e){super(...e),Object.setPrototypeOf(this,o.prototype)}}t.ManifestNotFoundError=o},2361:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((r=r.apply(e,t||[])).next())})},o=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};Object.defineProperty(t,"__esModule",{value:!0}),t.TonConnect=void 0;const i=n(7321),s=n(2172),a=n(119),c=n(2301),l=n(1689),d=n(6069),u=n(4814),h=n(7070),p=n(9509),g=n(166),f=n(6842),v=n(2636),y=n(4029),m=n(6344),b=n(1055),w=n(5418),_=n(9660),E=n(3317),C=n(4241),S=n(1203),O=n(607),R=n(4927),T=n(3713),I=n(9651),P=n(6351),j=n(2118),N=n(1118),D=n(6895),U=n(5188),A=n(256),x=n(6809),M=n(4196);class k{static getWallets(){return this.walletsList.getWallets()}get connected(){return null!==this._wallet}get account(){var e;return(null===(e=this._wallet)||void 0===e?void 0:e.account)||null}get wallet(){return this._wallet}set wallet(e){this._wallet=e,this.statusChangeSubscriptions.forEach(e=>e(this._wallet))}constructor(e){var t,n,r;this._wallet=null,this.provider=null,this.statusChangeSubscriptions=[],this.statusChangeErrorSubscriptions=[];const o=(null==e?void 0:e.manifestUrl)||(0,w.getWebPageManifest)();this.dappSettings={manifestUrl:o,storage:(null==e?void 0:e.storage)||new m.DefaultStorage},this.walletsRequiredFeatures=null==e?void 0:e.walletsRequiredFeatures,this.environment=null!==(t=null==e?void 0:e.environment)&&void 0!==t?t:new A.DefaultEnvironment,this.walletsList=new _.WalletsListManager({walletsListSource:null==e?void 0:e.walletsListSource,cacheTTLMs:null==e?void 0:e.walletsListCacheTTLMs,onDownloadDurationMeasured:e=>{var t;null===(t=this.analytics)||void 0===t||t.setWalletListDownloadDuration(e)}});const i=null!==(n=null==e?void 0:e.eventDispatcher)&&void 0!==n?n:new D.BrowserEventDispatcher;if(this.tracker=new R.TonConnectTracker({eventDispatcher:i,tonConnectSdkVersion:T.tonConnectSdkVersion}),this.environment=null!==(r=null==e?void 0:e.environment)&&void 0!==r?r:new A.DefaultEnvironment,this.initAnalytics(o,i,e),!this.dappSettings.manifestUrl)throw new s.DappMetadataError("Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest");this.bridgeConnectionStorage=new y.BridgeConnectionStorage(this.dappSettings.storage,this.walletsList),(null==e?void 0:e.disableAutoPauseConnection)||this.addWindowFocusAndBlurSubscriptions()}getWallets(){return this.walletsList.getWallets()}onStatusChange(e,t){return this.statusChangeSubscriptions.push(e),t&&this.statusChangeErrorSubscriptions.push(t),()=>{this.statusChangeSubscriptions=this.statusChangeSubscriptions.filter(t=>t!==e),t&&(this.statusChangeErrorSubscriptions=this.statusChangeErrorSubscriptions.filter(e=>e!==t))}}connect(e,t,n){var r,o,i;const s=Object.assign({},n);if("object"==typeof t&&null!==t&&"tonProof"in t&&(s.request=t),"object"==typeof t&&null!==t&&("openingDeadlineMS"in t||"signal"in t||"request"in t||"traceId"in t)&&(s.request=null==t?void 0:t.request,s.openingDeadlineMS=null==t?void 0:t.openingDeadlineMS,s.signal=null==t?void 0:t.signal),s.request){const e=(0,I.validateConnectAdditionalRequest)(s.request);if(e){if(!(0,P.isQaModeEnabled)())throw new l.TonConnectError("ConnectAdditionalRequest validation failed: "+e);console.error("ConnectAdditionalRequest validation failed: "+e)}}if(this.connected)throw new d.WalletAlreadyConnectedError;const a=(0,O.createAbortController)(null==s?void 0:s.signal);if(null===(r=this.abortController)||void 0===r||r.abort(),this.abortController=a,a.signal.aborted)throw new l.TonConnectError("Connection was aborted");null===(o=this.provider)||void 0===o||o.closeConnection(),this.provider=this.createProvider(e),a.signal.addEventListener("abort",()=>{var e;null===(e=this.provider)||void 0===e||e.closeConnection(),this.provider=null});const c=null!==(i=null==s?void 0:s.traceId)&&void 0!==i?i:(0,x.UUIDv7)();return this.tracker.trackConnectionStarted(c),this.provider.connect(this.createConnectRequest(null==s?void 0:s.request),{openingDeadlineMS:null==s?void 0:s.openingDeadlineMS,signal:a.signal,traceId:c})}restoreConnection(e){return r(this,void 0,void 0,function*(){var t,n,o;const i=null!==(t=null==e?void 0:e.traceId)&&void 0!==t?t:(0,x.UUIDv7)();this.tracker.trackConnectionRestoringStarted(i);const s=(0,O.createAbortController)(null==e?void 0:e.signal);if(null===(n=this.abortController)||void 0===n||n.abort(),this.abortController=s,s.signal.aborted)return void this.tracker.trackConnectionRestoringError("Connection restoring was aborted",i);const[a,c]=yield Promise.all([this.bridgeConnectionStorage.storedConnectionType(),this.walletsList.getEmbeddedWallet()]);if(s.signal.aborted)return void this.tracker.trackConnectionRestoringError("Connection restoring was aborted",i);let l=null;try{switch(a){case"http":l=yield f.BridgeProvider.fromStorage(this.bridgeConnectionStorage,this.analytics);break;case"injected":l=yield v.InjectedProvider.fromStorage(this.bridgeConnectionStorage,this.analytics);break;case"wallet-connect":l=yield M.WalletConnectProvider.fromStorage(this.bridgeConnectionStorage);break;default:if(!c)return;l=this.createProvider(c)}}catch(e){return(0,S.logDebug)("Provider is not restored",e),this.tracker.trackConnectionRestoringError("Provider is not restored",i),yield this.bridgeConnectionStorage.removeConnection(),null==l||l.closeConnection(),void(l=null)}if(s.signal.aborted)return null==l||l.closeConnection(),void this.tracker.trackConnectionRestoringError("Connection restoring was aborted",i);if(!l)return(0,S.logError)("Provider is not restored"),void this.tracker.trackConnectionRestoringError("Provider is not restored",i);null===(o=this.provider)||void 0===o||o.closeConnection(),this.provider=l,l.listen(this.walletEventsListener.bind(this));const d=()=>{this.tracker.trackConnectionRestoringError("Connection restoring was aborted",i),null==l||l.closeConnection(),l=null};s.signal.addEventListener("abort",d);const u=(0,C.callForSuccess)(t=>r(this,void 0,void 0,function*(){if(yield null==l?void 0:l.restoreConnection({openingDeadlineMS:null==e?void 0:e.openingDeadlineMS,signal:t.signal,traceId:i}),s.signal.removeEventListener("abort",d),this.connected){const e=this.getSessionInfo();this.tracker.trackConnectionRestoringCompleted(this.wallet,e,i)}else this.tracker.trackConnectionRestoringError("Connection restoring failed",i)}),{attempts:Number.MAX_SAFE_INTEGER,delayMs:2e3,signal:null==e?void 0:e.signal}),h=new Promise(e=>setTimeout(()=>e(),12e3));return Promise.race([u,h])})}sendTransaction(e,t){return r(this,void 0,void 0,function*(){var n,r,i,s;const a={};"function"==typeof t?a.onRequestSent=t:(a.onRequestSent=null==t?void 0:t.onRequestSent,a.signal=null==t?void 0:t.signal,a.traceId=null==t?void 0:t.traceId);const c=(0,I.validateSendTransactionRequest)(e);if(c){if(!(0,P.isQaModeEnabled)())throw new l.TonConnectError("SendTransactionRequest validation failed: "+c);console.error("SendTransactionRequest validation failed: "+c)}const d=(0,O.createAbortController)(null==a?void 0:a.signal);if(d.signal.aborted)throw new l.TonConnectError("Transaction sending was aborted");this.checkConnection();const u=e.messages.length,h=e.messages.some(e=>e.extraCurrency&&Object.keys(e.extraCurrency).length>0);(0,E.checkSendTransactionSupport)(this.wallet.device.features,{requiredMessagesNumber:u,requireExtraCurrencies:h});const g=this.getSessionInfo(),f=null!==(n=null==a?void 0:a.traceId)&&void 0!==n?n:(0,x.UUIDv7)();this.tracker.trackTransactionSentForSignature(this.wallet,e,g,f);const{validUntil:v,messages:y}=e,m=o(e,["validUntil","messages"]),w=e.from||this.account.address,_=e.network||this.account.chain;if((null===(r=this.wallet)||void 0===r?void 0:r.account.chain)&&_!==this.wallet.account.chain){if(!(0,P.isQaModeEnabled)())throw new b.WalletWrongNetworkError("Wallet connected to a wrong network",{cause:{expectedChainId:null===(i=this.wallet)||void 0===i?void 0:i.account.chain,actualChainId:_}});console.error("Wallet connected to a wrong network",{expectedChainId:null===(s=this.wallet)||void 0===s?void 0:s.account.chain,actualChainId:_})}const C=yield this.provider.sendRequest(p.sendTransactionParser.convertToRpcRequest(Object.assign(Object.assign({},m),{from:w,network:_,valid_until:v,messages:y.map(e=>{var{extraCurrency:t,payload:n,stateInit:r}=e,i=o(e,["extraCurrency","payload","stateInit"]);return Object.assign(Object.assign({},i),{payload:(0,j.normalizeBase64)(n),stateInit:(0,j.normalizeBase64)(r),extra_currency:t})})})),{onRequestSent:a.onRequestSent,signal:d.signal,traceId:f});if(p.sendTransactionParser.isError(C))return this.tracker.trackTransactionSigningFailed(this.wallet,e,C.error.message,C.error.code,g,f),p.sendTransactionParser.parseAndThrowError(C);const S=p.sendTransactionParser.convertFromRpcResponse(C);return this.tracker.trackTransactionSigned(this.wallet,e,S,g,f),Object.assign(Object.assign({},S),{traceId:C.traceId})})}signData(e,t){return r(this,void 0,void 0,function*(){var n,r,o,i;const s=(0,O.createAbortController)(null==t?void 0:t.signal);if(s.signal.aborted)throw new l.TonConnectError("data sending was aborted");const a=(0,I.validateSignDataPayload)(e);if(a){if(!(0,P.isQaModeEnabled)())throw new l.TonConnectError("SignDataPayload validation failed: "+a);console.error("SignDataPayload validation failed: "+a)}this.checkConnection(),(0,E.checkSignDataSupport)(this.wallet.device.features,{requiredTypes:[e.type]});const c=this.getSessionInfo(),d=null!==(n=null==t?void 0:t.traceId)&&void 0!==n?n:(0,x.UUIDv7)();this.tracker.trackDataSentForSignature(this.wallet,e,c,d);const u=e.from||this.account.address,h=e.network||this.account.chain;if((null===(r=this.wallet)||void 0===r?void 0:r.account.chain)&&h!==this.wallet.account.chain){if(!(0,P.isQaModeEnabled)())throw new b.WalletWrongNetworkError("Wallet connected to a wrong network",{cause:{expectedChainId:null===(o=this.wallet)||void 0===o?void 0:o.account.chain,actualChainId:h}});console.error("Wallet connected to a wrong network",{expectedChainId:null===(i=this.wallet)||void 0===i?void 0:i.account.chain,actualChainId:h})}const p=yield this.provider.sendRequest(g.signDataParser.convertToRpcRequest(Object.assign(Object.assign(Object.assign({},e),"cell"===e.type?{cell:(0,j.normalizeBase64)(e.cell)}:{}),{from:u,network:h})),{onRequestSent:null==t?void 0:t.onRequestSent,signal:s.signal,traceId:d});if(g.signDataParser.isError(p))return this.tracker.trackDataSigningFailed(this.wallet,e,p.error.message,p.error.code,c,d),g.signDataParser.parseAndThrowError(p);const f=g.signDataParser.convertFromRpcResponse(p);return this.tracker.trackDataSigned(this.wallet,e,f,c,d),Object.assign(Object.assign({},f),{traceId:d})})}setConnectionNetwork(e){if(this.connected)throw new l.TonConnectError("Cannot change network while wallet is connected");this.desiredChainId=e}disconnect(e){return r(this,void 0,void 0,function*(){var t,n;if(!this.connected)throw new d.WalletNotConnectedError;const r=(0,O.createAbortController)(null==e?void 0:e.signal),o=this.abortController;if(this.abortController=r,r.signal.aborted)throw new l.TonConnectError("Disconnect was aborted");const i=null!==(t=null==e?void 0:e.traceId)&&void 0!==t?t:(0,x.UUIDv7)();this.onWalletDisconnected("dapp",{traceId:i}),yield null===(n=this.provider)||void 0===n?void 0:n.disconnect({signal:r.signal,traceId:i}),null==o||o.abort()})}getSessionId(){return r(this,void 0,void 0,function*(){if(!this.provider)return null;try{const e=yield this.bridgeConnectionStorage.getConnection();return e&&"http"===e.type?"sessionCrypto"in e?e.sessionCrypto.sessionId:e.session.sessionCrypto.sessionId:null}catch(e){return null}})}getSessionInfo(){var e;if("http"!==(null===(e=this.provider)||void 0===e?void 0:e.type))return null;if(!("session"in this.provider))return null;try{const e=this.provider.session;if(!e)return null;const t=e.sessionCrypto.sessionId;let n=null;return"walletPublicKey"in e&&(n=e.walletPublicKey),{clientId:t,walletId:n}}catch(e){return null}}pauseConnection(){var e;"http"===(null===(e=this.provider)||void 0===e?void 0:e.type)&&this.provider.pause()}unPauseConnection(){var e;return"http"!==(null===(e=this.provider)||void 0===e?void 0:e.type)?Promise.resolve():this.provider.unPause()}addWindowFocusAndBlurSubscriptions(){const e=(0,w.getDocument)();if(e)try{e.addEventListener("visibilitychange",()=>{e.hidden?this.pauseConnection():this.unPauseConnection().catch(()=>{})})}catch(e){(0,S.logError)("Cannot subscribe to the document.visibilitychange: ",e)}}initAnalytics(e,t,n){var r;const o=null==n?void 0:n.analytics,i=null!==(r=null==o?void 0:o.mode)&&void 0!==r?r:"telemetry";if("off"===i)return;const s=new N.AnalyticsManager({environment:this.environment,mode:i});this.analytics=s;const a=this.environment.getTelegramUser(),c={browser:this.environment.getBrowser(),platform:this.environment.getPlatform(),manifest_json_url:e,origin_url:w.getOriginWithPath,locale:this.environment.getLocale()};a&&(c.tg_id=a.id,c.tma_is_premium=a.isPremium),(0,U.bindEventsTo)(t,s.scoped(c))}createProvider(e){let t;return t=!Array.isArray(e)&&(0,u.isWalletConnectionSourceJS)(e)?new v.InjectedProvider(this.bridgeConnectionStorage,e.jsBridgeKey,this.analytics):!Array.isArray(e)&&(0,u.isWalletConnectionSourceWalletConnect)(e)?new M.WalletConnectProvider(this.bridgeConnectionStorage):new f.BridgeProvider(this.bridgeConnectionStorage,e,this.analytics),t.listen(this.walletEventsListener.bind(this)),t}walletEventsListener(e){switch(e.event){case"connect":this.onWalletConnected(e.payload,{traceId:e.traceId});break;case"connect_error":this.tracker.trackConnectionError(e.payload.message,e.payload.code,this.getSessionInfo(),e.traceId);const t=h.connectErrorsParser.parseError(e.payload);this.onWalletConnectError(t);break;case"disconnect":this.onWalletDisconnected("wallet",{traceId:e.traceId})}}onWalletConnected(e,t){var n,r;const o=e.items.find(e=>"ton_addr"===e.name),s=e.items.find(e=>"ton_proof"===e.name);if(!o)throw new l.TonConnectError("ton_addr connection item was not found");if(!(0,E.checkRequiredWalletFeatures)(e.device.features,this.walletsRequiredFeatures))return null===(n=this.provider)||void 0===n||n.disconnect(),void this.onWalletConnectError(new d.WalletMissingRequiredFeaturesError("Wallet does not support required features",{cause:{connectEvent:e}}));const a={device:e.device,provider:this.provider.type,account:{address:o.address,chain:o.network,walletStateInit:o.walletStateInit,publicKey:o.publicKey}};if(this.desiredChainId&&a.account.chain!==this.desiredChainId){const e=this.desiredChainId,t=a.account.chain;return null===(r=this.provider)||void 0===r||r.disconnect(),void this.onWalletConnectError(new b.WalletWrongNetworkError("Wallet connected to a wrong network",{cause:{expectedChainId:e,actualChainId:t}}))}if(s){const e=(0,I.validateTonProofItemReply)(s);let t;if(e)(0,P.isQaModeEnabled)()&&console.error("TonProofItem validation failed: "+e),t={name:"ton_proof",error:{code:i.CONNECT_ITEM_ERROR_CODES.UNKNOWN_ERROR,message:e}};else try{if("proof"in s)t={name:"ton_proof",proof:{timestamp:s.proof.timestamp,domain:{lengthBytes:s.proof.domain.lengthBytes,value:s.proof.domain.value},payload:s.proof.payload,signature:s.proof.signature}};else{if(!("error"in s))throw new l.TonConnectError("Invalid data format");t={name:"ton_proof",error:{code:s.error.code,message:s.error.message}}}}catch(e){t={name:"ton_proof",error:{code:i.CONNECT_ITEM_ERROR_CODES.UNKNOWN_ERROR,message:"Invalid data format"}}}a.connectItems={tonProof:t}}this.wallet=a;const c=this.getSessionInfo();this.tracker.trackConnectionCompleted(a,c,null==t?void 0:t.traceId)}onWalletConnectError(e){if(this.statusChangeErrorSubscriptions.forEach(t=>t(e)),(0,S.logDebug)(e),e instanceof c.ManifestNotFoundError||e instanceof a.ManifestContentErrorError)throw(0,S.logError)(e),e}onWalletDisconnected(e,t){const n=this.getSessionInfo();this.tracker.trackDisconnection(this.wallet,e,n,null==t?void 0:t.traceId),this.wallet=null}checkConnection(){if(!this.connected)throw new d.WalletNotConnectedError}createConnectRequest(e){const t=[Object.assign({name:"ton_addr"},this.desiredChainId?{network:this.desiredChainId}:{})];return(null==e?void 0:e.tonProof)&&t.push({name:"ton_proof",payload:e.tonProof}),{manifestUrl:this.dappSettings.manifestUrl,items:t}}}t.TonConnect=k,k.walletsList=new _.WalletsListManager,k.isWalletInjected=e=>v.InjectedProvider.isWalletInjected(e),k.isInsideWalletBrowser=e=>v.InjectedProvider.isInsideWalletBrowser(e)},2636:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0}),t.InjectedProvider=void 0;const o=n(3809),i=n(3674),s=n(5418),a=n(2209),c=n(1203),l=n(6809);class d{static fromStorage(e,t){return r(this,void 0,void 0,function*(){const n=yield e.getInjectedConnection();return new d(e,n.jsBridgeKey,t)})}static isWalletInjected(e){return d.isWindowContainsWallet(this.window,e)}static isInsideWalletBrowser(e){return!!d.isWindowContainsWallet(this.window,e)&&this.window[e].tonconnect.isWalletBrowser}static getCurrentlyInjectedWallets(){return this.window?(0,s.getWindowEntries)().filter(([e,t])=>(0,i.isJSBridgeWithMetadata)(t)).map(([e,t])=>({name:t.tonconnect.walletInfo.name,appName:t.tonconnect.walletInfo.app_name,aboutUrl:t.tonconnect.walletInfo.about_url,imageUrl:t.tonconnect.walletInfo.image,tondns:t.tonconnect.walletInfo.tondns,jsBridgeKey:e,injected:!0,embedded:t.tonconnect.isWalletBrowser,platforms:t.tonconnect.walletInfo.platforms,features:t.tonconnect.walletInfo.features})):[]}static isWindowContainsWallet(e,t){return!!e&&t in e&&"object"==typeof e[t]&&"tonconnect"in e[t]}constructor(e,t,n){this.connectionStorage=e,this.injectedWalletKey=t,this.type="injected",this.unsubscribeCallback=null,this.listenSubscriptions=!1,this.listeners=[];const r=d.window;if(!d.isWindowContainsWallet(r,t))throw new o.WalletNotInjectedError;this.injectedWallet=r[t].tonconnect,n&&(this.analytics=n.scoped({bridge_key:t,wallet_app_name:this.injectedWallet.deviceInfo.appName,wallet_app_version:this.injectedWallet.deviceInfo.appVersion}))}connect(e,t){this._connect(a.PROTOCOL_VERSION,e,t)}restoreConnection(e){return r(this,void 0,void 0,function*(){var t,n,r,o;const i=null!==(t=null==e?void 0:e.traceId)&&void 0!==t?t:(0,l.UUIDv7)();try{(0,c.logDebug)("Injected Provider restoring connection..."),null===(n=this.analytics)||void 0===n||n.emitJsBridgeCall({js_bridge_method:"restoreConnection",trace_id:i});const e=yield this.injectedWallet.restoreConnection();null===(r=this.analytics)||void 0===r||r.emitJsBridgeResponse({js_bridge_method:"restoreConnection",trace_id:i}),(0,c.logDebug)("Injected Provider restoring connection response",e),"connect"===e.event?(this.makeSubscriptions({traceId:i}),this.listeners.forEach(t=>t(Object.assign(Object.assign({},e),{traceId:i})))):yield this.connectionStorage.removeConnection()}catch(e){null===(o=this.analytics)||void 0===o||o.emitJsBridgeError({js_bridge_method:"restoreConnection",error_message:String(e),trace_id:i}),yield this.connectionStorage.removeConnection(),console.error(e)}})}closeConnection(){this.listenSubscriptions&&this.injectedWallet.disconnect(),this.closeAllListeners()}disconnect(e){return r(this,void 0,void 0,function*(){var t;const n=null!==(t=null==e?void 0:e.traceId)&&void 0!==t?t:(0,l.UUIDv7)();return new Promise(e=>{const t=()=>{this.closeAllListeners(),this.connectionStorage.removeConnection().then(e)};try{this.injectedWallet.disconnect(),t()}catch(e){(0,c.logDebug)(e),this.sendRequest({method:"disconnect",params:[]},{onRequestSent:t,traceId:n})}})})}closeAllListeners(){var e;this.listenSubscriptions=!1,this.listeners=[],null===(e=this.unsubscribeCallback)||void 0===e||e.call(this)}listen(e){return this.listeners.push(e),()=>this.listeners=this.listeners.filter(t=>t!==e)}sendRequest(e,t){return r(this,void 0,void 0,function*(){var n,r,o;const i={};"function"==typeof t?(i.onRequestSent=t,i.traceId=(0,l.UUIDv7)()):(i.onRequestSent=null==t?void 0:t.onRequestSent,i.signal=null==t?void 0:t.signal,i.attempts=null==t?void 0:t.attempts,i.traceId=null!==(n=null==t?void 0:t.traceId)&&void 0!==n?n:(0,l.UUIDv7)());const s=(yield this.connectionStorage.getNextRpcRequestId()).toString();yield this.connectionStorage.increaseNextRpcRequestId(),(0,c.logDebug)("Send injected-bridge request:",Object.assign(Object.assign({},e),{id:s})),null===(r=this.analytics)||void 0===r||r.emitJsBridgeCall({js_bridge_method:"send"});const a=this.injectedWallet.send(Object.assign(Object.assign({},e),{id:s}));return a.then(e=>{var t;null===(t=this.analytics)||void 0===t||t.emitJsBridgeResponse({js_bridge_method:"send"}),(0,c.logDebug)("Wallet message received:",e)}).catch(e=>{var t;null===(t=this.analytics)||void 0===t||t.emitJsBridgeError({js_bridge_method:"send",error_message:String(e)})}),null===(o=null==i?void 0:i.onRequestSent)||void 0===o||o.call(i),a})}_connect(e,t,n){return r(this,void 0,void 0,function*(){var r,o,i,s;const a=null!==(r=null==n?void 0:n.traceId)&&void 0!==r?r:(0,l.UUIDv7)();try{(0,c.logDebug)(`Injected Provider connect request: protocolVersion: ${e}, message:`,t),null===(o=this.analytics)||void 0===o||o.emitJsBridgeCall({js_bridge_method:"connect",trace_id:a});const n=yield this.injectedWallet.connect(e,t);null===(i=this.analytics)||void 0===i||i.emitJsBridgeResponse({js_bridge_method:"connect"}),(0,c.logDebug)("Injected Provider connect response:",n),"connect"===n.event&&(yield this.updateSession(),this.makeSubscriptions({traceId:a})),this.listeners.forEach(e=>e(Object.assign(Object.assign({},n),{traceId:a})))}catch(e){null===(s=this.analytics)||void 0===s||s.emitJsBridgeError({js_bridge_method:"connect",error_message:String(e),trace_id:a}),(0,c.logDebug)("Injected Provider connect error:",e);const t={event:"connect_error",payload:{code:0,message:null==e?void 0:e.toString()}};this.listeners.forEach(e=>e(Object.assign(Object.assign({},t),{traceId:a})))}})}makeSubscriptions(e){var t,n,r;this.listenSubscriptions=!0,null===(t=this.analytics)||void 0===t||t.emitJsBridgeCall({js_bridge_method:"listen",trace_id:e.traceId});try{this.unsubscribeCallback=this.injectedWallet.listen(e=>{var t;const n=null!==(t=e.traceId)&&void 0!==t?t:(0,l.UUIDv7)();(0,c.logDebug)("Wallet message received:",e),this.listenSubscriptions&&this.listeners.forEach(t=>t(Object.assign(Object.assign({},e),{traceId:n}))),"disconnect"===e.event&&this.disconnect({traceId:n})}),null===(n=this.analytics)||void 0===n||n.emitJsBridgeResponse({js_bridge_method:"listen",trace_id:e.traceId})}catch(t){throw null===(r=this.analytics)||void 0===r||r.emitJsBridgeError({js_bridge_method:"listen",error_message:String(t),trace_id:e.traceId}),t}}updateSession(){return this.connectionStorage.storeConnection({type:"injected",jsBridgeKey:this.injectedWalletKey,nextRpcRequestId:0})}}t.InjectedProvider=d,d.window=(0,s.getWindow)()},2931:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.UnknownError=t.TonConnectError=void 0,o(n(8240),t),o(n(6069),t),o(n(8705),t),o(n(8372),t),o(n(4464),t),o(n(4381),t);var i=n(1689);Object.defineProperty(t,"TonConnectError",{enumerable:!0,get:function(){return i.TonConnectError}});var s=n(5137);Object.defineProperty(t,"UnknownError",{enumerable:!0,get:function(){return s.UnknownError}})},3062:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),o(n(9746),t),o(n(6403),t)},3088:(e,t)=>{"use strict";function n(e,t){return!(!e||"object"!=typeof e)&&t.every(t=>t in e)}Object.defineProperty(t,"__esModule",{value:!0}),t.hasProperty=function(e,t){return n(e,[t])},t.hasProperties=n},3317:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkSendTransactionSupport=function(e,t){const n=e.includes("SendTransaction