From 7d6586496eb81f25cb8fff10306797dbfbcb8c2f Mon Sep 17 00:00:00 2001 From: Egor Miliukov Date: Thu, 7 Nov 2024 01:36:40 +0200 Subject: [PATCH] Add sendAsync provider method --- CHANGELOG.md | 6 +++ dist/classes/Provider.d.ts | 12 +++++ dist/grindery-wallet-sdk.cjs.development.js | 24 +++++++++- ...grindery-wallet-sdk.cjs.development.js.map | 2 +- .../grindery-wallet-sdk.cjs.production.min.js | 2 +- ...ndery-wallet-sdk.cjs.production.min.js.map | 2 +- dist/grindery-wallet-sdk.esm.js | 24 +++++++++- dist/grindery-wallet-sdk.esm.js.map | 2 +- dist/grindery-wallet-sdk.umd.development.js | 24 +++++++++- ...grindery-wallet-sdk.umd.development.js.map | 2 +- .../grindery-wallet-sdk.umd.production.min.js | 2 +- ...ndery-wallet-sdk.umd.production.min.js.map | 2 +- docs/assets/search.js | 2 +- .../classes_EventEmitter.EventEmitter.html | 14 +++--- docs/classes/classes_Provider.Provider.html | 37 ++++++++------ .../classes_ProviderError.ProviderError.html | 8 ++-- docs/classes/classes_Rpc.Rpc.html | 14 +++--- .../classes_SdkStorage.SdkStorage.html | 14 +++--- docs/classes/classes_WalletAPI.WalletAPI.html | 6 +-- docs/classes/classes_WalletSDK.WalletSDK.html | 48 +++++++++---------- .../classes_EventEmitter.ProviderEvents.html | 6 +-- .../classes_Provider.ProviderMethodNames.html | 6 +-- docs/enums/classes_Rpc.RpcMethodNames.html | 6 +-- .../classes_SdkStorage.SdkStorageKeys.html | 6 +-- .../utils_clientEvents.ClientEventNames.html | 10 ++-- docs/example/dist/classes/Provider.d.ts | 12 +++++ .../grindery-wallet-sdk.cjs.development.js | 24 +++++++++- ...grindery-wallet-sdk.cjs.development.js.map | 2 +- .../grindery-wallet-sdk.cjs.production.min.js | 2 +- ...ndery-wallet-sdk.cjs.production.min.js.map | 2 +- docs/example/dist/grindery-wallet-sdk.esm.js | 24 +++++++++- .../dist/grindery-wallet-sdk.esm.js.map | 2 +- .../grindery-wallet-sdk.umd.development.js | 24 +++++++++- ...grindery-wallet-sdk.umd.development.js.map | 2 +- .../grindery-wallet-sdk.umd.production.min.js | 2 +- ...ndery-wallet-sdk.umd.production.min.js.map | 2 +- ...lasses_ProviderError.newProviderError.html | 2 +- docs/functions/utils_chains.hexChainId.html | 2 +- docs/functions/utils_chains.unhexChainId.html | 2 +- ...ttributes.getConfigFromDataAttributes.html | 4 +- docs/functions/utils_uuid.uuid.html | 4 +- docs/hierarchy.html | 2 +- docs/index.html | 4 +- ...ses_Provider.ProviderRequestArguments.html | 6 +-- ...tils_providerInfo.EIP6963ProviderInfo.html | 8 ++-- docs/modules/classes_EventEmitter.html | 4 +- ...asses_Provider.ProviderRequestResults.html | 4 +- docs/modules/classes_Provider.html | 4 +- docs/modules/classes_ProviderError.html | 4 +- .../classes_Rpc.RpcRequestResults.html | 6 +-- docs/modules/classes_Rpc.html | 4 +- docs/modules/classes_SdkStorage.html | 4 +- docs/modules/classes_WalletAPI.html | 4 +- docs/modules/classes_WalletSDK.html | 4 +- docs/modules/utils_chains.html | 4 +- docs/modules/utils_clientEvents.html | 4 +- .../utils_getConfigFromDataAttributes.html | 4 +- docs/modules/utils_providerInfo.html | 4 +- docs/modules/utils_user.html | 4 +- docs/modules/utils_uuid.html | 4 +- ...lasses_EventEmitter.ProviderEventName.html | 4 +- .../classes_Provider.ProviderMethodName.html | 4 +- .../classes_Provider.ProviderMethods.html | 4 +- ...ovider.ProviderRequestArgumentsParams.html | 4 +- ...der.ProviderRequestResults.disconnect.html | 2 +- ...r.ProviderRequestResults.eth_accounts.html | 2 +- ...er.ProviderRequestResults.eth_chainId.html | 2 +- ...derRequestResults.eth_requestAccounts.html | 2 +- ...derRequestResults.eth_sendTransaction.html | 2 +- ....ProviderRequestResults.personal_sign.html | 2 +- ...equestResults.wallet_addEthereumChain.html | 2 +- ...estResults.wallet_switchEthereumChain.html | 2 +- ...sses_Rpc.RpcRequestResults.disconnect.html | 4 +- ...pcRequestResults.getUserWalletAddress.html | 4 +- ...classes_Rpc.RpcRequestResults.request.html | 4 +- ..._Rpc.RpcRequestResults.requestPairing.html | 4 +- ...pc.RpcRequestResults.trackClientEvent.html | 4 +- ...pcRequestResults.waitForPairingResult.html | 4 +- ...pcRequestResults.waitForRequestResult.html | 4 +- .../classes_SdkStorage.SdkStorageKey.html | 4 +- ...classes_SdkStorage.SdkStorageSnapshot.html | 2 +- .../classes_WalletSDK.WalletSDKConfig.html | 4 +- .../utils_clientEvents.ClientEventName.html | 2 +- docs/types/utils_user.User.html | 2 +- .../classes_ProviderError.ProviderErrors.html | 2 +- docs/variables/utils_chains.CHAINS.html | 4 +- .../utils_providerInfo.providerInfo.html | 2 +- example/dist/classes/Provider.d.ts | 12 +++++ .../grindery-wallet-sdk.cjs.development.js | 24 +++++++++- ...grindery-wallet-sdk.cjs.development.js.map | 2 +- .../grindery-wallet-sdk.cjs.production.min.js | 2 +- ...ndery-wallet-sdk.cjs.production.min.js.map | 2 +- example/dist/grindery-wallet-sdk.esm.js | 24 +++++++++- example/dist/grindery-wallet-sdk.esm.js.map | 2 +- .../grindery-wallet-sdk.umd.development.js | 24 +++++++++- ...grindery-wallet-sdk.umd.development.js.map | 2 +- .../grindery-wallet-sdk.umd.production.min.js | 2 +- ...ndery-wallet-sdk.umd.production.min.js.map | 2 +- package.json | 2 +- src/classes/Provider.ts | 24 ++++++++++ 100 files changed, 476 insertions(+), 205 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50c46a4..c5516a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Grindery Wallet SDK Changelog +## v0.5.4 (2024-11-07) + +### Added + +- Support for provider legacy method `sendAsync`, as specified by [EIP-1193 - Appendix III: Legacy Provider API](https://eips.ethereum.org/EIPS/eip-1193#appendix-iii-legacy-provider-api) + ## v0.5.3 (2024-11-06) ### Added diff --git a/dist/classes/Provider.d.ts b/dist/classes/Provider.d.ts index 2c4b44c..341c813 100644 --- a/dist/classes/Provider.d.ts +++ b/dist/classes/Provider.d.ts @@ -73,6 +73,18 @@ export declare class Provider extends EventEmitter { * @returns {T} The result of the request */ request({ method, params, }: ProviderRequestArguments): Promise; + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + sendAsync({ method, params }: ProviderRequestArguments, callback: Function): void; private storage; private rpc; /** diff --git a/dist/grindery-wallet-sdk.cjs.development.js b/dist/grindery-wallet-sdk.cjs.development.js index c9b7b14..b8e9e1a 100644 --- a/dist/grindery-wallet-sdk.cjs.development.js +++ b/dist/grindery-wallet-sdk.cjs.development.js @@ -1235,7 +1235,29 @@ var Provider = /*#__PURE__*/function (_EventEmitter) { return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/dist/grindery-wallet-sdk.cjs.development.js.map b/dist/grindery-wallet-sdk.cjs.development.js.map index a5a977a..2073284 100644 --- a/dist/grindery-wallet-sdk.cjs.development.js.map +++ b/dist/grindery-wallet-sdk.cjs.development.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.cjs.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.cjs.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/dist/grindery-wallet-sdk.cjs.production.min.js b/dist/grindery-wallet-sdk.cjs.production.min.js index d4d8e52..946f4ba 100644 --- a/dist/grindery-wallet-sdk.cjs.production.min.js +++ b/dist/grindery-wallet-sdk.cjs.production.min.js @@ -1,2 +1,2 @@ -"use strict";function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(e=function(){return!!t})()}function t(){t=function(){return n};var e,n={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},n}function n(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function r(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var a=e.apply(t,r);function s(e){n(a,i,o,s,c,"next",e)}function c(e){n(a,i,o,s,c,"throw",e)}s(void 0)}))}}function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),d=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},h={uuid:d(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},f=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return o(t,e),t}(c(Error)),g={PairingFailed:new f("Pairing failed",4900),Disconnected:new f("Disconnected",4900),UnsupportedMethod:new f("Unsupported Method",4200),Unauthorized:new f("Unauthorized",4100),NoResult:new f("No result",4900),NoAppId:new f("App ID is required",4900),UserRejected:new f("User Rejected Request",4001),ChainDisconnected:new f("Chain Disconnected",4901)},w=function(e){return e instanceof f?new f(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new f(e.message||"Unknown error",4900,e):new f("Unknown error",4900,e)},v=["eip155:137","eip155:56","eip155:204"],y=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},m=function(e){return"eip155:"+parseInt(e,16)},N="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(p||(p={}));var I,M=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||d(),chainId:this.getSnapshot().chainId||v[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(N)||"{}")}catch(e){throw localStorage.setItem(N,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(N,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(I||(I={}));var D,T=function(){function e(e){this.config=void 0,this.config=e}var n=e.prototype;return n.sendAndWaitRpcRequest=function(){var e=r(t().mark((function e(n,r,i){var o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(n,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),n.sendRpcRequest=function(){var e=r(t().mark((function e(n,r){var i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new M,e.next=3,this.sendRpcApiRequest(I.request,{sessionId:i.getValue(p.sessionId),scope:i.getValue(p.chainId),request:{method:n,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.waitRpcRequest=function(){var e=r(t().mark((function e(n,r){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(I.waitForRequestResult,{requestToken:n,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.sendRpcApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+n,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new f(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw g.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new f(e.t0.message,500,e.t0);case 18:throw new f("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(D||(D={}));var k,j=function(e){function n(n){var i,o,a,s,c,l,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new M,o.rpc=void 0,o.switchChain=function(){var e=r(t().mark((function e(n){var r,i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=m(r=n.chainId),v.includes(i)){e.next=4;break}throw w(g.ChainDisconnected);case 4:return o.storage.setValue(p.chainId,i),o.emit(u.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((i={})[D.eth_requestAccounts]=(f=r(t().mark((function e(n){var r,i,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:D.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(p.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:o.storage.getValue(p.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(p.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw g.PairingFailed;case 19:return e.next=21,o.request({method:D.eth_accounts,params:n||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(I.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(p.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw g.PairingFailed;case 34:return o.storage.setValue(p.pairingToken,i.pairingToken),o.storage.setValue(p.connectUrl,i.connectUrl),o.storage.setValue(p.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(p.shortToken,i.shortToken),o.emit(u.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(p.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw g.PairingFailed;case 45:return o.storage.setValue(p.pairingToken,""),o.storage.setValue(p.connectUrl,""),o.storage.setValue(p.connectUrlBrowser,""),o.storage.setValue(p.shortToken,""),e.next=51,o.request({method:D.eth_accounts,params:n||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),i[D.eth_accounts]=(h=r(t().mark((function e(n){var r;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(D.eth_accounts,n?Array.isArray(n)?n:[n]:[]);case 3:return o.storage.setValue(p.address,(r=e.sent)[0]||""),o.emit(u.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),w(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),i[D.eth_sendTransaction]=(d=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.eth_sendTransaction,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),i[D.personal_sign]=(l=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.personal_sign,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return l.apply(this,arguments)}),i[D.gws_disconnect]=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(I.disconnect,{sessionToken:o.storage.getValue(p.sessionId)});case 3:return n=e.sent,o.emit(u.disconnect,g.Disconnected),e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),w(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),i[D.eth_chainId]=(c=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",y(o.storage.getValue(p.chainId)||o.config.chainId||v[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),i[D.wallet_addEthereumChain]=(s=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw w(g.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),i[D.wallet_switchEthereumChain]=(a=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),i),o.config=n,o.rpc=new T(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(u.connect,{chainId:y(o.storage.getValue(p.chainId)||o.config.chainId||v[0])}),o.restorePairing(),o.restoreSession()})),o}o(n,e);var i=n.prototype;return i.isConnected=function(){return!0},i.request=function(){var e=r(t().mark((function e(n){var r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.method,a=n.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.restorePairing=function(){var e=r(t().mark((function e(){var n,r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),r=this.storage.getValue(p.sessionId),!n||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:n});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(p.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw g.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(p.address,a[0]||""),this.emit(u.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),i.restoreSession=function(){var e=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),!this.storage.getValue(p.sessionId)||n){e.next=11;break}return e.prev=3,e.next=6,this.request({method:D.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),i.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},i.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:h,provider:this})}))},i.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},n}(l);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(k||(k={}));var A,x=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o,a,s,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new M,a=o.getValue(p.sessionId),s=o.getValue(p.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:n,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+n);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),b=function(){function e(e){var t,n,r,o,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(o=window.Grindery)?void 0:o.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new M,this.user=null,this.config=i({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(k.walletConnected,{wallets:t})})),this.on(u.disconnect,(function(){e.trackClientEvent(k.walletDisconnected)}))},n.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(p.pairingToken,t)},e}(),U=b;null!=(A=window.Grindery)&&A.WalletSDK&&window.Grindery.WalletSDK instanceof b||(window.Grindery=i({},window.Grindery||{},{WalletSDK:new b})),exports.GrinderyWalletSDK=U; +"use strict";function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(e=function(){return!!t})()}function t(){t=function(){return n};var e,n={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:j(e,n,a)}),i}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var d="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function n(r,o,a,s){var c=h(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function j(t,n,r){var i=d;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===d)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=h(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=h(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},n}function n(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function r(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var a=e.apply(t,r);function s(e){n(a,i,o,s,c,"next",e)}function c(e){n(a,i,o,s,c,"throw",e)}s(void 0)}))}}function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},d={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},f=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return o(t,e),t}(c(Error)),g={PairingFailed:new f("Pairing failed",4900),Disconnected:new f("Disconnected",4900),UnsupportedMethod:new f("Unsupported Method",4200),Unauthorized:new f("Unauthorized",4100),NoResult:new f("No result",4900),NoAppId:new f("App ID is required",4900),UserRejected:new f("User Rejected Request",4001),ChainDisconnected:new f("Chain Disconnected",4901)},w=function(e){return e instanceof f?new f(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new f(e.message||"Unknown error",4900,e):new f("Unknown error",4900,e)},v=["eip155:137","eip155:56","eip155:204"],y=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},m=function(e){return"eip155:"+parseInt(e,16)},N="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(p||(p={}));var I,M=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||v[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(N)||"{}")}catch(e){throw localStorage.setItem(N,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(N,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(I||(I={}));var D,T=function(){function e(e){this.config=void 0,this.config=e}var n=e.prototype;return n.sendAndWaitRpcRequest=function(){var e=r(t().mark((function e(n,r,i){var o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(n,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),n.sendRpcRequest=function(){var e=r(t().mark((function e(n,r){var i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new M,e.next=3,this.sendRpcApiRequest(I.request,{sessionId:i.getValue(p.sessionId),scope:i.getValue(p.chainId),request:{method:n,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.waitRpcRequest=function(){var e=r(t().mark((function e(n,r){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(I.waitForRequestResult,{requestToken:n,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.sendRpcApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+n,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new f(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw g.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new f(e.t0.message,500,e.t0);case 18:throw new f("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(D||(D={}));var k,A=function(e){function n(n){var i,o,a,s,c,l,h,d,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new M,o.rpc=void 0,o.switchChain=function(){var e=r(t().mark((function e(n){var r,i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=m(r=n.chainId),v.includes(i)){e.next=4;break}throw w(g.ChainDisconnected);case 4:return o.storage.setValue(p.chainId,i),o.emit(u.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((i={})[D.eth_requestAccounts]=(f=r(t().mark((function e(n){var r,i,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:D.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(p.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:o.storage.getValue(p.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(p.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw g.PairingFailed;case 19:return e.next=21,o.request({method:D.eth_accounts,params:n||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(I.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(p.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw g.PairingFailed;case 34:return o.storage.setValue(p.pairingToken,i.pairingToken),o.storage.setValue(p.connectUrl,i.connectUrl),o.storage.setValue(p.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(p.shortToken,i.shortToken),o.emit(u.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(p.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw g.PairingFailed;case 45:return o.storage.setValue(p.pairingToken,""),o.storage.setValue(p.connectUrl,""),o.storage.setValue(p.connectUrlBrowser,""),o.storage.setValue(p.shortToken,""),e.next=51,o.request({method:D.eth_accounts,params:n||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),i[D.eth_accounts]=(d=r(t().mark((function e(n){var r;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(D.eth_accounts,n?Array.isArray(n)?n:[n]:[]);case 3:return o.storage.setValue(p.address,(r=e.sent)[0]||""),o.emit(u.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),w(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return d.apply(this,arguments)}),i[D.eth_sendTransaction]=(h=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.eth_sendTransaction,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return h.apply(this,arguments)}),i[D.personal_sign]=(l=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.personal_sign,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return l.apply(this,arguments)}),i[D.gws_disconnect]=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(I.disconnect,{sessionToken:o.storage.getValue(p.sessionId)});case 3:return n=e.sent,o.emit(u.disconnect,g.Disconnected),e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),w(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),i[D.eth_chainId]=(c=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",y(o.storage.getValue(p.chainId)||o.config.chainId||v[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),i[D.wallet_addEthereumChain]=(s=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw w(g.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),i[D.wallet_switchEthereumChain]=(a=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),i),o.config=n,o.rpc=new T(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(u.connect,{chainId:y(o.storage.getValue(p.chainId)||o.config.chainId||v[0])}),o.restorePairing(),o.restoreSession()})),o}o(n,e);var i=n.prototype;return i.isConnected=function(){return!0},i.request=function(){var e=r(t().mark((function e(n){var r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.method,a=n.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.sendAsync=function(e,t){var n,r;null==(n=(r=this.methods)[e.method])||n.call(r,e.params).then((function(e){t(null,e)})).catch((function(e){t(e)}))},i.restorePairing=function(){var e=r(t().mark((function e(){var n,r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),r=this.storage.getValue(p.sessionId),!n||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:n});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(p.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw g.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(p.address,a[0]||""),this.emit(u.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),i.restoreSession=function(){var e=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),!this.storage.getValue(p.sessionId)||n){e.next=11;break}return e.prev=3,e.next=6,this.request({method:D.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),i.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},i.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:d,provider:this})}))},i.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},n}(l);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(k||(k={}));var j,x=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o,a,s,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new M,a=o.getValue(p.sessionId),s=o.getValue(p.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:n,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+n);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),b=function(){function e(e){var t,n,r,o,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(o=window.Grindery)?void 0:o.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new M,this.user=null,this.config=i({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(k.walletConnected,{wallets:t})})),this.on(u.disconnect,(function(){e.trackClientEvent(k.walletDisconnected)}))},n.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(p.pairingToken,t)},e}(),U=b;null!=(j=window.Grindery)&&j.WalletSDK&&window.Grindery.WalletSDK instanceof b||(window.Grindery=i({},window.Grindery||{},{WalletSDK:new b})),exports.GrinderyWalletSDK=U; //# sourceMappingURL=grindery-wallet-sdk.cjs.production.min.js.map diff --git a/dist/grindery-wallet-sdk.cjs.production.min.js.map b/dist/grindery-wallet-sdk.cjs.production.min.js.map index aaa8358..1718950 100644 --- a/dist/grindery-wallet-sdk.cjs.production.min.js.map +++ b/dist/grindery-wallet-sdk.cjs.production.min.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.cjs.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.cjs.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file diff --git a/dist/grindery-wallet-sdk.esm.js b/dist/grindery-wallet-sdk.esm.js index 55a6645..48f689b 100644 --- a/dist/grindery-wallet-sdk.esm.js +++ b/dist/grindery-wallet-sdk.esm.js @@ -1231,7 +1231,29 @@ var Provider = /*#__PURE__*/function (_EventEmitter) { return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/dist/grindery-wallet-sdk.esm.js.map b/dist/grindery-wallet-sdk.esm.js.map index 82c78eb..2b16a5b 100644 --- a/dist/grindery-wallet-sdk.esm.js.map +++ b/dist/grindery-wallet-sdk.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.esm.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.esm.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/dist/grindery-wallet-sdk.umd.development.js b/dist/grindery-wallet-sdk.umd.development.js index ec26c96..0810324 100644 --- a/dist/grindery-wallet-sdk.umd.development.js +++ b/dist/grindery-wallet-sdk.umd.development.js @@ -1237,7 +1237,29 @@ return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/dist/grindery-wallet-sdk.umd.development.js.map b/dist/grindery-wallet-sdk.umd.development.js.map index f28ea88..5566006 100644 --- a/dist/grindery-wallet-sdk.umd.development.js.map +++ b/dist/grindery-wallet-sdk.umd.development.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.umd.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.umd.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/dist/grindery-wallet-sdk.umd.production.min.js b/dist/grindery-wallet-sdk.umd.production.min.js index 6f9f042..dd8df56 100644 --- a/dist/grindery-wallet-sdk.umd.production.min.js +++ b/dist/grindery-wallet-sdk.umd.production.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["grindery-wallet-sdk"]={})}(this,(function(e){"use strict";function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(t=function(){return!!e})()}function n(){n=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},f={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},g=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return a(t,e),t}(u(Error)),w={PairingFailed:new g("Pairing failed",4900),Disconnected:new g("Disconnected",4900),UnsupportedMethod:new g("Unsupported Method",4200),Unauthorized:new g("Unauthorized",4100),NoResult:new g("No result",4900),NoAppId:new g("App ID is required",4900),UserRejected:new g("User Rejected Request",4001),ChainDisconnected:new g("Chain Disconnected",4901)},v=function(e){return e instanceof g?new g(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new g(e.message||"Unknown error",4900,e):new g("Unknown error",4900,e)},y=["eip155:137","eip155:56","eip155:204"],m=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},N=function(e){return"eip155:"+parseInt(e,16)},I="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(l||(l={}));var M,D=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||y[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(I)||"{}")}catch(e){throw localStorage.setItem(I,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(I,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(M||(M={}));var T,k=function(){function e(e){this.config=void 0,this.config=e}var t=e.prototype;return t.sendAndWaitRpcRequest=function(){var e=i(n().mark((function e(t,r,i){var o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(t,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),t.sendRpcRequest=function(){var e=i(n().mark((function e(t,r){var i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new D,e.next=3,this.sendRpcApiRequest(M.request,{sessionId:i.getValue(l.sessionId),scope:i.getValue(l.chainId),request:{method:t,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.waitRpcRequest=function(){var e=i(n().mark((function e(t,r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(M.waitForRequestResult,{requestToken:t,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.sendRpcApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+t,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new g(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw w.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new g(e.t0.message,500,e.t0);case 18:throw new g("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(T||(T={}));var j,A=function(e){function t(t){var r,o,a,s,c,u,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new D,o.rpc=void 0,o.switchChain=function(){var e=i(n().mark((function e(t){var r,i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=N(r=t.chainId),y.includes(i)){e.next=4;break}throw v(w.ChainDisconnected);case 4:return o.storage.setValue(l.chainId,i),o.emit(p.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((r={})[T.eth_requestAccounts]=(f=i(n().mark((function e(t){var r,i,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:T.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(l.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:o.storage.getValue(l.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(l.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw w.PairingFailed;case 19:return e.next=21,o.request({method:T.eth_accounts,params:t||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(M.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(l.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw w.PairingFailed;case 34:return o.storage.setValue(l.pairingToken,i.pairingToken),o.storage.setValue(l.connectUrl,i.connectUrl),o.storage.setValue(l.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(l.shortToken,i.shortToken),o.emit(p.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(l.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw w.PairingFailed;case 45:return o.storage.setValue(l.pairingToken,""),o.storage.setValue(l.connectUrl,""),o.storage.setValue(l.connectUrlBrowser,""),o.storage.setValue(l.shortToken,""),e.next=51,o.request({method:T.eth_accounts,params:t||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),r[T.eth_accounts]=(h=i(n().mark((function e(t){var r;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(T.eth_accounts,t?Array.isArray(t)?t:[t]:[]);case 3:return o.storage.setValue(l.address,(r=e.sent)[0]||""),o.emit(p.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),v(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),r[T.eth_sendTransaction]=(d=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.eth_sendTransaction,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),r[T.personal_sign]=(u=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.personal_sign,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)}),r[T.gws_disconnect]=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(M.disconnect,{sessionToken:o.storage.getValue(l.sessionId)});case 3:return t=e.sent,o.emit(p.disconnect,w.Disconnected),e.abrupt("return",t);case 8:throw e.prev=8,e.t0=e.catch(0),v(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),r[T.eth_chainId]=(c=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",m(o.storage.getValue(l.chainId)||o.config.chainId||y[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),r[T.wallet_addEthereumChain]=(s=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw v(w.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),r[T.wallet_switchEthereumChain]=(a=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),r),o.config=t,o.rpc=new k(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(p.connect,{chainId:m(o.storage.getValue(l.chainId)||o.config.chainId||y[0])}),o.restorePairing(),o.restoreSession()})),o}a(t,e);var r=t.prototype;return r.isConnected=function(){return!0},r.request=function(){var e=i(n().mark((function e(t){var r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.method,a=t.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.restorePairing=function(){var e=i(n().mark((function e(){var t,r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),r=this.storage.getValue(l.sessionId),!t||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:t});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(l.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw w.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(l.address,a[0]||""),this.emit(p.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),r.restoreSession=function(){var e=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),!this.storage.getValue(l.sessionId)||t){e.next=11;break}return e.prev=3,e.next=6,this.request({method:T.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),r.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},r.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:f,provider:this})}))},r.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},t}(d);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(j||(j={}));var x,b=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o,a,s,c;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new D,a=o.getValue(l.sessionId),s=o.getValue(l.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:t,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+t);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),U=function(){function e(e){var t,n,r,i,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(i=window.Grindery)?void 0:i.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new D,this.user=null,this.config=o({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(j.walletConnected,{wallets:t})})),this.on(p.disconnect,(function(){e.trackClientEvent(j.walletDisconnected)}))},t.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(l.pairingToken,t)},e}(),L=U;null!=(x=window.Grindery)&&x.WalletSDK&&window.Grindery.WalletSDK instanceof U||(window.Grindery=o({},window.Grindery||{},{WalletSDK:new U})),e.GrinderyWalletSDK=L,Object.defineProperty(e,"__esModule",{value:!0})})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["grindery-wallet-sdk"]={})}(this,(function(e){"use strict";function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(t=function(){return!!e})()}function n(){n=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},f={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},g=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return a(t,e),t}(u(Error)),w={PairingFailed:new g("Pairing failed",4900),Disconnected:new g("Disconnected",4900),UnsupportedMethod:new g("Unsupported Method",4200),Unauthorized:new g("Unauthorized",4100),NoResult:new g("No result",4900),NoAppId:new g("App ID is required",4900),UserRejected:new g("User Rejected Request",4001),ChainDisconnected:new g("Chain Disconnected",4901)},v=function(e){return e instanceof g?new g(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new g(e.message||"Unknown error",4900,e):new g("Unknown error",4900,e)},y=["eip155:137","eip155:56","eip155:204"],m=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},N=function(e){return"eip155:"+parseInt(e,16)},I="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(l||(l={}));var M,D=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||y[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(I)||"{}")}catch(e){throw localStorage.setItem(I,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(I,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(M||(M={}));var T,k=function(){function e(e){this.config=void 0,this.config=e}var t=e.prototype;return t.sendAndWaitRpcRequest=function(){var e=i(n().mark((function e(t,r,i){var o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(t,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),t.sendRpcRequest=function(){var e=i(n().mark((function e(t,r){var i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new D,e.next=3,this.sendRpcApiRequest(M.request,{sessionId:i.getValue(l.sessionId),scope:i.getValue(l.chainId),request:{method:t,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.waitRpcRequest=function(){var e=i(n().mark((function e(t,r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(M.waitForRequestResult,{requestToken:t,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.sendRpcApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+t,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new g(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw w.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new g(e.t0.message,500,e.t0);case 18:throw new g("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(T||(T={}));var j,A=function(e){function t(t){var r,o,a,s,c,u,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new D,o.rpc=void 0,o.switchChain=function(){var e=i(n().mark((function e(t){var r,i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=N(r=t.chainId),y.includes(i)){e.next=4;break}throw v(w.ChainDisconnected);case 4:return o.storage.setValue(l.chainId,i),o.emit(p.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((r={})[T.eth_requestAccounts]=(f=i(n().mark((function e(t){var r,i,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:T.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(l.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:o.storage.getValue(l.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(l.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw w.PairingFailed;case 19:return e.next=21,o.request({method:T.eth_accounts,params:t||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(M.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(l.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw w.PairingFailed;case 34:return o.storage.setValue(l.pairingToken,i.pairingToken),o.storage.setValue(l.connectUrl,i.connectUrl),o.storage.setValue(l.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(l.shortToken,i.shortToken),o.emit(p.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(l.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw w.PairingFailed;case 45:return o.storage.setValue(l.pairingToken,""),o.storage.setValue(l.connectUrl,""),o.storage.setValue(l.connectUrlBrowser,""),o.storage.setValue(l.shortToken,""),e.next=51,o.request({method:T.eth_accounts,params:t||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),r[T.eth_accounts]=(h=i(n().mark((function e(t){var r;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(T.eth_accounts,t?Array.isArray(t)?t:[t]:[]);case 3:return o.storage.setValue(l.address,(r=e.sent)[0]||""),o.emit(p.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),v(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),r[T.eth_sendTransaction]=(d=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.eth_sendTransaction,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),r[T.personal_sign]=(u=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.personal_sign,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)}),r[T.gws_disconnect]=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(M.disconnect,{sessionToken:o.storage.getValue(l.sessionId)});case 3:return t=e.sent,o.emit(p.disconnect,w.Disconnected),e.abrupt("return",t);case 8:throw e.prev=8,e.t0=e.catch(0),v(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),r[T.eth_chainId]=(c=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",m(o.storage.getValue(l.chainId)||o.config.chainId||y[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),r[T.wallet_addEthereumChain]=(s=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw v(w.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),r[T.wallet_switchEthereumChain]=(a=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),r),o.config=t,o.rpc=new k(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(p.connect,{chainId:m(o.storage.getValue(l.chainId)||o.config.chainId||y[0])}),o.restorePairing(),o.restoreSession()})),o}a(t,e);var r=t.prototype;return r.isConnected=function(){return!0},r.request=function(){var e=i(n().mark((function e(t){var r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.method,a=t.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.sendAsync=function(e,t){var n,r;null==(n=(r=this.methods)[e.method])||n.call(r,e.params).then((function(e){t(null,e)})).catch((function(e){t(e)}))},r.restorePairing=function(){var e=i(n().mark((function e(){var t,r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),r=this.storage.getValue(l.sessionId),!t||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:t});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(l.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw w.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(l.address,a[0]||""),this.emit(p.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),r.restoreSession=function(){var e=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),!this.storage.getValue(l.sessionId)||t){e.next=11;break}return e.prev=3,e.next=6,this.request({method:T.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),r.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},r.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:f,provider:this})}))},r.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},t}(d);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(j||(j={}));var x,b=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o,a,s,c;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new D,a=o.getValue(l.sessionId),s=o.getValue(l.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:t,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+t);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),U=function(){function e(e){var t,n,r,i,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(i=window.Grindery)?void 0:i.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new D,this.user=null,this.config=o({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(j.walletConnected,{wallets:t})})),this.on(p.disconnect,(function(){e.trackClientEvent(j.walletDisconnected)}))},t.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(l.pairingToken,t)},e}(),L=U;null!=(x=window.Grindery)&&x.WalletSDK&&window.Grindery.WalletSDK instanceof U||(window.Grindery=o({},window.Grindery||{},{WalletSDK:new U})),e.GrinderyWalletSDK=L,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=grindery-wallet-sdk.umd.production.min.js.map diff --git a/dist/grindery-wallet-sdk.umd.production.min.js.map b/dist/grindery-wallet-sdk.umd.production.min.js.map index 6118573..d349c61 100644 --- a/dist/grindery-wallet-sdk.umd.production.min.js.map +++ b/dist/grindery-wallet-sdk.umd.production.min.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.umd.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.umd.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 22dc346..136d7b9 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/classes_EventEmitter.EventEmitter.html b/docs/classes/classes_EventEmitter.EventEmitter.html index 7354d92..e05089a 100644 --- a/docs/classes/classes_EventEmitter.EventEmitter.html +++ b/docs/classes/classes_EventEmitter.EventEmitter.html @@ -1,21 +1,21 @@ -EventEmitter | Grindery Wallet SDK - v0.5.3

Summary

A class for emitting provider events

+EventEmitter | Grindery Wallet SDK - v0.5.4

Summary

A class for emitting provider events

Since

0.2.0

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

events: Map<"accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message", Function[]>

Summary

A map of events and their listeners

-

Methods

  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

      +

Constructors

Properties

events: Map<"accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message", Function[]>

Summary

A map of events and their listeners

+

Methods

  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • Rest ...data: any[]

      Event data

    Returns EventEmitter

    The instance of the class itself

    Summary

    Emits an event

    -
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • callback: Function

      Callback function

    Returns EventEmitter

    The instance of the class itself

    Summary

    Adds a listener to the event

    -
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • callback: Function

      Callback function

    Returns EventEmitter

    The instance of the class itself

    Summary

    Removes a listener from the event

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/classes_Provider.Provider.html b/docs/classes/classes_Provider.Provider.html index d14b4df..78bc279 100644 --- a/docs/classes/classes_Provider.Provider.html +++ b/docs/classes/classes_Provider.Provider.html @@ -1,6 +1,6 @@ -Provider | Grindery Wallet SDK - v0.5.3

Summary

The base wallet provider class

+Provider | Grindery Wallet SDK - v0.5.4

Summary

The base wallet provider class

Since

0.2.0

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

isGrinderyWallet: boolean = true
methods: Partial<ProviderMethods> = ...

Summary

The list of supported provider methods.

-
rpc: Rpc
storage: SdkStorage = ...

Methods

  • Private

    Returns void

    Summary

    Announces the provider to the window object

    +

Constructors

Properties

isGrinderyWallet: boolean = true
methods: Partial<ProviderMethods> = ...

Summary

The list of supported provider methods.

+
rpc: Rpc
storage: SdkStorage = ...

Methods

  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

      +
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • Rest ...data: any[]

      Event data

    Returns Provider

    The instance of the class itself

    Summary

    Emits an event

    -
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

      +
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • callback: Function

      Callback function

    Returns Provider

    The instance of the class itself

    Summary

    Adds a listener to the event

    -
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • callback: Function

      Callback function

    Returns Provider

    The instance of the class itself

    Summary

    Removes a listener from the event

    -
  • Private

    Returns Promise<void>

    Summary

    Restores the pairing process if pairing token is stored in the local storage

    -
  • Private

    Returns Promise<void>

    Summary

    Restores the session if session Id is stored in the local storage

    -
  • Private

    Returns Promise<void>

    Summary

    Restores the pairing process if pairing token is stored in the local storage

    +
  • Private

    Returns Promise<void>

    Summary

    Restores the session if session Id is stored in the local storage

    +
  • Parameters

    Returns void

    void

    +

    Summary

    Sends a request to the provider (legacy)

    +

    Deprecated

    Use request method instead

    +

    Since

    0.5.4

    +
  • Parameters

    • chainId: any

      Chain id in hex format

    Returns Promise<null>

    Null on success

    Summary

    Switches the chain

    Since

    0.3.0

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/classes_ProviderError.ProviderError.html b/docs/classes/classes_ProviderError.ProviderError.html index 913671f..4071770 100644 --- a/docs/classes/classes_ProviderError.ProviderError.html +++ b/docs/classes/classes_ProviderError.ProviderError.html @@ -1,6 +1,6 @@ -ProviderError | Grindery Wallet SDK - v0.5.3

Summary

Error class for wallet Provider

+ProviderError | Grindery Wallet SDK - v0.5.4

Summary

Error class for wallet Provider

Since

0.1.0

-

Hierarchy

  • Error
    • ProviderError

Constructors

Hierarchy

  • Error
    • ProviderError

Constructors

Properties

cause? code? data? @@ -10,7 +10,7 @@

Since

0.1.0

prepareStackTrace? stackTraceLimit

Methods

Constructors

Properties

cause?: unknown
code?: number
data?: unknown
message: string
name: string = 'GrinderyWalletProviderError'
stack?: string
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Constructors

Properties

cause?: unknown
code?: number
data?: unknown
message: string
name: string = 'GrinderyWalletProviderError'
stack?: string
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    -

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file +

Parameters

  • targetObject: object
  • Optional constructorOpt: Function

Returns void

\ No newline at end of file diff --git a/docs/classes/classes_Rpc.Rpc.html b/docs/classes/classes_Rpc.Rpc.html index 97724de..7267a9f 100644 --- a/docs/classes/classes_Rpc.Rpc.html +++ b/docs/classes/classes_Rpc.Rpc.html @@ -1,26 +1,26 @@ -Rpc | Grindery Wallet SDK - v0.5.3

Summary

The Grindery RPC API wrapper class

+Rpc | Grindery Wallet SDK - v0.5.4

Summary

The Grindery RPC API wrapper class

Since

0.2.0

-

Constructors

Constructors

Properties

Methods

  • Type Parameters

    • T

    Parameters

    • method: string

      Provider request method name

      +

Constructors

Properties

Methods

  • Type Parameters

    • T

    Parameters

    • method: string

      Provider request method name

    • Optional params: readonly unknown[]

      Provider request parameters

    • Optional timeout: number

      Optional. The time in milliseconds to wait for the request result. Default is 30000.

    Returns Promise<T>

    The result of the provider request

    Summary

    Sends a provider request to the Grindery RPC API and waits for the result.

    -
  • Type Parameters

    • T

    Parameters

    • method: RpcMethodNames

      Request method name

    • Optional params: object | unknown[]

      Request parameters

    Returns Promise<T>

    The result of the request

    Summary

    Sends a request to the Grindery Walletconnect RPC API.

    -
  • Protected

    Parameters

  • Protected

    Parameters

    • method: string

      Provider request method name

    • Optional params: readonly unknown[]

      Provider request parameters

    Returns Promise<request>

    Promise resolving with the request token to use in the waitGrinderyRpcProviderRequest method

    Summary

    Sends a provider request to the Grindery RPC API.

    -
  • Protected

    Type Parameters

    • T

    Parameters

    • requestToken: string

      A token to identify provider request. Recieved in the results of sendGrinderyRpcProviderRequest method.

      +
  • Protected

    Type Parameters

    • T

    Parameters

    • requestToken: string

      A token to identify provider request. Recieved in the results of sendGrinderyRpcProviderRequest method.

    • Optional timeout: number

      Optional. The time in milliseconds to wait for the request result. Default is 30000.

    Returns Promise<T>

    The result of the provider request

    Summary

    Waits for the result of the provider request.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/classes_SdkStorage.SdkStorage.html b/docs/classes/classes_SdkStorage.SdkStorage.html index 150a0df..8acfeb4 100644 --- a/docs/classes/classes_SdkStorage.SdkStorage.html +++ b/docs/classes/classes_SdkStorage.SdkStorage.html @@ -1,22 +1,22 @@ -SdkStorage | Grindery Wallet SDK - v0.5.3

Summary

A class to handle local storage

+SdkStorage | Grindery Wallet SDK - v0.5.4

Summary

A class to handle local storage

Since

0.2.0

-

Constructors

Constructors

Methods

  • Parameters

    • key: "pairingToken" | "sessionId" | "connectUrl" | "connectUrlBrowser" | "shortToken" | "clientId" | "address" | "chainId"

      Provider storage key

      +
  • Parameters

    • key: "pairingToken" | "sessionId" | "connectUrl" | "connectUrlBrowser" | "shortToken" | "clientId" | "address" | "chainId"

      Provider storage key

    Returns string

    The value of the storage by the key

    Summary

    Gets the value of the storage by the key

    -
  • Parameters

    • key: "pairingToken" | "sessionId" | "connectUrl" | "connectUrlBrowser" | "shortToken" | "clientId" | "address" | "chainId"

      Provider storage key

      +
  • Parameters

    • key: "pairingToken" | "sessionId" | "connectUrl" | "connectUrlBrowser" | "shortToken" | "clientId" | "address" | "chainId"

      Provider storage key

    • value: string

      The value to set

    Returns string

    Summary

    Sets the value of the storage by the key

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/classes_WalletAPI.WalletAPI.html b/docs/classes/classes_WalletAPI.WalletAPI.html index 905b534..a786d66 100644 --- a/docs/classes/classes_WalletAPI.WalletAPI.html +++ b/docs/classes/classes_WalletAPI.WalletAPI.html @@ -1,9 +1,9 @@ -WalletAPI | Grindery Wallet SDK - v0.5.3

Summary

The Grindery Wallet API wrapper class

+WalletAPI | Grindery Wallet SDK - v0.5.4

Summary

The Grindery Wallet API wrapper class

Since

0.5.0

-

Constructors

Constructors

Methods

Constructors

Methods

  • Type Parameters

    • T

    Parameters

    • method: string

      JSON-RPC method name

    • Optional params: object

      JSON-RPC method parameters, optional

    Returns Promise<T>

    The result of the API request

    Summary

    Sends a request to the Grindery Wallet API

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/classes_WalletSDK.WalletSDK.html b/docs/classes/classes_WalletSDK.WalletSDK.html index 20b74c3..10cde46 100644 --- a/docs/classes/classes_WalletSDK.WalletSDK.html +++ b/docs/classes/classes_WalletSDK.WalletSDK.html @@ -1,6 +1,6 @@ -WalletSDK | Grindery Wallet SDK - v0.5.3

Summary

The Wallet SDK class

+WalletSDK | Grindery Wallet SDK - v0.5.4

Summary

The Wallet SDK class

Since

0.2.0

-

Constructors

Constructors

Properties

Constructors

Properties

config: WalletSDKConfig = ...
provider: Provider

Summary

The provider instance

-
storage: SdkStorage = ...

Summary

SdkStorage class instance

-
user: null | User = null

Summary

The Grindery Wallet user

-

Methods

  • Returns Promise<string[]>

    The array of ethereum addresses

    +

Constructors

Properties

config: WalletSDKConfig = ...
provider: Provider

Summary

The provider instance

+
storage: SdkStorage = ...

Summary

SdkStorage class instance

+
user: null | User = null

Summary

The Grindery Wallet user

+

Methods

  • Returns Promise<string[]>

    The array of ethereum addresses

    Summary

    Initiate connection to the Grindery Wallet

    Since

    0.1.0

    -
  • Returns Promise<boolean>

    True if wallet is disconnected

    +
  • Returns Promise<boolean>

    True if wallet is disconnected

    Summary

    Disconnects Grindery Wallet

    Since

    0.1.0

    -
  • Returns string

    Returns chain id in CAIP-2 format

    +
  • Returns string

    Returns chain id in CAIP-2 format

    Summary

    Gets currently connected chain

    Since

    0.3.0

    -
  • Parameters

    • userId: string

      Telegram user ID

    Returns Promise<string>

    Grindery Wallet address

    Summary

    Exchange Telegram user ID to Grindery Wallet address

    Since

    0.4.0

    -
  • Private

    Parameters

    Returns void

    Summary

    Handles the pairing request, by opening the Grindery Wallet

    -
  • Private

    Parameters

    Returns void

    Summary

    Handles the pairing request, by opening the Grindery Wallet

    +
  • Returns boolean

    True if the provider is connected to the server.

    Summary

    Checks if the provider is connected to the server

    Example

    const isConnected = window.Grindery.WalletSDK.isConnected();
     
    -
  • Returns boolean

    True if the provider is connected to the server and the Grindery Wallet.

    +
  • Returns boolean

    True if the provider is connected to the server and the Grindery Wallet.

    Summary

    Checks if the provider is connected to the server and the Grindery Wallet

    -
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • callback: Function

      Callback function

    Returns WalletSDK

    The instance of the class itself

    Summary

    Adds a listener to the event

    -
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

      +
  • Parameters

    • event: "accountsChanged" | "pair" | "connect" | "disconnect" | "chainChanged" | "message"

      Event name

    • callback: Function

      Callback function

    Returns WalletSDK

    The instance of the class itself

    Summary

    Removes a listener from the event

    -
  • Parameters

    • params: {
          data?: string;
          to: string;
          value?: string;
      }

      The transaction parameters

      +
  • Parameters

    • params: {
          data?: string;
          to: string;
          value?: string;
      }

      The transaction parameters

      • Optional data?: string

        The data to send

      • to: string

        The recipient address

      • Optional value?: string

        The amount to send in wei

    Returns Promise<string>

    Transaction hash string

    Summary

    Sends a transaction request to the Grindery Wallet

    Since

    0.1.0

    -
  • Parameters

    • appId: string

      The application ID

    Returns void

    Summary

    Sets the application ID

    Since

    0.5.1

    -
  • Parameters

    • message: string

      The message to sign

    Returns Promise<string>

    Signature string

    Summary

    Sends a personal signature request to the Grindery Wallet

    Since

    0.1.0

    -
  • Parameters

    • chainId: string

      Chain id in CAIP-2 format

    Returns Promise<null>

    Returns null on success

    Summary

    Requests the Grindery Wallet to switch the chain

    Since

    0.3.0

    -
  • Private

    Parameters

    • name: "appOpened" | "walletConnected" | "walletDisconnected" | "walletAddressRequested"
    • Optional data: Record<string, unknown>

    Returns Promise<void>

    Summary

    Tracks client side event

    +
  • Private

    Parameters

    • name: "appOpened" | "walletConnected" | "walletDisconnected" | "walletAddressRequested"
    • Optional data: Record<string, unknown>

    Returns Promise<void>

    Summary

    Tracks client side event

    Since

    0.4.2

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/enums/classes_EventEmitter.ProviderEvents.html b/docs/enums/classes_EventEmitter.ProviderEvents.html index 1ad4582..e6d5aa2 100644 --- a/docs/enums/classes_EventEmitter.ProviderEvents.html +++ b/docs/enums/classes_EventEmitter.ProviderEvents.html @@ -1,10 +1,10 @@ -ProviderEvents | Grindery Wallet SDK - v0.5.3

Summary

Provider events

+ProviderEvents | Grindery Wallet SDK - v0.5.4

Summary

Provider events

Since

0.2.0

Link

https://eips.ethereum.org/EIPS/eip-1193#provider-events

-

Enumeration Members

Enumeration Members

accountsChanged: "accountsChanged"
chainChanged: "chainChanged"
connect: "connect"
disconnect: "disconnect"
message: "message"
pair: "pair"
\ No newline at end of file +

Enumeration Members

accountsChanged: "accountsChanged"
chainChanged: "chainChanged"
connect: "connect"
disconnect: "disconnect"
message: "message"
pair: "pair"
\ No newline at end of file diff --git a/docs/enums/classes_Provider.ProviderMethodNames.html b/docs/enums/classes_Provider.ProviderMethodNames.html index 461033a..b2222d4 100644 --- a/docs/enums/classes_Provider.ProviderMethodNames.html +++ b/docs/enums/classes_Provider.ProviderMethodNames.html @@ -1,7 +1,7 @@ -ProviderMethodNames | Grindery Wallet SDK - v0.5.3

Summary

The Grindery wallet provider method names

+ProviderMethodNames | Grindery Wallet SDK - v0.5.4

Summary

The Grindery wallet provider method names

Since

0.2.0

Since

0.3.0 Added eth_chainId, wallet_addEthereumChain and wallet_switchEthereumChain methods

-

Enumeration Members

Enumeration Members

Enumeration Members

eth_accounts: "eth_accounts"
eth_chainId: "eth_chainId"
eth_requestAccounts: "eth_requestAccounts"
eth_sendTransaction: "eth_sendTransaction"
gws_disconnect: "gws_disconnect"
personal_sign: "personal_sign"
wallet_addEthereumChain: "wallet_addEthereumChain"
wallet_switchEthereumChain: "wallet_switchEthereumChain"
\ No newline at end of file +

Enumeration Members

eth_accounts: "eth_accounts"
eth_chainId: "eth_chainId"
eth_requestAccounts: "eth_requestAccounts"
eth_sendTransaction: "eth_sendTransaction"
gws_disconnect: "gws_disconnect"
personal_sign: "personal_sign"
wallet_addEthereumChain: "wallet_addEthereumChain"
wallet_switchEthereumChain: "wallet_switchEthereumChain"
\ No newline at end of file diff --git a/docs/enums/classes_Rpc.RpcMethodNames.html b/docs/enums/classes_Rpc.RpcMethodNames.html index c7aaeb2..4a76984 100644 --- a/docs/enums/classes_Rpc.RpcMethodNames.html +++ b/docs/enums/classes_Rpc.RpcMethodNames.html @@ -1,9 +1,9 @@ -RpcMethodNames | Grindery Wallet SDK - v0.5.3

Summary

The Grindery RPC API method names

-

Enumeration Members

disconnect +RpcMethodNames | Grindery Wallet SDK - v0.5.4

Summary

The Grindery RPC API method names

+

Enumeration Members

disconnect: "disconnect"
getUserWalletAddress: "getUserWalletAddress"
request: "request"
requestPairing: "requestPairing"
trackClientEvent: "trackClientEvent"
waitForPairingResult: "waitForPairingResult"
waitForRequestResult: "waitForRequestResult"
\ No newline at end of file +

Enumeration Members

disconnect: "disconnect"
getUserWalletAddress: "getUserWalletAddress"
request: "request"
requestPairing: "requestPairing"
trackClientEvent: "trackClientEvent"
waitForPairingResult: "waitForPairingResult"
waitForRequestResult: "waitForRequestResult"
\ No newline at end of file diff --git a/docs/enums/classes_SdkStorage.SdkStorageKeys.html b/docs/enums/classes_SdkStorage.SdkStorageKeys.html index bbe8da1..687cd3d 100644 --- a/docs/enums/classes_SdkStorage.SdkStorageKeys.html +++ b/docs/enums/classes_SdkStorage.SdkStorageKeys.html @@ -1,6 +1,6 @@ -SdkStorageKeys | Grindery Wallet SDK - v0.5.3

Summary

SdkStorage keys

+SdkStorageKeys | Grindery Wallet SDK - v0.5.4

Summary

SdkStorage keys

Since

0.2.0

-

Enumeration Members

Enumeration Members

Enumeration Members

address: "address"
chainId: "chainId"
clientId: "clientId"
connectUrl: "connectUrl"
connectUrlBrowser: "connectUrlBrowser"
pairingToken: "pairingToken"
sessionId: "sessionId"
shortToken: "shortToken"
\ No newline at end of file +

Enumeration Members

address: "address"
chainId: "chainId"
clientId: "clientId"
connectUrl: "connectUrl"
connectUrlBrowser: "connectUrlBrowser"
pairingToken: "pairingToken"
sessionId: "sessionId"
shortToken: "shortToken"
\ No newline at end of file diff --git a/docs/enums/utils_clientEvents.ClientEventNames.html b/docs/enums/utils_clientEvents.ClientEventNames.html index 2c8fe49..f41d915 100644 --- a/docs/enums/utils_clientEvents.ClientEventNames.html +++ b/docs/enums/utils_clientEvents.ClientEventNames.html @@ -1,9 +1,9 @@ -ClientEventNames | Grindery Wallet SDK - v0.5.3

Enumeration Members

appOpened +ClientEventNames | Grindery Wallet SDK - v0.5.4

Enumeration Members

appOpened: "appOpened"

Summary

The event is triggered every time the app page is opened

-
walletAddressRequested: "walletAddressRequested"

Summary

The event is triggered when the app requests user wallet address

-
walletConnected: "walletConnected"

Summary

The event is triggered when the user wallet is connected

-
walletDisconnected: "walletDisconnected"

Summary

The event is triggered when the user wallet is disconnected

-
\ No newline at end of file +
walletAddressRequested: "walletAddressRequested"

Summary

The event is triggered when the app requests user wallet address

+
walletConnected: "walletConnected"

Summary

The event is triggered when the user wallet is connected

+
walletDisconnected: "walletDisconnected"

Summary

The event is triggered when the user wallet is disconnected

+
\ No newline at end of file diff --git a/docs/example/dist/classes/Provider.d.ts b/docs/example/dist/classes/Provider.d.ts index 2c4b44c..341c813 100644 --- a/docs/example/dist/classes/Provider.d.ts +++ b/docs/example/dist/classes/Provider.d.ts @@ -73,6 +73,18 @@ export declare class Provider extends EventEmitter { * @returns {T} The result of the request */ request({ method, params, }: ProviderRequestArguments): Promise; + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + sendAsync({ method, params }: ProviderRequestArguments, callback: Function): void; private storage; private rpc; /** diff --git a/docs/example/dist/grindery-wallet-sdk.cjs.development.js b/docs/example/dist/grindery-wallet-sdk.cjs.development.js index c9b7b14..b8e9e1a 100644 --- a/docs/example/dist/grindery-wallet-sdk.cjs.development.js +++ b/docs/example/dist/grindery-wallet-sdk.cjs.development.js @@ -1235,7 +1235,29 @@ var Provider = /*#__PURE__*/function (_EventEmitter) { return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/docs/example/dist/grindery-wallet-sdk.cjs.development.js.map b/docs/example/dist/grindery-wallet-sdk.cjs.development.js.map index a5a977a..2073284 100644 --- a/docs/example/dist/grindery-wallet-sdk.cjs.development.js.map +++ b/docs/example/dist/grindery-wallet-sdk.cjs.development.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.cjs.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.cjs.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AACH,IAAYA,cAOX,CAAA;AAPD,CAAA,UAAYA,cAAc,EAAA;AACxBA,EAAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnCA,EAAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACbA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnBA,EAAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzBA,EAAAA,cAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7BA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAPWA,cAAc,KAAdA,cAAc,GAOzB,EAAA,CAAA,CAAA,CAAA;AAQD;;;AAGG;AACH,IAAaC,YAAY,gBAAA,YAAA;AACvB,EAAA,SAAAA,eAAA;AAIA;;;AAGG;AAHH,IAAA,IAAA,CAIQC,MAAM,GAAA,KAAA,CAAA,CAAA;AAPZ,IAAA,IAAI,CAACA,MAAM,GAAG,IAAIC,GAAG,EAAE,CAAA;AACzB,GAAA;AAAC,EAAA,IAAAC,MAAA,GAAAH,YAAA,CAAAI,SAAA,CAAA;AAQD;;;;;;AAMG;EANHD,MAAA,CAOOE,EAAE,GAAF,SAAAA,GAAGC,KAAwB,EAAEC,QAAkB,EAAA;IACpD,IAAI,CAAC,IAAI,CAACN,MAAM,CAACO,GAAG,CAACF,KAAK,CAAC,EAAE;MAC3B,IAAI,CAACL,MAAM,CAACQ,GAAG,CAACH,KAAK,EAAE,EAAE,CAAC,CAAA;AAC5B,KAAA;IACA,IAAI,CAACL,MAAM,CAACS,GAAG,CAACJ,KAAK,CAAE,CAACK,IAAI,CAACJ,QAAQ,CAAC,CAAA;AACtC,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA;;;;;;AAMG,MANH;EAAAJ,MAAA,CAOOS,cAAc,GAAd,SAAAA,eAAeN,KAAwB,EAAEC,QAAkB,EAAA;IAChE,IAAI,IAAI,CAACN,MAAM,CAACO,GAAG,CAACF,KAAK,CAAC,EAAE;AAC1B,MAAA,IAAMO,SAAS,GAAG,IAAI,CAACZ,MAAM,CAACS,GAAG,CAACJ,KAAK,CAAE,CAACQ,MAAM,CAAC,UAACC,EAAE,EAAA;QAAA,OAAKA,EAAE,KAAKR,QAAQ,CAAA;OAAC,CAAA,CAAA;MACzE,IAAI,CAACN,MAAM,CAACQ,GAAG,CAACH,KAAK,EAAEO,SAAS,CAAC,CAAA;AACnC,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA;;;;;;AAMG,MANH;AAAAV,EAAAA,MAAA,CAOUa,IAAI,GAAJ,SAAAA,IAAAA,CAAKV,KAAwB,EAAgB;IAAA,KAAAW,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAXC,IAAW,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAXF,MAAAA,IAAW,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,KAAA;IACrD,IAAI,IAAI,CAACrB,MAAM,CAACO,GAAG,CAACF,KAAK,CAAC,EAAE;MAC1BiB,OAAO,CAACC,GAAG,CAAC,+BAA+B,EAAElB,KAAK,EAAEc,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5D,MAAA,IAAI,CAACnB,MAAM,CAACS,GAAG,CAACJ,KAAK,CAAE,CAACmB,OAAO,CAAC,UAAClB,QAAQ,EAAI;AAC3CA,QAAAA,QAAQ,CAAAmB,KAAA,CAAIN,KAAAA,CAAAA,EAAAA,IAAI,CAAC,CAAA;AACnB,OAAC,CAAC,CAAA;AACJ,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAA,EAAA,OAAApB,YAAA,CAAA;AAAA,CAAA,EAAA;;ACjFH;;;AAGG;AACI,IAAM2B,IAAI,GAAG,SAAPA,IAAIA,GAAgB;EAC/B,IAAIC,CAAC,GAAG,EAAE,CAAA;EACV,OAAOA,CAAC,CAACT,MAAM,GAAG,EAAE,EAAES,CAAC,IAAIC,IAAI,CAACC,MAAM,EAAE,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC,CAAA;EAC/D,IAAMC,EAAE,GAAG,CAAEC,QAAQ,CAACN,CAAC,CAACI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAI,GAAG,EAAED,QAAQ,CAAC,EAAE,CAAC,CAAA;EACrE,OAAUH,CAAC,CAACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAIJ,GAAAA,GAAAA,CAAC,CAACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAKJ,IAAAA,GAAAA,CAAC,CAACI,MAAM,CACrD,EAAE,EACF,CAAC,CACF,GAAIC,GAAAA,GAAAA,EAAE,GAAGL,CAAC,CAACI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,SAAIJ,CAAC,CAACI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC/C,CAAC;;ACgBM,IAAMG,YAAY,GAAwB;EAC/CR,IAAI,eAAEA,IAAI,EAAE;AACZS,EAAAA,IAAI,EAAE,iBAAiB;AACvBC,EAAAA,IAAI,EAAE,qBAAqB;AAC3BC,EAAAA,IAAI,EAAE,w0DAAA;CACP;;ACjCD;;;;AAIG;AACUC,IAAAA,aAAc,0BAAAC,MAAA,EAAA;AAKzB,EAAA,SAAAD,cAAYE,OAAe,EAAEC,IAAa,EAAEtB,IAAc,EAAA;AAAA,IAAA,IAAAuB,KAAA,CAAA;AACxDA,IAAAA,KAAA,GAAAH,MAAA,CAAAI,IAAA,CAAA,IAAA,EAAMH,OAAO,CAAC,IAAA,IAAA,CAAA;IAACE,KAAA,CALjBP,IAAI,GAAW,6BAA6B,CAAA;AAAAO,IAAAA,KAAA,CAC5CD,IAAI,GAAA,KAAA,CAAA,CAAA;AAAAC,IAAAA,KAAA,CACJvB,IAAI,GAAA,KAAA,CAAA,CAAA;IAIFuB,KAAA,CAAKD,IAAI,GAAGA,IAAI,CAAA;IAChBC,KAAA,CAAKvB,IAAI,GAAGA,IAAI,CAAA;AAAC,IAAA,OAAAuB,KAAA,CAAA;AACnB,GAAA;EAACE,cAAA,CAAAN,aAAA,EAAAC,MAAA,CAAA,CAAA;AAAA,EAAA,OAAAD,aAAA,CAAA;AAAA,CAAAO,eAAAA,gBAAA,CATgCC,KAAK,CAAA,CAAA,CAAA;AAYjC,IAAMC,cAAc,GAAG;AAC5BC,EAAAA,aAAa,eAAE,IAAIV,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACxDW,EAAAA,YAAY,eAAE,IAAIX,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC;AACrDY,EAAAA,iBAAiB,eAAE,IAAIZ,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC;AAChEa,EAAAA,YAAY,eAAE,IAAIb,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC;AACrDc,EAAAA,QAAQ,eAAE,IAAId,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC;AAC9Ce,EAAAA,OAAO,eAAE,IAAIf,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC;AACtDgB,EAAAA,YAAY,eAAE,IAAIhB,aAAa,CAAC,uBAAuB,EAAE,IAAI,CAAC;AAC9DiB,EAAAA,iBAAiB,eAAE,IAAIjB,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAA;CAChE,CAAA;AAEM,IAAMkB,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,KAAe,EAAmB;AACjE,EAAA,IAAIC,aAA4B,CAAA;EAChC,IAAID,KAAK,YAAYnB,aAAa,EAAE;AAClCoB,IAAAA,aAAa,GAAG,IAAIpB,aAAa,CAC/BmB,KAAK,CAACjB,OAAO,IAAI,eAAe,EAChCiB,KAAK,CAAChB,IAAI,IAAI,IAAI,EAClBgB,KAAK,CAACtC,IAAI,CACX,CAAA;AACH,GAAC,MAAM,IAAIsC,KAAK,YAAYX,KAAK,EAAE;AACjCY,IAAAA,aAAa,GAAG,IAAIpB,aAAa,CAC/BmB,KAAK,CAACjB,OAAO,IAAI,eAAe,EAChC,IAAI,EACJiB,KAAK,CACN,CAAA;AACH,GAAC,MAAM;IACLC,aAAa,GAAG,IAAIpB,aAAa,CAAC,eAAe,EAAE,IAAI,EAAEmB,KAAK,CAAC,CAAA;AACjE,GAAA;AACA,EAAA,OAAOC,aAAa,CAAA;AACtB,CAAC;;AC9CD;;;;;;;AAOG;AACI,IAAMC,MAAM,GAAa,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;AAElE,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,OAAe,EAAY;AACpD,EAAA,OAAA,IAAA,GAAY5B,QAAQ,CAAC4B,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAChC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAC9D,CAAC,CAAA;AAEM,IAAMiC,YAAY,GAAG,SAAfA,YAAYA,CAAIH,UAAkB,EAAY;AACzD,EAAA,OAAA,SAAA,GAAiB3B,QAAQ,CAAC2B,UAAU,EAAE,EAAE,CAAC,CAAA;AAC3C,CAAC;;ACbD,IAAMI,gBAAgB,GAAG,wBAAwB,CAAA;AAEjD;;;AAGG;AACH,IAAYC,cASX,CAAA;AATD,CAAA,UAAYA,cAAc,EAAA;AACxBA,EAAAA,cAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7BA,EAAAA,cAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvBA,EAAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzBA,EAAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvCA,EAAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzBA,EAAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrBA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnBA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EATWA,cAAc,KAAdA,cAAc,GASzB,EAAA,CAAA,CAAA,CAAA;AAYD;;;AAGG;AACH,IAAaC,UAAU,gBAAA,YAAA;AAAA,EAAA,SAAAA,UAAA,GAAA,EAAA;AAAA,EAAA,IAAAhE,MAAA,GAAAgE,UAAA,CAAA/D,SAAA,CAAA;AACrB;;;;;AAKG;AALHD,EAAAA,MAAA,CAMOiE,QAAQ,GAAR,SAAAA,QAAAA,CAASC,GAAkB,EAAA;IAChC,IAAMC,KAAK,GAAG,IAAI,CAACC,WAAW,EAAE,CAACF,GAAG,CAAC,IAAI,EAAE,CAAA;AAC3C,IAAA,OAAOC,KAAK,CAAA;AACd,GAAA;AAEA;;;;;;AAMG,MANH;EAAAnE,MAAA,CAOOqE,QAAQ,GAAR,SAAAA,SAASH,GAAkB,EAAEC,KAAa,EAAA;AAC/C,IAAA,IAAMG,QAAQ,GAAG,IAAI,CAACF,WAAW,EAAE,CAAA;AACnCE,IAAAA,QAAQ,CAACJ,GAAG,CAAC,GAAGC,KAAK,CAAA;AACrB,IAAA,IAAI,CAACI,YAAY,CAACD,QAAQ,CAAC,CAAA;AAC3B,IAAA,OAAOH,KAAK,CAAA;AACd,GAAA;AAEA;;;;AAIG,MAJH;AAAAnE,EAAAA,MAAA,CAKOwE,KAAK,GAAL,SAAAA,QAAK;IACV,IAAI,CAACD,YAAY,CAAC;MAChBE,QAAQ,EAAE,IAAI,CAACL,WAAW,EAAE,CAACK,QAAQ,IAAIjD,IAAI,EAAE;MAC/CmC,OAAO,EAAE,IAAI,CAACS,WAAW,EAAE,CAACT,OAAO,IAAIF,MAAM,CAAC,CAAC,CAAA;AAChD,KAAA,CAAC,CAAA;AACJ,GAAA;AAEA;;;;AAIG,MAJH;AAAAzD,EAAAA,MAAA,CAKQoE,WAAW,GAAX,SAAAA,cAAW;IACjB,IAAI;AACF,MAAA,OAAOM,IAAI,CAACC,KAAK,CACfC,YAAY,CAACC,OAAO,CAACf,gBAAgB,CAAC,IAAI,IAAI,CACzB,CAAA;KACxB,CAAC,OAAOP,KAAK,EAAE;AACdqB,MAAAA,YAAY,CAACE,OAAO,CAAChB,gBAAgB,EAAEY,IAAI,CAACK,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;AAC1D,MAAA,MAAM,IAAInC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AAC1C,KAAA;AACF,GAAA;AAEA;;;;AAIG,MAJH;AAAA5C,EAAAA,MAAA,CAKQuE,YAAY,GAAZ,SAAAA,YAAAA,CAAaS,OAA2B,EAAA;IAC9CJ,YAAY,CAACE,OAAO,CAAChB,gBAAgB,EAAEY,IAAI,CAACK,SAAS,CAACC,OAAO,CAAC,CAAC,CAAA;GAChE,CAAA;AAAA,EAAA,OAAAhB,UAAA,CAAA;AAAA,CAAA,EAAA;;AC3FH;;AAEG;AACH,IAAYiB,cAQX,CAAA;AARD,CAAA,UAAYA,cAAc,EAAA;AACxBA,EAAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjCA,EAAAA,cAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C,CAAA;AAC7CA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnBA,EAAAA,cAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C,CAAA;AAC7CA,EAAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAA2B,CAAA;AAC3BA,EAAAA,cAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C,CAAA;AAC7CA,EAAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACvC,CAAC,EARWA,cAAc,KAAdA,cAAc,GAQzB,EAAA,CAAA,CAAA,CAAA;AAiED;;;AAGG;AACH,IAAaC,GAAG,gBAAA,YAAA;EAGd,SAAAA,GAAAA,CAAYC,MAAuB,EAAA;AAAA,IAAA,IAAA,CAF3BA,MAAM,GAAA,KAAA,CAAA,CAAA;IAGZ,IAAI,CAACA,MAAM,GAAGA,MAAM,CAAA;AACtB,GAAA;AAEA;;;;;;;AAOG;AAPH,EAAA,IAAAnF,MAAA,GAAAkF,GAAA,CAAAjF,SAAA,CAAA;AAAAD,EAAAA,MAAA,CAQaoF,qBAAqB;AAAA;AAAA,EAAA,YAAA;AAAA,IAAA,IAAAC,sBAAA,gBAAAC,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAA3B,SAAAC,OACLC,CAAAA,MAAc,EACdC,MAA2B,EAC3BC,OAAgB,EAAA;AAAA,MAAA,IAAAC,OAAA,CAAA;AAAA,MAAA,OAAAN,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAF,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEM,IAAI,CAACC,cAAc,CAACT,MAAM,EAAEC,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAAnDE,OAAO,GAAAG,QAAA,CAAAI,IAAA,CAAA;AAAAJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;YAAA,OACA,IAAI,CAACG,cAAc,CAACR,OAAO,CAACS,YAAY,EAAEV,OAAO,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAAI,QAAA,CAAAO,MAAA,CAAAP,QAAAA,EAAAA,QAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAJ,QAAA,CAAAQ,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAf,OAAA,EAAA,IAAA,CAAA,CAAA;KAChE,CAAA,CAAA,CAAA;AAAA,IAAA,SAAAL,qBAAAqB,CAAAA,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,MAAA,OAAAtB,sBAAA,CAAA9D,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAqE,qBAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;AAMG;AANH,GAAA;AAAApF,EAAAA,MAAA,CAOgBmG,cAAc;AAAA;AAAA,EAAA,YAAA;AAAA,IAAA,IAAAS,eAAA,gBAAAtB,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAApB,SAAAqB,QAAAA,CACRnB,MAAc,EACdC,MAA2B,EAAA;AAAA,MAAA,IAAAX,OAAA,CAAA;AAAA,MAAA,OAAAO,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAgB,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAd,IAAA,GAAAc,SAAA,CAAAb,IAAA;AAAA,UAAA,KAAA,CAAA;AAErBlB,YAAAA,OAAO,GAAG,IAAIhB,UAAU,EAAE,CAAA;AAAA+C,YAAAA,SAAA,CAAAb,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACnB,IAAI,CAACc,iBAAiB,CACjC/B,cAAc,CAACY,OAAO,EACtB;cACEoB,SAAS,EAAEjC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACkD,SAAS,CAAC;cACrDC,KAAK,EAAElC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACJ,OAAO,CAAC;AAC/CkC,cAAAA,OAAO,EAAE;AACPH,gBAAAA,MAAM,EAANA,MAAM;AACNC,gBAAAA,MAAM,EAANA,MAAAA;AACD,eAAA;AACF,aAAA,CACF,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAAoB,SAAA,CAAAR,MAAA,CAAAQ,QAAAA,EAAAA,SAAA,CAAAX,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAW,SAAA,CAAAP,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAK,QAAA,EAAA,IAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;IAAA,SAAAV,cAAAA,CAAAgB,GAAA,EAAAC,GAAA,EAAA;AAAA,MAAA,OAAAR,eAAA,CAAArF,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAoF,cAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;AAMG;AANH,GAAA;AAAAnG,EAAAA,MAAA,CAOgBqG,cAAc;AAAA;AAAA,EAAA,YAAA;AAAA,IAAA,IAAAgB,eAAA,gBAAA/B,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAApB,SAAA8B,QAAAA,CACRhB,YAAoB,EACpBV,OAAgB,EAAA;AAAA,MAAA,OAAAL,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAyB,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAvB,IAAA,GAAAuB,SAAA,CAAAtB,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAsB,YAAAA,SAAA,CAAAtB,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEH,IAAI,CAACc,iBAAiB,CACjC/B,cAAc,CAACwC,oBAAoB,EACnC;AACEnB,cAAAA,YAAY,EAAZA,YAAY;AACZV,cAAAA,OAAO,EAAPA,OAAAA;AACD,aAAA,CACF,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAA4B,SAAA,CAAAjB,MAAA,CAAAiB,QAAAA,EAAAA,SAAA,CAAApB,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAoB,SAAA,CAAAhB,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAc,QAAA,EAAA,IAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;IAAA,SAAAjB,cAAAA,CAAAqB,GAAA,EAAAC,GAAA,EAAA;AAAA,MAAA,OAAAN,eAAA,CAAA9F,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAsF,cAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;AAMG;AANH,GAAA;AAAArG,EAAAA,MAAA,CAOagH,iBAAiB;AAAA;AAAA,EAAA,YAAA;AAAA,IAAA,IAAAY,kBAAA,gBAAAtC,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAAvB,SAAAqC,QAAAA,CACLnC,MAAsB,EACtBC,MAA2B,EAAA;MAAA,IAAAmC,QAAA,EAAA7G,IAAA,CAAA;AAAA,MAAA,OAAAsE,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAiC,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA/B,IAAA,GAAA+B,SAAA,CAAA9B,IAAA;AAAA,UAAA,KAAA,CAAA;AAAA8B,YAAAA,SAAA,CAAA/B,IAAA,GAAA,CAAA,CAAA;AAAA+B,YAAAA,SAAA,CAAA9B,IAAA,GAAA,CAAA,CAAA;YAAA,OAGF+B,KAAK,CAC1B,IAAI,CAAC9C,MAAM,CAAC+C,aAAa,IAAI,wCAAwC,EACrE;AACExC,cAAAA,MAAM,EAAE,MAAM;AACdyC,cAAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAA;eACjB;AACDC,cAAAA,IAAI,EAAE1D,IAAI,CAACK,SAAS,CAAC;AACnBsD,gBAAAA,OAAO,EAAE,KAAK;AACdC,gBAAAA,EAAE,EAAE,CAAC;AACL5C,gBAAAA,MAAM,WAASA,MAAQ;gBACvBC,MAAM,EAAEA,MAAM,IAAI,EAAA;eACnB,CAAA;AACF,aAAA,CACF,CAAA;AAAA,UAAA,KAAA,CAAA;YAdKmC,QAAQ,GAAAE,SAAA,CAAA5B,IAAA,CAAA;AAAA4B,YAAAA,SAAA,CAAA9B,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAeK4B,QAAQ,CAACS,IAAI,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAA5BtH,IAAI,GAAA+G,SAAA,CAAA5B,IAAA,CAAA;YAAA,IACNnF,CAAAA,IAAI,CAACsC,KAAK,EAAA;AAAAyE,cAAAA,SAAA,CAAA9B,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MACN,IAAI9D,aAAa,CAACnB,IAAI,CAACsC,KAAK,CAACjB,OAAO,EAAErB,IAAI,CAACsC,KAAK,CAAChB,IAAI,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAAA,IAEzDtB,IAAI,CAACuH,MAAM,EAAA;AAAAR,cAAAA,SAAA,CAAA9B,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;YAAA,MACRrD,cAAc,CAACK,QAAQ,CAAA;AAAA,UAAA,KAAA,EAAA;AAAA,YAAA,OAAA8E,SAAA,CAAAzB,MAAA,CAExBtF,QAAAA,EAAAA,IAAI,CAACuH,MAAM,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA;AAAAR,YAAAA,SAAA,CAAA/B,IAAA,GAAA,EAAA,CAAA;YAAA+B,SAAA,CAAAS,EAAA,GAAAT,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YAAA,IAAA,EAEdA,SAAA,CAAAS,EAAA,YAAiB7F,KAAK,CAAA,EAAA;AAAAoF,cAAAA,SAAA,CAAA9B,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MAClB,IAAI9D,aAAa,CAAC4F,SAAA,CAAAS,EAAA,CAAMnG,OAAO,EAAE,GAAG,EAAA0F,SAAA,CAAAS,EAAO,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAA,MAE9C,IAAIrG,aAAa,CAAC,cAAc,EAAE,GAAG,EAAA4F,SAAA,CAAAS,EAAO,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAT,SAAA,CAAAxB,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAqB,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;KAEtD,CAAA,CAAA,CAAA;IAAA,SAAAb,iBAAAA,CAAA0B,GAAA,EAAAC,GAAA,EAAA;AAAA,MAAA,OAAAf,kBAAA,CAAArG,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAiG,iBAAA,CAAA;AAAA,GAAA,EAAA,CAAA;AAAA,EAAA,OAAA9B,GAAA,CAAA;AAAA,CAAA,EAAA;;AChLH;;;;AAIG;AACH,IAAY0D,mBASX,CAAA;AATD,CAAA,UAAYA,mBAAmB,EAAA;AAC7BA,EAAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3CA,EAAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7BA,EAAAA,mBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/BA,EAAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3CA,EAAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjCA,EAAAA,mBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3BA,EAAAA,mBAAA,CAAA,yBAAA,CAAA,GAAA,yBAAmD,CAAA;AACnDA,EAAAA,mBAAA,CAAA,4BAAA,CAAA,GAAA,4BAAyD,CAAA;AAC3D,CAAC,EATWA,mBAAmB,KAAnBA,mBAAmB,GAS9B,EAAA,CAAA,CAAA,CAAA;AAkCD;;;;AAIG;AACUC,IAAAA,QAAS,0BAAAC,aAAA,EAAA;EAIpB,SAAAD,QAAAA,CAAY1D,MAAuB,EAAA;AAAA,IAAA,IAAA4D,aAAA,CAAA;AAAA,IAAA,IAAAvG,KAAA,CAAA;AACjCA,IAAAA,KAAA,GAAAsG,aAAA,CAAArG,IAAA,MAAO,IAAA,IAAA,CAAA;IAACD,KAAA,CAJHwG,gBAAgB,GAAY,IAAI,CAAA;AAAAxG,IAAAA,KAAA,CAC/B2C,MAAM,GAAA,KAAA,CAAA,CAAA;AAAA3C,IAAAA,KAAA,CAsENwC,OAAO,GAAe,IAAIhB,UAAU,EAAE,CAAA;AAAAxB,IAAAA,KAAA,CAEtCyG,GAAG,GAAA,KAAA,CAAA,CAAA;AAEX;;;;;AAKG;AALHzG,IAAAA,KAAA,CAMQ0G,WAAW,gBAAA,YAAA;MAAA,IAAAC,KAAA,GAAA7D,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAA2D,IAAA,EAAA;QAAA,IAAAzF,OAAA,EAAA0F,SAAA,CAAA;AAAA,QAAA,OAAA9D,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;cAASvC,OAAO,GAAAyF,IAAA,CAAPzF,OAAO,CAAA;AAC9B0F,cAAAA,SAAS,GAAGxF,YAAY,CAACF,OAAO,CAAC,CAAA;AAAA,cAAA,IAClCF,MAAM,CAAC6F,QAAQ,CAACD,SAAS,CAAC,EAAA;AAAArD,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAA,cAAA,MACvB5C,gBAAgB,CAACT,cAAc,CAACQ,iBAAiB,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAE1Db,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACJ,OAAO,EAAE0F,SAAS,CAAC,CAAA;AACxD7G,cAAAA,KAAA,CAAK3B,IAAI,CAACjB,cAAc,CAAC2J,YAAY,EAAE;AAAE5F,gBAAAA,OAAO,EAAPA,OAAAA;AAAS,eAAA,CAAC,CAAA;AAAC,cAAA,OAAAqC,QAAA,CAAAO,MAAA,CAAA,QAAA,EAC7C,IAAI,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAP,QAAA,CAAAQ,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAf,OAAA,CAAA,CAAA;OACZ,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAgB,EAAA,EAAA;AAAA,QAAA,OAAA0C,KAAA,CAAA5H,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,CAAA;AAED;;;AAGG;IAHHyB,KAAA,CAIQgH,OAAO,IAAAT,aAAA,OAAAA,aAAA,CAIZH,mBAAmB,CAACa,mBAAmB,CAAA,GAAA,YAAA;MAAA,IAAAC,KAAA,GAAApE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAqB,QAAAA,CACzClB,MAAuC,EAAA;AAAA,QAAA,IAAAgE,UAAA,EAAAnB,MAAA,EAAAoB,WAAA,CAAA;AAAA,QAAA,OAAArE,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAgB,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAd,IAAA,GAAAc,SAAA,CAAAb,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,IAAA,CAEnC1D,KAAA,CAAKwC,OAAO,CAACf,QAAQ,CAAC,WAAW,CAAC,EAAA;AAAA8C,gBAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAa,cAAAA,SAAA,CAAAd,IAAA,GAAA,CAAA,CAAA;AAAAc,cAAAA,SAAA,CAAAb,IAAA,GAAA,CAAA,CAAA;cAAA,OAErB1D,KAAA,CAAKqD,OAAO,CAAsC;gBAC7DH,MAAM,EAAEkD,mBAAmB,CAACiB,YAAY;AACxClE,gBAAAA,MAAM,EAAE,EAAA;AACT,eAAA,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,OAAAoB,SAAA,CAAAR,MAAA,CAAAQ,QAAAA,EAAAA,SAAA,CAAAX,IAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;AAAAW,cAAAA,SAAA,CAAAd,IAAA,GAAA,CAAA,CAAA;cAAAc,SAAA,CAAA0B,EAAA,GAAA1B,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;cAEFvE,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACkD,SAAS,EAAE,EAAE,CAAC,CAAA;AACnD;AAAA,YAAA,KAAA,EAAA;AAAA,cAAA,IAAA,CAGAzE,KAAA,CAAKwC,OAAO,CAACf,QAAQ,CAAC,cAAc,CAAC,EAAA;AAAA8C,gBAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAa,cAAAA,SAAA,CAAAd,IAAA,GAAA,EAAA,CAAA;AAAAc,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;cAAA,OAG7B1D,KAAA,CAAKyG,GAAG,CAACjC,iBAAiB,CAC9B/B,cAAc,CAAC6E,oBAAoB,EACnC;gBACEC,YAAY,EAAEvH,KAAA,CAAKwC,OAAO,CAACf,QAAQ,CACjCF,cAAc,CAACgG,YAAY,CAAA;AAE9B,eAAA,CACF,CAAA;AAAA,YAAA,KAAA,EAAA;cARGJ,UAAU,GAAA5C,SAAA,CAAAX,IAAA,CAAA;AAUhB5D,cAAAA,KAAA,CAAKwC,OAAO,CAACR,KAAK,EAAE,CAAA;AACpBhC,cAAAA,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CACnBN,cAAc,CAACkD,SAAS,EACxB0C,UAAU,CAACK,OAAO,CAAC/C,SAAS,CAC7B,CAAA;AAAC,cAAA,IAEG0C,UAAU,CAACK,OAAO,CAAC/C,SAAS,EAAA;AAAAF,gBAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;cAAA,MACzBrD,cAAc,CAACC,aAAa,CAAA;AAAA,YAAA,KAAA,EAAA;AAAAiE,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;cAAA,OAGvB1D,KAAA,CAAKqD,OAAO,CAAsC;gBAC7DH,MAAM,EAAEkD,mBAAmB,CAACiB,YAAY;gBACxClE,MAAM,EAAEA,MAAM,IAAI,EAAA;AACnB,eAAA,CAAC,CAAA;AAAA,YAAA,KAAA,EAAA;AAAA,cAAA,OAAAoB,SAAA,CAAAR,MAAA,CAAAQ,QAAAA,EAAAA,SAAA,CAAAX,IAAA,CAAA,CAAA;AAAA,YAAA,KAAA,EAAA;AAAAW,cAAAA,SAAA,CAAAd,IAAA,GAAA,EAAA,CAAA;cAAAc,SAAA,CAAAkD,EAAA,GAAAlD,SAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAEFvE,cAAAA,KAAA,CAAKwC,OAAO,CAACR,KAAK,EAAE,CAAA;AACpB;AAAA,YAAA,KAAA,EAAA;AAAAuC,cAAAA,SAAA,CAAAd,IAAA,GAAA,EAAA,CAAA;AAIFzD,cAAAA,KAAA,CAAKwC,OAAO,CAACR,KAAK,EAAE,CAAA;AAACuC,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;cAAA,OAEb1D,KAAA,CAAKyG,GAAG,CAACjC,iBAAiB,CAC9B/B,cAAc,CAACiF,cAAc,EAC7B;AACEC,gBAAAA,KAAK,EAAE3H,KAAA,CAAK2C,MAAM,CAACgF,KAAK,IAAI,EAAE;gBAC9B1F,QAAQ,EAAEjC,KAAA,CAAKwC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACU,QAAQ,CAAC;AACxD2F,gBAAAA,YAAY,EAAE5H,KAAA,CAAK2C,MAAM,CAACiF,YAAY;AACtCC,gBAAAA,WAAW,EAAE7H,KAAA,CAAK2C,MAAM,CAACmF,MAAAA;AAC1B,eAAA,CACF,CAAA;AAAA,YAAA,KAAA,EAAA;cATG9B,MAAM,GAAAzB,SAAA,CAAAX,IAAA,CAAA;cAAA,IAWR,EAAA,CAACoC,MAAM,CAACuB,YAAY,IAAI,CAACvB,MAAM,CAAC+B,UAAU,CAAA,EAAA;AAAAxD,gBAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;cAAA,MACtCrD,cAAc,CAACC,aAAa,CAAA;AAAA,YAAA,KAAA,EAAA;AAGpCN,cAAAA,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACgG,YAAY,EAAEvB,MAAM,CAACuB,YAAY,CAAC,CAAA;AACvEvH,cAAAA,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACwG,UAAU,EAAE/B,MAAM,CAAC+B,UAAU,CAAC,CAAA;AACnE/H,cAAAA,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CACnBN,cAAc,CAACyG,iBAAiB,EAChChC,MAAM,CAACgC,iBAAiB,CACzB,CAAA;AACDhI,cAAAA,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAAC0G,UAAU,EAAEjC,MAAM,CAACiC,UAAU,CAAC,CAAA;AACnEjI,cAAAA,KAAA,CAAK3B,IAAI,CAACjB,cAAc,CAAC8K,IAAI,EAAE;gBAC7BvF,MAAM,EAAE3C,KAAA,CAAK2C,MAAM;gBACnBsF,UAAU,EAAEjC,MAAM,CAACiC,UAAU;gBAC7BF,UAAU,EAAE/B,MAAM,CAAC+B,UAAU;gBAC7BC,iBAAiB,EAAEhC,MAAM,CAACgC,iBAAiB;gBAC3CG,mBAAmB,EAAEnC,MAAM,CAACmC,mBAAAA;AAC7B,eAAA,CAAC,CAAA;AAAC5D,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;cAAA,OAEK1D,KAAA,CAAKyG,GAAG,CAACjC,iBAAiB,CAC9B/B,cAAc,CAAC6E,oBAAoB,EACnC;gBACEC,YAAY,EAAEvB,MAAM,CAACuB,YAAAA;AACtB,eAAA,CACF,CAAA;AAAA,YAAA,KAAA,EAAA;cANGJ,WAAU,GAAA5C,SAAA,CAAAX,IAAA,CAAA;AAQhB5D,cAAAA,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CACnBN,cAAc,CAACkD,SAAS,EACxB0C,WAAU,CAACK,OAAO,CAAC/C,SAAS,CAC7B,CAAA;AAAC,cAAA,IAEG0C,WAAU,CAACK,OAAO,CAAC/C,SAAS,EAAA;AAAAF,gBAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;cAAA,MACzBrD,cAAc,CAACC,aAAa,CAAA;AAAA,YAAA,KAAA,EAAA;cAEpCN,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACgG,YAAY,EAAE,EAAE,CAAC,CAAA;cACtDvH,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACwG,UAAU,EAAE,EAAE,CAAC,CAAA;cACpD/H,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACyG,iBAAiB,EAAE,EAAE,CAAC,CAAA;cAC3DhI,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAAC0G,UAAU,EAAE,EAAE,CAAC,CAAA;AAAC1D,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA,CAAA;cAAA,OAExC1D,KAAA,CAAKqD,OAAO,CAAC;gBACxBH,MAAM,EAAEkD,mBAAmB,CAACiB,YAAY;gBACxClE,MAAM,EAAEA,MAAM,IAAI,EAAA;AACnB,eAAA,CAAC,CAAA;AAAA,YAAA,KAAA,EAAA;AAAA,cAAA,OAAAoB,SAAA,CAAAR,MAAA,CAAAQ,QAAAA,EAAAA,SAAA,CAAAX,IAAA,CAAA,CAAA;AAAA,YAAA,KAAA,EAAA;AAAAW,cAAAA,SAAA,CAAAd,IAAA,GAAA,EAAA,CAAA;cAAAc,SAAA,CAAA6D,EAAA,GAAA7D,SAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;cAAA,MAAAA,SAAA,CAAA6D,EAAA,CAAA;AAAA,YAAA,KAAA,EAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAA7D,SAAA,CAAAP,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAK,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;OAIL,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAH,GAAA,EAAA;AAAA,QAAA,OAAAgD,KAAA,CAAAnI,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,EAAAgI,aAAA,CAKAH,mBAAmB,CAACiB,YAAY,CAAA,GAAA,YAAA;MAAA,IAAAgB,KAAA,GAAAvF,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA8B,QAAAA,CAClC3B,MAAuC,EAAA;AAAA,QAAA,IAAA6C,MAAA,CAAA;AAAA,QAAA,OAAAjD,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAyB,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAvB,IAAA,GAAAuB,SAAA,CAAAtB,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAsB,cAAAA,SAAA,CAAAvB,IAAA,GAAA,CAAA,CAAA;AAAAuB,cAAAA,SAAA,CAAAtB,IAAA,GAAA,CAAA,CAAA;cAAA,OAGf1D,KAAA,CAAKyG,GAAG,CAAC7D,qBAAqB,CAClDwD,mBAAmB,CAACiB,YAAY,EAChClE,MAAM,GAAIzE,KAAK,CAAC4J,OAAO,CAACnF,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC,GAAI,EAAE,CAC1D,CAAA;AAAA,YAAA,KAAA,CAAA;cAHK6C,MAAM,GAAAhB,SAAA,CAAApB,IAAA,CAAA;AAIZ5D,cAAAA,KAAA,CAAKwC,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACgH,OAAO,EAAEvC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;cAC9DhG,KAAA,CAAK3B,IAAI,CAACjB,cAAc,CAACoL,eAAe,EAAExC,MAAM,CAAC,CAAA;AAAC,cAAA,OAAAhB,SAAA,CAAAjB,MAAA,CAAA,QAAA,EAC3CiC,MAAM,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;AAAAhB,cAAAA,SAAA,CAAAvB,IAAA,GAAA,CAAA,CAAA;cAAAuB,SAAA,CAAAiB,EAAA,GAAAjB,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,cAAA,MAEPlE,gBAAgB,CAAAkE,SAAA,CAAAiB,EAAM,CAAC,CAAA;AAAA,YAAA,KAAA,EAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAjB,SAAA,CAAAhB,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAc,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;OAEhC,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAX,GAAA,EAAA;AAAA,QAAA,OAAAkE,KAAA,CAAAtJ,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,EAAAgI,aAAA,CAKAH,mBAAmB,CAACqC,mBAAmB,CAAA,GAAA,YAAA;MAAA,IAAAC,KAAA,GAAA5F,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAqC,QAAAA,CACzClC,MAAuC,EAAA;AAAA,QAAA,OAAAJ,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAiC,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA/B,IAAA,GAAA+B,SAAA,CAAA9B,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA8B,cAAAA,SAAA,CAAA9B,IAAA,GAAA,CAAA,CAAA;cAAA,OAEzB1D,KAAA,CAAKyG,GAAG,CAAC7D,qBAAqB,CAC1CwD,mBAAmB,CAACqC,mBAAmB,EACvCtF,MAAM,GAAIzE,KAAK,CAAC4J,OAAO,CAACnF,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC,GAAI,EAAE,CAC1D,CAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,OAAAqC,SAAA,CAAAzB,MAAA,CAAAyB,QAAAA,EAAAA,SAAA,CAAA5B,IAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAA4B,SAAA,CAAAxB,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAqB,QAAA,CAAA,CAAA;OACF,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAV,GAAA,EAAA;AAAA,QAAA,OAAA+D,KAAA,CAAA3J,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,EAAAgI,aAAA,CAKAH,mBAAmB,CAACuC,aAAa,CAAA,GAAA,YAAA;MAAA,IAAAC,KAAA,GAAA9F,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA6F,QAAAA,CACnC1F,MAAgD,EAAA;AAAA,QAAA,OAAAJ,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAwF,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAtF,IAAA,GAAAsF,SAAA,CAAArF,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAqF,cAAAA,SAAA,CAAArF,IAAA,GAAA,CAAA,CAAA;cAAA,OAElC1D,KAAA,CAAKyG,GAAG,CAAC7D,qBAAqB,CAC1CwD,mBAAmB,CAACuC,aAAa,EACjCxF,MAAM,GAAIzE,KAAK,CAAC4J,OAAO,CAACnF,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC,GAAI,EAAE,CAC1D,CAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,OAAA4F,SAAA,CAAAhF,MAAA,CAAAgF,QAAAA,EAAAA,SAAA,CAAAnF,IAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAmF,SAAA,CAAA/E,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA6E,QAAA,CAAA,CAAA;OACF,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAjE,GAAA,EAAA;AAAA,QAAA,OAAAgE,KAAA,CAAA7J,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,EAAAgI,aAAA,CAKAH,mBAAmB,CAAC4C,cAAc,CAAA,GAAAlG,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CACjC,SAAAiG,QAAA,GAAA;AAAA,MAAA,IAAAjD,MAAA,CAAA;AAAA,MAAA,OAAAjD,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAA4F,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1F,IAAA,GAAA0F,SAAA,CAAAzF,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAyF,YAAAA,SAAA,CAAA1F,IAAA,GAAA,CAAA,CAAA;AAAA0F,YAAAA,SAAA,CAAAzF,IAAA,GAAA,CAAA,CAAA;YAAA,OAGY1D,KAAA,CAAKyG,GAAG,CAACjC,iBAAiB,CAC9B/B,cAAc,CAAC2G,UAAU,EACzB;cACEC,YAAY,EAAErJ,KAAA,CAAKwC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACkD,SAAS,CAAA;AAC7D,aAAA,CACF,CAAA;AAAA,UAAA,KAAA,CAAA;YANGuB,MAAM,GAAAmD,SAAA,CAAAvF,IAAA,CAAA;YAQZ5D,KAAA,CAAK3B,IAAI,CAACjB,cAAc,CAACgM,UAAU,EAAE/I,cAAc,CAACE,YAAY,CAAC,CAAA;AAAC,YAAA,OAAA4I,SAAA,CAAApF,MAAA,CAAA,QAAA,EAE3DiC,MAAM,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AAAAmD,YAAAA,SAAA,CAAA1F,IAAA,GAAA,CAAA,CAAA;YAAA0F,SAAA,CAAAlD,EAAA,GAAAkD,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YAAA,MAEPrI,gBAAgB,CAAAqI,SAAA,CAAAlD,EAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAkD,SAAA,CAAAnF,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAiF,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAEhC,CAAA1C,CAAAA,EAAAA,aAAA,CAMFH,mBAAmB,CAACkD,WAAW,CAAA,GAAA,YAAA;MAAA,IAAAC,KAAA,GAAAzG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAwG,QAAAA,CACjCC,CAAkC,EAAA;AAAA,QAAA,OAAA1G,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAoG,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAlG,IAAA,GAAAkG,SAAA,CAAAjG,IAAA;AAAA,YAAA,KAAA,CAAA;cAAA,OAAAiG,SAAA,CAAA5F,MAAA,CAE3B7C,QAAAA,EAAAA,UAAU,CACflB,KAAA,CAAKwC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACJ,OAAO,CAAC,IAC3CnB,KAAA,CAAK2C,MAAM,CAACxB,OAAO,IACnBF,MAAM,CAAC,CAAC,CAAC,CACZ,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAA0I,SAAA,CAAA3F,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAwF,QAAA,CAAA,CAAA;OACF,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAtE,GAAA,EAAA;AAAA,QAAA,OAAAqE,KAAA,CAAAxK,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,EAAAgI,aAAA,CAMAH,mBAAmB,CAACwD,uBAAuB,CAAA,GAAA,YAAA;MAAA,IAAAC,KAAA,GAAA/G,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA8G,QAAAA,CAC7CL,CAAkC,EAAA;AAAA,QAAA,OAAA1G,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAyG,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAvG,IAAA,GAAAuG,SAAA,CAAAtG,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,MAE5B5C,gBAAgB,CAACT,cAAc,CAACO,YAAY,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAoJ,SAAA,CAAAhG,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA8F,QAAA,CAAA,CAAA;OACpD,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAA3E,GAAA,EAAA;AAAA,QAAA,OAAA0E,KAAA,CAAA9K,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,EAAAgI,aAAA,CAMAH,mBAAmB,CAAC6D,0BAA0B,CAAA,GAAA,YAAA;MAAA,IAAAC,MAAA,GAAApH,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAmH,QAAAA,CAChDhH,MAAuC,EAAA;AAAA,QAAA,OAAAJ,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAA8G,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA5G,IAAA,GAAA4G,SAAA,CAAA3G,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA2G,cAAAA,SAAA,CAAA3G,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAEjC1D,KAAA,CAAK0G,WAAW,CAACvD,MAAM,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,OAAAkH,SAAA,CAAAtG,MAAA,CAAAsG,QAAAA,EAAAA,SAAA,CAAAzG,IAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAyG,SAAA,CAAArG,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAmG,QAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAjE,GAAA,EAAA;AAAA,QAAA,OAAAgE,MAAA,CAAAnL,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,EAAAgI,aAAA,CAAA,CAAA;IAxShCvG,KAAA,CAAK2C,MAAM,GAAGA,MAAM,CAAA;IACpB3C,KAAA,CAAKyG,GAAG,GAAG,IAAI/D,GAAG,CAAC1C,KAAA,CAAK2C,MAAM,CAAC,CAAA;IAC/B3C,KAAA,CAAKsK,cAAc,EAAE,CAAA;IACrBtK,KAAA,CAAKuK,8BAA8B,EAAE,CAAA;IACrCvK,KAAA,CAAKwK,gBAAgB,EAAE,CAAA;AACvBC,IAAAA,MAAM,CAACC,gBAAgB,CAAC,MAAM,EAAE,YAAK;AACnC1K,MAAAA,KAAA,CAAK3B,IAAI,CAACjB,cAAc,CAACuN,OAAO,EAAE;QAChCxJ,OAAO,EAAED,UAAU,CACjBlB,KAAA,CAAKwC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACJ,OAAO,CAAC,IAC3CnB,KAAA,CAAK2C,MAAM,CAACxB,OAAO,IACnBF,MAAM,CAAC,CAAC,CAAC,CAAA;AAEd,OAAA,CAAC,CAAA;MACFjB,KAAA,CAAK4K,cAAc,EAAE,CAAA;MACrB5K,KAAA,CAAK6K,cAAc,EAAE,CAAA;AACvB,KAAC,CAAC,CAAA;AAAC,IAAA,OAAA7K,KAAA,CAAA;AACL,GAAA;AAEA;;;AAGG;EAHHE,cAAA,CAAAmG,QAAA,EAAAC,aAAA,CAAA,CAAA;AAAA,EAAA,IAAA9I,MAAA,GAAA6I,QAAA,CAAA5I,SAAA,CAAA;AAAAD,EAAAA,MAAA,CAIOsN,WAAW,GAAX,SAAAA,cAAW;AAChB;AACA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA;;;;;;;AAOG,MAPH;AAAAtN,EAAAA,MAAA,CAQa6F,OAAO;AAAA;AAAA,EAAA,YAAA;IAAA,IAAA0H,QAAA,gBAAAjI,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAb,SAAAgI,SAAAA,CAAAC,MAAA,EAAA;MAAA,IAAAC,oBAAA,EAAAC,cAAA,CAAA;MAAA,IAAAjI,MAAA,EAAAC,MAAA,CAAA;AAAA,MAAA,OAAAJ,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAA8H,WAAAC,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,UAAA,CAAA5H,IAAA,GAAA4H,UAAA,CAAA3H,IAAA;AAAA,UAAA,KAAA,CAAA;YACLR,MAAM,GAAA+H,MAAA,CAAN/H,MAAM,EACNC,MAAM,GAAA8H,MAAA,CAAN9H,MAAM,CAAA;AAAAkI,YAAAA,UAAA,CAAA3H,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAAA,CAAAwH,oBAAA,GAEQ,CAAAC,cAAA,GAAI,IAAA,CAACnE,OAAO,EAAC9D,MAAM,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAApBgI,oBAAA,CAAAjL,IAAA,CAAAkL,cAAA,EAAuBhI,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAAkI,UAAA,CAAAtH,MAAA,CAAAsH,QAAAA,EAAAA,UAAA,CAAAzH,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAyH,UAAA,CAAArH,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAgH,SAAA,EAAA,IAAA,CAAA,CAAA;KAC7C,CAAA,CAAA,CAAA;AAAA,IAAA,SAAA3H,QAAA8C,GAAA,EAAA;AAAA,MAAA,OAAA4E,QAAA,CAAAhM,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAA8E,OAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;;;;;AAUG;AAVH,GAAA;EAAA7F,MAAA,CAWO8N,SAAS,GAAT,SAAAA,UAAAC,MAAA,EAEL3N,QAAkB,EAAA;IAAA,IAAA4N,qBAAA,EAAAC,cAAA,CAAA;AAAA,IAAA,IADhBvI,MAAM,GAAAqI,MAAA,CAANrI,MAAM;MAAEC,MAAM,GAAAoI,MAAA,CAANpI,MAAM,CAAA;IAGhB,CAAAqI,qBAAA,IAAAC,cAAA,GAAA,IAAI,CAACzE,OAAO,EAAC9D,MAAM,CAAC,KAApBsI,IAAAA,IAAAA,qBAAA,CAAAvL,IAAA,CAAAwL,cAAA,EAAuBtI,MAAM,CAAC,CAC3BuI,IAAI,CAAC,UAACC,GAAG,EAAI;AACZ/N,MAAAA,QAAQ,CAAC,IAAI,EAAE+N,GAAG,CAAC,CAAA;AACrB,KAAC,CAAC,CAAA,OAAA,CACI,CAAC,UAAC5K,KAAK,EAAI;MACfnD,QAAQ,CAACmD,KAAK,CAAC,CAAA;AACjB,KAAC,CAAC,CAAA;GACL,CAAA;AA2OD;;;;AAIG;AAJHvD,EAAAA,MAAA,CAKcoN,cAAc;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAgB,eAAA,gBAAA9I,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAApB,SAAA6I,SAAA,GAAA;MAAA,IAAAtE,YAAA,EAAA9C,SAAA,EAAAqH,mBAAA,EAAA3E,UAAA,EAAA4E,QAAA,CAAA;AAAA,MAAA,OAAAhJ,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAA0I,WAAAC,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,UAAA,CAAAxI,IAAA,GAAAwI,UAAA,CAAAvI,IAAA;AAAA,UAAA,KAAA,CAAA;YACA6D,YAAY,GAAG,IAAI,CAAC/E,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACgG,YAAY,CAAC,CAAA;YACjE9C,SAAS,GAAG,IAAI,CAACjC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACkD,SAAS,CAAC,CAAA;YAAA,IAC7D8C,EAAAA,YAAY,IAAI,CAAC9C,SAAS,CAAA,EAAA;AAAAwH,cAAAA,UAAA,CAAAvI,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAuI,YAAAA,UAAA,CAAAxI,IAAA,GAAA,CAAA,CAAA;AAAAwI,YAAAA,UAAA,CAAAvI,IAAA,GAAA,CAAA,CAAA;YAAA,OAGlB,IAAI,CAAC+C,GAAG,CAACjC,iBAAiB,CAC9B/B,cAAc,CAAC6E,oBAAoB,EACnC;AACEC,cAAAA,YAAY,EAAZA,YAAAA;AACD,aAAA,CACF,CAAA;AAAA,UAAA,KAAA,CAAA;YANGJ,UAAU,GAAA8E,UAAA,CAAArI,IAAA,CAAA;AAQhB,YAAA,IAAI,CAACpB,OAAO,CAACR,KAAK,EAAE,CAAA;AACpB,YAAA,IAAI,CAACQ,OAAO,CAACX,QAAQ,CACnBN,cAAc,CAACkD,SAAS,EACxB0C,UAAU,CAACK,OAAO,CAAC/C,SAAS,CAC7B,CAAA;AAAC,YAAA,IAEG0C,UAAU,CAACK,OAAO,CAAC/C,SAAS,EAAA;AAAAwH,cAAAA,UAAA,CAAAvI,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;YAAA,MACzBrD,cAAc,CAACC,aAAa,CAAA;AAAA,UAAA,KAAA,EAAA;AAG9ByL,YAAAA,QAAQ,GAAG,CACf,CAAAD,CAAAA,mBAAA,GAAA3E,UAAU,CAACK,OAAO,KAAAsE,IAAAA,IAAAA,CAAAA,mBAAA,GAAlBA,mBAAA,CAAoBI,UAAU,KAAAJ,IAAAA,IAAAA,CAAAA,mBAAA,GAA9BA,mBAAA,CAA0C,QAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAA1CA,mBAAA,CAA4CC,QAAQ,KAAI,EAAE,EAC1DI,GAAG,CAAC,UAACC,OAAO,EAAA;AAAA,cAAA,OACZA,OAAO,CAACtF,QAAQ,CAAC,GAAG,CAAC,GAAGsF,OAAO,CAAChL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAGgL,OAAO,CAAA;aAC9D,CAAA,CAAA;AACD,YAAA,IAAI,CAAC5J,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACgH,OAAO,EAAEwD,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAChE,IAAI,CAAC1N,IAAI,CAACjB,cAAc,CAACoL,eAAe,EAAEuD,QAAQ,CAAC,CAAA;AAACE,YAAAA,UAAA,CAAAvI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAAuI,YAAAA,UAAA,CAAAxI,IAAA,GAAA,EAAA,CAAA;YAAAwI,UAAA,CAAAhG,EAAA,GAAAgG,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEpD,YAAA,IAAI,CAACzJ,OAAO,CAACR,KAAK,EAAE,CAAA;AAAC,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAiK,UAAA,CAAAjI,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA6H,SAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;KAG1B,CAAA,CAAA,CAAA;AAAA,IAAA,SAAAjB,cAAA,GAAA;AAAA,MAAA,OAAAgB,eAAA,CAAA7M,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAqM,cAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;AAIG;AAJH,GAAA;AAAApN,EAAAA,MAAA,CAKcqN,cAAc;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAwB,eAAA,gBAAAvJ,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAApB,SAAAsJ,SAAA,GAAA;MAAA,IAAA/E,YAAA,EAAA9C,SAAA,CAAA;AAAA,MAAA,OAAA1B,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAiJ,WAAAC,UAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,UAAA,CAAA/I,IAAA,GAAA+I,UAAA,CAAA9I,IAAA;AAAA,UAAA,KAAA,CAAA;YACA6D,YAAY,GAAG,IAAI,CAAC/E,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACgG,YAAY,CAAC,CAAA;YACjE9C,SAAS,GAAG,IAAI,CAACjC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACkD,SAAS,CAAC,CAAA;YAAA,IAC7DA,EAAAA,SAAS,IAAI,CAAC8C,YAAY,CAAA,EAAA;AAAAiF,cAAAA,UAAA,CAAA9I,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8I,YAAAA,UAAA,CAAA/I,IAAA,GAAA,CAAA,CAAA;AAAA+I,YAAAA,UAAA,CAAA9I,IAAA,GAAA,CAAA,CAAA;YAAA,OAEpB,IAAI,CAACL,OAAO,CAAW;cAC3BH,MAAM,EAAEkD,mBAAmB,CAACa,mBAAAA;AAC7B,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAAuF,YAAAA,UAAA,CAAA9I,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,CAAA;AAAA8I,YAAAA,UAAA,CAAA/I,IAAA,GAAA,CAAA,CAAA;YAAA+I,UAAA,CAAAvG,EAAA,GAAAuG,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEF,YAAA,IAAI,CAAChK,OAAO,CAACR,KAAK,EAAE,CAAA;AAAC,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAwK,UAAA,CAAAxI,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAsI,SAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KAG1B,CAAA,CAAA,CAAA;AAAA,IAAA,SAAAzB,cAAA,GAAA;AAAA,MAAA,OAAAwB,eAAA,CAAAtN,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAsM,cAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;AAIG;AAJH,GAAA;AAAArN,EAAAA,MAAA,CAKQ8M,cAAc,GAAd,SAAAA,iBAAc;AACpB,IAAA,IAAI,CAACG,MAAM,CAACgC,QAAQ,EAAE;MACpBhC,MAAM,CAACgC,QAAQ,GAAG,IAAI,CAAA;AACxB,KAAC,MAAM;AACL,MAAA,IACEhC,MAAM,CAACgC,QAAQ,CAACC,SAAS,IACzBhO,KAAK,CAAC4J,OAAO,CAACmC,MAAM,CAACgC,QAAQ,CAACC,SAAS,CAAC,EACxC;QACAjC,MAAM,CAACgC,QAAQ,CAACC,SAAS,CAAC1O,IAAI,CAAC,IAAI,CAAC,CAAA;AACtC,OAAC,MAAM;QACLyM,MAAM,CAACgC,QAAQ,CAACC,SAAS,GAAG,CAACjC,MAAM,CAACgC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACrD,OAAA;AACF,KAAA;AACF,GAAA;AAEA;;;;;;AAMG,MANH;AAAAjP,EAAAA,MAAA,CAOQgN,gBAAgB,GAAhB,SAAAA,mBAAgB;AACtBC,IAAAA,MAAM,CAACkC,aAAa,CAClB,IAAIC,WAAW,CAAC,0BAA0B,EAAE;AAC1CC,MAAAA,MAAM,EAAEC,MAAM,CAACC,MAAM,CAAC;AAAEC,QAAAA,IAAI,EAAExN,YAAY;AAAEyN,QAAAA,QAAQ,EAAE,IAAA;OAAM,CAAA;AAC7D,KAAA,CAAC,CACH,CAAA;AACH,GAAA;AAEA;;;;;;AAMG,MANH;AAAAzP,EAAAA,MAAA,CAOQ+M,8BAA8B,GAA9B,SAAAA,iCAA8B;AAAA,IAAA,IAAA2C,MAAA,GAAA,IAAA,CAAA;AACpCzC,IAAAA,MAAM,CAACC,gBAAgB,CAAC,yBAAyB,EAAE,YAAK;MACtDwC,MAAI,CAAC1C,gBAAgB,EAAE,CAAA;AACzB,KAAC,CAAC,CAAA;GACH,CAAA;AAAA,EAAA,OAAAnE,QAAA,CAAA;AAAA,CAAA,CA3Z2BhJ,YAAY,CAAA;;ACvE1C,IAAY8P,gBAiBX,CAAA;AAjBD,CAAA,UAAYA,gBAAgB,EAAA;AAC1B;;AAEG;AACHA,EAAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB;;AAEG;AACHA,EAAAA,gBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC;;AAEG;AACHA,EAAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC;;AAEG;AACHA,EAAAA,gBAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD,CAAA;AACnD,CAAC,EAjBWA,gBAAgB,KAAhBA,gBAAgB,GAiB3B,EAAA,CAAA,CAAA;;ACfD;;;AAGG;AACH,IAAaC,SAAS,gBAAA,YAAA;AAAA,EAAA,SAAAA,SAAA,GAAA,EAAA;AAAA,EAAA,IAAA5P,MAAA,GAAA4P,SAAA,CAAA3P,SAAA,CAAA;AACpB;;;;;;AAMG;AANHD,EAAAA,MAAA,CAOa6P,cAAc;AAAA;AAAA,EAAA,YAAA;AAAA,IAAA,IAAAC,eAAA,gBAAAxK,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAApB,SAAAC,OAAAA,CAAwBC,MAAc,EAAEC,MAAe,EAAA;AAAA,MAAA,IAAAoK,gBAAA,CAAA;MAAA,IAAA/K,OAAA,EAAAiC,SAAA,EAAA8D,OAAA,EAAAjD,QAAA,EAAAS,IAAA,CAAA;AAAA,MAAA,OAAAhD,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;AACtDlB,YAAAA,OAAO,GAAG,IAAIhB,UAAU,EAAE,CAAA;YAC1BiD,SAAS,GAAGjC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACkD,SAAS,CAAC,CAAA;YACtD8D,OAAO,GAAG/F,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACgH,OAAO,CAAC,CAAA;AAAA,YAAA,IAAA,EACpD,CAAC9D,SAAS,IAAI,CAAC8D,OAAO,CAAA,EAAA;AAAA/E,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MAClB,IAAItD,KAAK,CAAC,6BAA6B,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAAoD,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;YAAA,OAEzB+B,KAAK,CAC1B,CAAA8H,CAAAA,gBAAA,GAAA9C,MAAM,CAAC+C,QAAQ,KAAA,IAAA,IAAA,CAAAD,gBAAA,GAAfA,gBAAA,CAAiBE,SAAS,qBAA1BF,gBAAA,CAA4B5K,MAAM,CAAC+K,YAAY,KAC7C,oCAAoC,EACtC;AACExK,cAAAA,MAAM,EAAE,MAAM;AACdyC,cAAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;gBAClCgI,aAAa,EAAA,SAAA,GAAYpF,OAAO,GAAI9D,GAAAA,GAAAA,SAAAA;eACrC;AACDmB,cAAAA,IAAI,EAAE1D,IAAI,CAACK,SAAS,CAAC;AACnBsD,gBAAAA,OAAO,EAAE,KAAK;AACdC,gBAAAA,EAAE,EAAE,CAAC;AACL5C,gBAAAA,MAAM,EAANA,MAAM;gBACNC,MAAM,EAAEA,MAAM,IAAI,EAAE;eACrB,CAAA;AACF,aAAA,CACF,CAAA;AAAA,UAAA,KAAA,CAAA;YAhBKmC,QAAQ,GAAA9B,QAAA,CAAAI,IAAA,CAAA;YAAA,IAkBT0B,QAAQ,CAACsI,EAAE,EAAA;AAAApK,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MACR,IAAItD,KAAK,CAAmB8C,iBAAAA,GAAAA,MAAQ,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;AAAAM,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OAE1B4B,QAAQ,CAACS,IAAI,EAAE,CAAA;AAAA,UAAA,KAAA,EAAA;YAA5BA,IAAI,GAAAvC,QAAA,CAAAI,IAAA,CAAA;AAAA,YAAA,OAAAJ,QAAA,CAAAO,MAAA,CACHgC,QAAAA,EAAAA,IAAI,CAACC,MAAW,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAxC,QAAA,CAAAQ,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAf,OAAA,CAAA,CAAA;KACxB,CAAA,CAAA,CAAA;IAAA,SAAAoK,cAAAA,CAAApJ,EAAA,EAAAC,GAAA,EAAA;AAAA,MAAA,OAAAoJ,eAAA,CAAAvO,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAA8O,cAAA,CAAA;AAAA,GAAA,EAAA,CAAA;AAAA,EAAA,OAAAD,SAAA,CAAA;AAAA,CAAA,EAAA;;AC1CH;;;AAGG;AACI,IAAMS,2BAA2B,GAAG,SAA9BA,2BAA2BA,GAAkC;EACxE,IAAIlL,MAAM,GAA6B,EAAE,CAAA;AACzC,EAAA,IAAMmL,aAAa,GAAG;AACpB,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,qBAAqB,EAAE,cAAc;AACrC,IAAA,sBAAsB,EAAE,eAAe;AACvC,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,oBAAoB,EAAE,cAAc;AACpC,IAAA,eAAe,EAAE,SAAA;GAClB,CAAA;AACD,EAAA,KAAA,IAAAC,EAAA,GAAAC,CAAAA,EAAAA,eAAA,GAA+BlB,MAAM,CAACmB,OAAO,CAACH,aAAa,CAAC,EAAAC,EAAA,GAAAC,eAAA,CAAAxP,MAAA,EAAAuP,EAAA,EAAE,EAAA;AAAzD,IAAA,IAAAG,kBAAA,GAAAF,eAAA,CAAAD,EAAA,CAAA;AAAOI,MAAAA,SAAS,GAAAD,kBAAA,CAAA,CAAA,CAAA;AAAExM,MAAAA,GAAG,GAAAwM,kBAAA,CAAA,CAAA,CAAA,CAAA;IACxB,IAAME,QAAQ,GAAGC,QAAQ,CAACC,gBAAgB,CAAKH,GAAAA,GAAAA,SAAS,MAAG,CAAC,CAAA;AAC5D,IAAA,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,QAAQ,CAAC5P,MAAM,EAAE+P,CAAC,EAAE,EAAE;AACxC,MAAA,IAAMC,OAAO,GAAGJ,QAAQ,CAACG,CAAC,CAAC,CAAA;AAC3B,MAAA,IAAM5M,KAAK,GAAG6M,OAAO,CAACC,YAAY,CAACN,SAAS,CAAC,CAAA;AAC7C,MAAA,IAAMO,GAAG,GAAGF,OAAO,CAACC,YAAY,CAAC,KAAK,CAAC,CAAA;MACvC,IAAME,aAAa,GAAGD,GAAG,IAAIA,GAAG,CAAC5H,QAAQ,CAAC,qBAAqB,CAAC,CAAA;MAChE,IAAI6H,aAAa,IAAIhN,KAAK,EAAE;AAC1BgB,QAAAA,MAAM,CAACjB,GAA4B,CAAC,GAAGC,KAAe,CAAA;AACxD,OAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,OAAOgB,MAAM,CAAA;AACf,CAAC;;ACSD;;;AAGG;AACH,IAAa8K,SAAS,gBAAA,YAAA;EAgBpB,SAAAA,SAAAA,CAAY9K,MAAiC,EAAA;IAAA,IAAA4K,gBAAA,EAAAqB,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA,CAAA;AAf7C;;;AAGG;AAHH,IAAA,IAAA,CAIO/B,QAAQ,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAERtK,MAAM,GAAoB;AAC/BgF,MAAAA,KAAK,EAAE,CAAA,CAAA4F,gBAAA,GAAA9C,MAAM,CAAC+C,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfD,gBAAA,CAAiB5F,KAAK,KAAI,EAAE;AACnCG,MAAAA,MAAM,EAAE,CAAA8G,CAAAA,iBAAA,GAAAnE,MAAM,CAAC+C,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfoB,iBAAA,CAAiB9G,MAAM,KAAI2C,MAAM,CAACwE,QAAQ,CAACC,MAAM;MACzDtH,YAAY,EAAA,CAAAiH,iBAAA,GAAEpE,MAAM,CAAC+C,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfqB,iBAAA,CAAiBjH,YAAY;MAC3ClC,aAAa,EAAA,CAAAoJ,iBAAA,GAAErE,MAAM,CAAC+C,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfsB,iBAAA,CAAiBpJ,aAAa;MAC7CgI,YAAY,EAAA,CAAAqB,iBAAA,GAAEtE,MAAM,CAAC+C,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfuB,iBAAA,CAAiBrB,YAAY;MAC3CvM,OAAO,EAAA,CAAA6N,iBAAA,GAAEvE,MAAM,CAAC+C,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfwB,iBAAA,CAAiB7N,OAAAA;KAC3B,CAAA;AA4OD;;;AAGG;AAHH,IAAA,IAAA,CAIQqB,OAAO,GAAe,IAAIhB,UAAU,EAAE,CAAA;AAE9C;;;AAGG;IAHH,IAIQ2N,CAAAA,IAAI,GAAgB,IAAI,CAAA;AAnP9B,IAAA,IAAI,CAACxM,MAAM,GAAAyM,QAAA,CAAA,EAAA,EACN,IAAI,CAACzM,MAAM,EACVA,MAAM,IAAIkL,2BAA2B,EAAE,IAAI,EAAE,CAClD,CAAA;AAED,IAAA,IAAI,CAAC,IAAI,CAAClL,MAAM,CAACgF,KAAK,EAAE;AACtB,MAAA,MAAM,IAAIvH,KAAK,CAAC,oBAAoB,CAAC,CAAA;AACvC,KAAA;AACA,IAAA,IAAI,CAAC,IAAI,CAACuC,MAAM,CAACmF,MAAM,EAAE;AACvB,MAAA,MAAM,IAAI1H,KAAK,CAAC,qBAAqB,CAAC,CAAA;AACxC,KAAA;AAEAqK,IAAAA,MAAM,CAAC+C,QAAQ,GAAA4B,QAAA,CACV3E,EAAAA,EAAAA,MAAM,CAAC+C,QAAQ,EACf,IAAI,CAAC7K,MAAM,CACf,CAAA;AAED,IAAA,IAAI,CAACH,OAAO,CAACX,QAAQ,CACnBN,cAAc,CAACJ,OAAO,EACtB,IAAI,CAACqB,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACJ,OAAO,CAAC,IAC3C,IAAI,CAACwB,MAAM,CAACxB,OAAO,IACnBF,MAAM,CAAC,CAAC,CAAC,CACZ,CAAA;IACD,IAAI,CAACoO,kBAAkB,EAAE,CAAA;AACzB,IAAA,IAAI,CAACpC,QAAQ,GAAG,IAAI,CAACqC,eAAe,EAAE,CAAA;IACtC,IAAI,CAACC,YAAY,EAAE,CAAA;AACnB,IAAA,IAAI,CAACtC,QAAQ,CAACvP,EAAE,CAACN,cAAc,CAAC8K,IAAI,EAAE,IAAI,CAACsH,aAAa,CAAC,CAAA;AAC3D,GAAA;AAEA;;;;;;;;AAQG;AARH,EAAA,IAAAhS,MAAA,GAAAiQ,SAAA,CAAAhQ,SAAA,CAAA;AAAAD,EAAAA,MAAA,CASOsN,WAAW,GAAX,SAAAA,cAAW;AAChB,IAAA,OAAO,IAAI,CAACmC,QAAQ,CAACnC,WAAW,EAAE,CAAA;AACpC,GAAA;AAEA;;;AAGG,MAHH;AAAAtN,EAAAA,MAAA,CAIOiS,iBAAiB,GAAjB,SAAAA,oBAAiB;AACtB,IAAA,OACE,IAAI,CAAC3E,WAAW,EAAE,IAClB,CAAC,CAAC,IAAI,CAACtI,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACgG,YAAY,CAAC,IACpD,CAAC,IAAI,CAAC/E,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACkD,SAAS,CAAC,CAAA;AAEpD,GAAA;AAEA;;;;;AAKG,MALH;AAAAjH,EAAAA,MAAA,CAMamN,OAAO;AAAA;AAAA,EAAA,YAAA;IAAA,IAAA+E,QAAA,gBAAA5M,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAb,SAAAC,OAAA,GAAA;AAAA,MAAA,OAAAF,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAF,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACQ,IAAI,CAACuJ,QAAQ,CAAC5J,OAAO,CAAC;cACjCH,MAAM,EAAEkD,mBAAmB,CAACa,mBAAAA;AAC7B,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAAzD,QAAA,CAAAO,MAAA,CAAAP,QAAAA,EAAAA,QAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAJ,QAAA,CAAAQ,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAf,OAAA,EAAA,IAAA,CAAA,CAAA;KACH,CAAA,CAAA,CAAA;AAAA,IAAA,SAAA0H,OAAA,GAAA;AAAA,MAAA,OAAA+E,QAAA,CAAA3Q,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAoM,OAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;AAKG;AALH,GAAA;AAAAnN,EAAAA,MAAA,CAMa4L,UAAU;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAuG,WAAA,gBAAA7M,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAhB,SAAAqB,QAAA,GAAA;AAAA,MAAA,OAAAtB,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAgB,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAd,IAAA,GAAAc,SAAA,CAAAb,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAa,YAAAA,SAAA,CAAAb,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACQ,IAAI,CAACuJ,QAAQ,CAAC5J,OAAO,CAAC;cACjCH,MAAM,EAAEkD,mBAAmB,CAAC4C,cAAAA;AAC7B,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAAzE,SAAA,CAAAR,MAAA,CAAAQ,QAAAA,EAAAA,SAAA,CAAAX,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAW,SAAA,CAAAP,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAK,QAAA,EAAA,IAAA,CAAA,CAAA;KACH,CAAA,CAAA,CAAA;AAAA,IAAA,SAAA+E,UAAA,GAAA;AAAA,MAAA,OAAAuG,WAAA,CAAA5Q,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAA6K,UAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;;;;AASG;AATH,GAAA;AAAA5L,EAAAA,MAAA,CAUaoS,eAAe;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAC,gBAAA,gBAAA/M,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAArB,SAAA8B,QAAAA,CAAsB3B,MAI5B,EAAA;AAAA,MAAA,OAAAJ,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAyB,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAvB,IAAA,GAAAuB,SAAA,CAAAtB,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAsB,YAAAA,SAAA,CAAAtB,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACc,IAAI,CAACuJ,QAAQ,CAAC5J,OAAO,CAAS;cACzCH,MAAM,EAAEkD,mBAAmB,CAACqC,mBAAmB;cAC/CtF,MAAM,EAAE,CAACA,MAAM,CAAA;AAChB,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAA6B,SAAA,CAAAjB,MAAA,CAAAiB,QAAAA,EAAAA,SAAA,CAAApB,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAoB,SAAA,CAAAhB,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAc,QAAA,EAAA,IAAA,CAAA,CAAA;KACH,CAAA,CAAA,CAAA;AAAA,IAAA,SAAA8K,gBAAA3L,EAAA,EAAA;AAAA,MAAA,OAAA4L,gBAAA,CAAA9Q,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAqR,eAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;AAMG;AANH,GAAA;AAAApS,EAAAA,MAAA,CAOasS,WAAW;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAC,YAAA,gBAAAjN,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAjB,SAAAqC,QAAAA,CAAkBvF,OAAe,EAAA;AAAA,MAAA,OAAAiD,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAiC,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA/B,IAAA,GAAA+B,SAAA,CAAA9B,IAAA;AAAA,UAAA,KAAA,CAAA;AAAA8B,YAAAA,SAAA,CAAA9B,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACzB,IAAI,CAACuJ,QAAQ,CAAC5J,OAAO,CAAS;cACzCH,MAAM,EAAEkD,mBAAmB,CAACuC,aAAa;cACzCxF,MAAM,EAAE,CAACrD,OAAO,EAAE,IAAI,CAAC0C,OAAO,CAACf,QAAQ,CAAC,SAAS,CAAC,CAAA;AACnD,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAA+D,SAAA,CAAAzB,MAAA,CAAAyB,QAAAA,EAAAA,SAAA,CAAA5B,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAA4B,SAAA,CAAAxB,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAqB,QAAA,EAAA,IAAA,CAAA,CAAA;KACH,CAAA,CAAA,CAAA;AAAA,IAAA,SAAAyK,YAAA5L,GAAA,EAAA;AAAA,MAAA,OAAA6L,YAAA,CAAAhR,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAuR,WAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;AAMG;AANH,GAAA;AAAAtS,EAAAA,MAAA,CAOakJ,WAAW;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAsJ,YAAA,gBAAAlN,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAjB,SAAA6F,QAAAA,CAAkB1H,OAAe,EAAA;AAAA,MAAA,OAAA4B,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAwF,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAtF,IAAA,GAAAsF,SAAA,CAAArF,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAqF,YAAAA,SAAA,CAAArF,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACzB,IAAI,CAACuJ,QAAQ,CAAC5J,OAAO,CAAO;cACvCH,MAAM,EAAEkD,mBAAmB,CAAC6D,0BAA0B;AACtD9G,cAAAA,MAAM,EAAE;gBAAEhC,OAAO,EAAED,UAAU,CAACC,OAAO,CAAA;AAAG,eAAA;AACzC,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAA4H,SAAA,CAAAhF,MAAA,CAAAgF,QAAAA,EAAAA,SAAA,CAAAnF,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAmF,SAAA,CAAA/E,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA6E,QAAA,EAAA,IAAA,CAAA,CAAA;KACH,CAAA,CAAA,CAAA;AAAA,IAAA,SAAAnC,YAAAvC,GAAA,EAAA;AAAA,MAAA,OAAA6L,YAAA,CAAAjR,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAmI,WAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;AAKG;AALH,GAAA;AAAAlJ,EAAAA,MAAA,CAMOyS,QAAQ,GAAR,SAAAA,WAAQ;IACb,OACE,IAAI,CAACzN,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACJ,OAAO,CAAC,IAC7C,IAAI,CAACwB,MAAM,CAACxB,OAAO,IACnBF,MAAM,CAAC,CAAC,CAAC,CAAA;AAEb,GAAA;AAEA;;;;;;AAMG,MANH;AAAAzD,EAAAA,MAAA,CAOa0S,oBAAoB;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAC,qBAAA,gBAAArN,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAA1B,SAAAiG,QAAAA,CACLmH,MAAc,EAAA;AAAA,MAAA,IAAA3J,GAAA,CAAA;AAAA,MAAA,OAAA1D,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAA4F,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1F,IAAA,GAAA0F,SAAA,CAAAzF,IAAA;AAAA,UAAA,KAAA,CAAA;AAER+C,YAAAA,GAAG,GAAG,IAAI/D,GAAG,CAAC,IAAI,CAACC,MAAM,CAAC,CAAA;AAChC,YAAA,IAAI,CAAC0N,gBAAgB,CAAClD,gBAAgB,CAACmD,sBAAsB,EAAE;AAAEF,cAAAA,MAAM,EAANA,MAAAA;AAAQ,aAAA,CAAC,CAAA;AAACjH,YAAAA,SAAA,CAAAzF,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAC9D+C,GAAG,CAACjC,iBAAiB,CAChC/B,cAAc,CAACyN,oBAAoB,EACnC;AAAEvI,cAAAA,KAAK,EAAE,IAAI,CAAChF,MAAM,CAACgF,KAAK;AAAEyI,cAAAA,MAAM,EAANA,MAAAA;AAAQ,aAAA,CACrC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,OAAAjH,SAAA,CAAApF,MAAA,CAAAoF,QAAAA,EAAAA,SAAA,CAAAvF,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAuF,SAAA,CAAAnF,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAiF,QAAA,EAAA,IAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;AAAA,IAAA,SAAAiH,qBAAAvL,GAAA,EAAA;AAAA,MAAA,OAAAwL,qBAAA,CAAApR,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAA2R,oBAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;AAMG;AANH,GAAA;EAAA1S,MAAA,CAOOE,EAAE,GAAF,SAAAA,GAAGC,KAAwB,EAAEC,QAAkB,EAAA;IACpD,IAAI,CAACqP,QAAQ,CAACvP,EAAE,CAACC,KAAK,EAAEC,QAAQ,CAAC,CAAA;AACjC,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA;;;;;;AAMG,MANH;EAAAJ,MAAA,CAOOS,cAAc,GAAd,SAAAA,eAAeN,KAAwB,EAAEC,QAAkB,EAAA;IAChE,IAAI,CAACqP,QAAQ,CAAChP,cAAc,CAACN,KAAK,EAAEC,QAAQ,CAAC,CAAA;AAC7C,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA;;;;;AAKG,MALH;AAAAJ,EAAAA,MAAA,CAMa+S,OAAO;AAAA;AAAA,EAAA,YAAA;IAAA,IAAAC,QAAA,gBAAA1N,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAb,SAAAwG,QAAA,GAAA;AAAA,MAAA,IAAAiH,GAAA,CAAA;AAAA,MAAA,OAAA1N,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAoG,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAlG,IAAA,GAAAkG,SAAA,CAAAjG,IAAA;AAAA,UAAA,KAAA,CAAA;YAAA,IACA,IAAI,CAACyL,IAAI,EAAA;AAAAxF,cAAAA,SAAA,CAAAjG,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AACN+M,YAAAA,GAAG,GAAG,IAAIrD,SAAS,EAAE,CAAA;AAAAzD,YAAAA,SAAA,CAAAlG,IAAA,GAAA,CAAA,CAAA;AAAAkG,YAAAA,SAAA,CAAAjG,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEP+M,GAAG,CAACpD,cAAc,CAAO,UAAU,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;AAAtD,YAAA,IAAI,CAAC8B,IAAI,GAAAxF,SAAA,CAAA/F,IAAA,CAAA;AAAA+F,YAAAA,SAAA,CAAAjG,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,CAAA;AAAAiG,YAAAA,SAAA,CAAAlG,IAAA,GAAA,CAAA,CAAA;YAAAkG,SAAA,CAAA1D,EAAA,GAAA0D,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YAAA,MAEH,IAAIvJ,KAAK,CACbuJ,SAAA,CAAA1D,EAAA,YAAa7F,KAAK,GAAGuJ,SAAA,CAAA1D,EAAA,CAAEnG,OAAO,GAAG,kCAAkC,CACpE,CAAA;AAAA,UAAA,KAAA,EAAA;AAAA,YAAA,OAAA6J,SAAA,CAAA5F,MAAA,CAGE,QAAA,EAAA,IAAI,CAACoL,IAAI,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAxF,SAAA,CAAA3F,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAwF,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KACjB,CAAA,CAAA,CAAA;AAAA,IAAA,SAAA+G,OAAA,GAAA;AAAA,MAAA,OAAAC,QAAA,CAAAzR,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAgS,OAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;;AAMG;AANH,GAAA;AAAA/S,EAAAA,MAAA,CAOOkT,QAAQ,GAAR,SAAAA,QAAAA,CAAS/I,KAAa,EAAA;AAC3B,IAAA,IAAI,CAAChF,MAAM,CAACgF,KAAK,GAAGA,KAAK,CAAA;AACzB8C,IAAAA,MAAM,CAAC+C,QAAQ,GAAA4B,QAAA,CACV3E,EAAAA,EAAAA,MAAM,CAAC+C,QAAQ,EAAA;AAClB7F,MAAAA,KAAK,EAALA,KAAAA;KACD,CAAA,CAAA;AACH,GAAA;AAEA;;;;;;AAMG,MANH;AAAAnK,EAAAA,MAAA,CAOOmT,SAAS,GAAT,SAAAA,SAAAA,CAAUhO,MAAgC,EAAA;IAC/C,IAAI,CAACA,MAAM,GAAAyM,QAAA,CAAA,EAAA,EAAQ,IAAI,CAACzM,MAAM,EAAKA,MAAM,CAAE,CAAA;AAC3C8H,IAAAA,MAAM,CAAC+C,QAAQ,GAAA4B,QAAA,CACV3E,EAAAA,EAAAA,MAAM,CAAC+C,QAAQ,EACf,IAAI,CAAC7K,MAAM,CACf,CAAA;GACF,CAAA;AAcD;;;AAGG;AAHHnF,EAAAA,MAAA,CAIQ8R,eAAe,GAAf,SAAAA,kBAAe;AAAA,IAAA,IAAAsB,gBAAA,CAAA;AACrB,IAAA,IAAI3D,QAAQ,GAAA2D,CAAAA,gBAAA,GAAGnG,MAAM,CAACgC,QAAQ,KAAAmE,IAAAA,IAAAA,CAAAA,gBAAA,GAAfA,gBAAA,CAAiBlE,SAAS,KAA1BkE,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAA4BC,IAAI,CAC7C,UAAC5D,QAA4B,EAAA;AAAA,MAAA,OAC3BA,QAAQ,YAAY5G,QAAQ,IAAI4G,QAAQ,CAACzG,gBAAgB,CAAA;KAC5D,CAAA,CAAA;AACD,IAAA,IACE,CAACyG,QAAQ,IACTxC,MAAM,CAACgC,QAAQ,YAAYpG,QAAQ,IACnCoE,MAAM,CAACgC,QAAQ,CAACjG,gBAAgB,EAChC;MACAyG,QAAQ,GAAGxC,MAAM,CAACgC,QAAQ,CAAA;AAC5B,KAAA;IACA,IAAI,CAACQ,QAAQ,EAAE;AACbA,MAAAA,QAAQ,GAAG,IAAI5G,QAAQ,CAAC,IAAI,CAAC1D,MAAM,CAAC,CAAA;AACtC,KAAA;AACA,IAAA,OAAOsK,QAAQ,CAAA;AACjB,GAAA;AAEA;;;;;AAKG,MALH;AAAAzP,EAAAA,MAAA,CAMQgS,aAAa,GAAb,SAAAA,aAAAA,CAAA5I,IAAA,EAM2B;AAAA,IAAA,IAAAkK,gBAAA,CAAA;AAAA,IAAA,IALjCnO,MAAM,GAAAiE,IAAA,CAANjE,MAAM;MACNsF,UAAU,GAAArB,IAAA,CAAVqB,UAAU;MACVF,UAAU,GAAAnB,IAAA,CAAVmB,UAAU;MACVC,iBAAiB,GAAApB,IAAA,CAAjBoB,iBAAiB;MACjBG,mBAAmB,GAAAvB,IAAA,CAAnBuB,mBAAmB,CAAA;IAEnB,IAAM4I,MAAM,GAAAD,CAAAA,gBAAA,GAAGrG,MAAM,CAACuG,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfF,gBAAA,CAAiBC,MAAM,CAAA;AACtC,IAAA,IAAMlJ,WAAW,GACfG,iBAAiB,IAAA,0CAAA,GAC0BC,UAAY,CAAA;AACzD,IAAA,IAAMgJ,UAAU,GAAG9I,mBAAmB,GAAA,uDAAA,GACsBA,mBAAmB,CAAC+I,UAAU,CACpF,GAAG,EACH,KAAK,CACN,GACD,EAAE,CAAA;IACN,IAAID,UAAU,IAAI,CAAAtO,MAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAANA,MAAM,CAAEiF,YAAY,MAAK,IAAI,EAAE;MAC/C,IAAI;AAAA,QAAA,IAAAuJ,iBAAA,CAAA;QACF,CAAAA,iBAAA,GAAA1G,MAAM,CAACuG,QAAQ,KAAAG,IAAAA,IAAAA,CAAAA,iBAAA,GAAfA,iBAAA,CAAiBJ,MAAM,KAAvBI,IAAAA,IAAAA,iBAAA,CAAyBC,gBAAgB,IAAA,IAAA,IAAzCD,iBAAA,CAAyBC,gBAAgB,CAAGH,UAAU,CAAC,CAAA;OACxD,CAAC,OAAOI,CAAC,EAAE;AACV5G,QAAAA,MAAM,CAAC6G,IAAI,CAACL,UAAU,EAAE,QAAQ,CAAC,CAAA;AACnC,OAAA;AACA,MAAA,OAAA;AACF,KAAA;AACA,IAAA,IACEF,MAAM,IACNA,MAAM,CAACK,gBAAgB,IACvBL,MAAM,CAACQ,QAAQ,IACfR,MAAM,CAACQ,QAAQ,KAAK,SAAS,IAC7BxJ,UAAU,EACV;AACAgJ,MAAAA,MAAM,CAACK,gBAAgB,CAACrJ,UAAU,CAAC,CAAA;AACrC,KAAC,MAAM;AACL0C,MAAAA,MAAM,CAAC6G,IAAI,CAACzJ,WAAW,EAAE,QAAQ,CAAC,CAAA;AACpC,KAAA;AACF,GAAA;AAEA;;;;;;AAMG,MANH;AAAArK,EAAAA,MAAA,CAOc6S,gBAAgB;AAAA;AAAA,EAAA,YAAA;AAAA,IAAA,IAAAmB,iBAAA,gBAAA1O,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAAtB,SAAA8G,QAAAA,CACNrK,IAAqB,EACrBhB,IAA8B,EAAA;AAAA,MAAA,IAAAgT,iBAAA,CAAA;AAAA,MAAA,IAAA3J,MAAA,EAAAH,KAAA,EAAA+J,cAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAApL,GAAA,CAAA;AAAA,MAAA,OAAA1D,mBAAA,EAAA,CAAAO,IAAA,CAAA,SAAAyG,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAvG,IAAA,GAAAuG,SAAA,CAAAtG,IAAA;AAAA,UAAA,KAAA,CAAA;AAExBoE,YAAAA,MAAM,GAAG,IAAI,CAACnF,MAAM,CAACmF,MAAM,CAAA;AAC3BH,YAAAA,KAAK,GAAG,IAAI,CAAChF,MAAM,CAACgF,KAAK,CAAA;AACzB+J,YAAAA,cAAc,GAAGI,MAAM,CAC3B,CAAA,CAAAL,iBAAA,GAAAhH,MAAM,CAACuG,QAAQ,KAAAS,IAAAA,IAAAA,CAAAA,iBAAA,GAAfA,iBAAA,CAAiBV,MAAM,KAAA,IAAA,IAAA,CAAAU,iBAAA,GAAvBA,iBAAA,CAAyBM,cAAc,KAAA,IAAA,IAAA,CAAAN,iBAAA,GAAvCA,iBAAA,CAAyCtC,IAAI,qBAA7CsC,iBAAA,CAA+C3L,EAAE,KAAI,EAAE,CACxD,CAAA;AAAAkE,YAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;AAGOgD,YAAAA,GAAG,GAAG,IAAI/D,GAAG,CAAC,IAAI,CAACC,MAAM,CAAC,CAAA;AAAAqH,YAAAA,SAAA,CAAAtG,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAC1B+C,GAAG,CAACjC,iBAAiB,CACzB/B,cAAc,CAAC4N,gBAAgB,EAC/B;AACE5Q,cAAAA,IAAI,EAAJA,IAAI;AACJqI,cAAAA,MAAM,EAANA,MAAM;AACN4J,cAAAA,cAAc,EAAdA,cAAc;AACdjT,cAAAA,IAAI,EAAA2Q,QAAA,CAAA,EAAA,EACE3Q,IAAI,IAAI,EAAE,EAAA;AACduT,gBAAAA,OAAO,EAAEvH,MAAM,CAACwE,QAAQ,CAACgD,IAAI;AAC7BtK,gBAAAA,KAAK,EAALA,KAAK;gBACLlD,SAAS,EAAE,IAAI,CAACjC,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACkD,SAAS,CAAC;gBAC1DxC,QAAQ,EAAE,IAAI,CAACO,OAAO,CAACf,QAAQ,CAACF,cAAc,CAACU,QAAQ,CAAC;AACxDiQ,gBAAAA,SAAS,EAAEC,OAAO,CAAAR,CAAAA,iBAAA,GAAClH,MAAM,CAACuG,QAAQ,KAAfW,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAiBI,cAAc,CAAC;AACnDK,gBAAAA,eAAe,EAAAR,CAAAA,iBAAA,GAAEnH,MAAM,CAACuG,QAAQ,KAAA,IAAA,IAAA,CAAAY,iBAAA,GAAfA,iBAAA,CAAiBb,MAAM,KAAvBa,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAyBL,QAAQ;AAClDc,gBAAAA,iBAAiB,EAAAR,CAAAA,iBAAA,GAAEpH,MAAM,CAACuG,QAAQ,KAAA,IAAA,IAAA,CAAAa,iBAAA,GAAfA,iBAAA,CAAiBd,MAAM,KAAvBc,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAyBS,OAAO;AACnDC,gBAAAA,SAAS,EAAE9H,MAAM,CAAC+H,SAAS,CAACD,SAAAA;AAAS,eAAA,CAAA;AAExC,aAAA,CACF,CAAA;AAAA,UAAA,KAAA,CAAA;AAAAvI,YAAAA,SAAA,CAAAtG,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,CAAA;AAAAsG,YAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;YAAAuG,SAAA,CAAA/D,EAAA,GAAA+D,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAA,SAAA,CAAAhG,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA8F,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KAIJ,CAAA,CAAA,CAAA;IAAA,SAAAuG,gBAAAA,CAAAzL,GAAA,EAAAM,GAAA,EAAA;AAAA,MAAA,OAAAsM,iBAAA,CAAAzS,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAA8R,gBAAA,CAAA;AAAA,GAAA,EAAA;AAED;;;;;AAKG;AALH,GAAA;AAAA7S,EAAAA,MAAA,CAMQ+R,YAAY,GAAZ,SAAAA,eAAY;AAAA,IAAA,IAAAvP,KAAA,GAAA,IAAA,CAAA;AAClB,IAAA,IAAMyS,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,OAAiB,EAAI;AAC5C,MAAA,IAAIA,OAAO,CAAClU,MAAM,GAAG,CAAC,EAAE;AACtBwB,QAAAA,KAAI,CAACqQ,gBAAgB,CAAClD,gBAAgB,CAACwF,eAAe,EAAE;AACtDD,UAAAA,OAAO,EAAEA,OAAAA;AACV,SAAA,CAAC,CAAA;AACJ,OAAA;KACD,CAAA;AAED,IAAA,IAAME,kBAAkB,GAAG,SAArBA,kBAAkBA,GAAQ;AAC9B5S,MAAAA,KAAI,CAACqQ,gBAAgB,CAAClD,gBAAgB,CAAC0F,kBAAkB,CAAC,CAAA;KAC3D,CAAA;IAED,IAAI,CAACnV,EAAE,CAACN,cAAc,CAACoL,eAAe,EAAEiK,eAAe,CAAC,CAAA;IACxD,IAAI,CAAC/U,EAAE,CAACN,cAAc,CAACgM,UAAU,EAAEwJ,kBAAkB,CAAC,CAAA;GACvD,CAAA;AAAApV,EAAAA,MAAA,CAEO6R,kBAAkB,GAAlB,SAAAA,qBAAkB;IACxB,IAAMyD,SAAS,GAAG,IAAIC,eAAe,CAACtI,MAAM,CAACwE,QAAQ,CAAC+D,MAAM,CAAC,CAAA;AAC7D,IAAA,IAAMC,KAAK,GACTH,SAAS,CAAC/U,GAAG,CAAC,uBAAuB,CAAC,IACtC+U,SAAS,CAAC/U,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACrC,IAAA,IAAIkV,KAAK,EAAE;MACT,IAAI,CAACzQ,OAAO,CAACX,QAAQ,CAACN,cAAc,CAACgG,YAAY,EAAE0L,KAAK,CAAC,CAAA;AAC3D,KAAA;GACD,CAAA;AAAA,EAAA,OAAAxF,SAAA,CAAA;AAAA,CAAA,EAAA;;AC1aH;;AAEG;AACI,IAAMyF,iBAAiB,GAAGzF,UAAS;AAE1C,SAAS0F,IAAIA,GAAA;AAAA,EAAA,IAAA5F,gBAAA,CAAA;EACX,IACE,EAAA,CAAAA,gBAAA,GAAC9C,MAAM,CAAC+C,QAAQ,KAAA,IAAA,IAAfD,gBAAA,CAAiBE,SAAS,KAC3B,EAAEhD,MAAM,CAAC+C,QAAQ,CAACC,SAAS,YAAYA,SAAS,CAAC,EACjD;IACAhD,MAAM,CAAC+C,QAAQ,GAAA4B,QAAA,CAAA,EAAA,EACT3E,MAAM,CAAC+C,QAAQ,IAAI,EAAE,EAAA;MACzBC,SAAS,EAAE,IAAIA,SAAS,EAAE;KAC3B,CAAA,CAAA;AACH,GAAA;AACF,CAAA;AAEA;AACA0F,IAAI,EAAE;;;;"} \ No newline at end of file diff --git a/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js b/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js index d4d8e52..946f4ba 100644 --- a/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js +++ b/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js @@ -1,2 +1,2 @@ -"use strict";function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(e=function(){return!!t})()}function t(){t=function(){return n};var e,n={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},n}function n(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function r(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var a=e.apply(t,r);function s(e){n(a,i,o,s,c,"next",e)}function c(e){n(a,i,o,s,c,"throw",e)}s(void 0)}))}}function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),d=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},h={uuid:d(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},f=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return o(t,e),t}(c(Error)),g={PairingFailed:new f("Pairing failed",4900),Disconnected:new f("Disconnected",4900),UnsupportedMethod:new f("Unsupported Method",4200),Unauthorized:new f("Unauthorized",4100),NoResult:new f("No result",4900),NoAppId:new f("App ID is required",4900),UserRejected:new f("User Rejected Request",4001),ChainDisconnected:new f("Chain Disconnected",4901)},w=function(e){return e instanceof f?new f(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new f(e.message||"Unknown error",4900,e):new f("Unknown error",4900,e)},v=["eip155:137","eip155:56","eip155:204"],y=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},m=function(e){return"eip155:"+parseInt(e,16)},N="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(p||(p={}));var I,M=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||d(),chainId:this.getSnapshot().chainId||v[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(N)||"{}")}catch(e){throw localStorage.setItem(N,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(N,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(I||(I={}));var D,T=function(){function e(e){this.config=void 0,this.config=e}var n=e.prototype;return n.sendAndWaitRpcRequest=function(){var e=r(t().mark((function e(n,r,i){var o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(n,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),n.sendRpcRequest=function(){var e=r(t().mark((function e(n,r){var i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new M,e.next=3,this.sendRpcApiRequest(I.request,{sessionId:i.getValue(p.sessionId),scope:i.getValue(p.chainId),request:{method:n,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.waitRpcRequest=function(){var e=r(t().mark((function e(n,r){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(I.waitForRequestResult,{requestToken:n,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.sendRpcApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+n,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new f(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw g.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new f(e.t0.message,500,e.t0);case 18:throw new f("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(D||(D={}));var k,j=function(e){function n(n){var i,o,a,s,c,l,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new M,o.rpc=void 0,o.switchChain=function(){var e=r(t().mark((function e(n){var r,i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=m(r=n.chainId),v.includes(i)){e.next=4;break}throw w(g.ChainDisconnected);case 4:return o.storage.setValue(p.chainId,i),o.emit(u.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((i={})[D.eth_requestAccounts]=(f=r(t().mark((function e(n){var r,i,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:D.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(p.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:o.storage.getValue(p.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(p.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw g.PairingFailed;case 19:return e.next=21,o.request({method:D.eth_accounts,params:n||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(I.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(p.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw g.PairingFailed;case 34:return o.storage.setValue(p.pairingToken,i.pairingToken),o.storage.setValue(p.connectUrl,i.connectUrl),o.storage.setValue(p.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(p.shortToken,i.shortToken),o.emit(u.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(p.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw g.PairingFailed;case 45:return o.storage.setValue(p.pairingToken,""),o.storage.setValue(p.connectUrl,""),o.storage.setValue(p.connectUrlBrowser,""),o.storage.setValue(p.shortToken,""),e.next=51,o.request({method:D.eth_accounts,params:n||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),i[D.eth_accounts]=(h=r(t().mark((function e(n){var r;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(D.eth_accounts,n?Array.isArray(n)?n:[n]:[]);case 3:return o.storage.setValue(p.address,(r=e.sent)[0]||""),o.emit(u.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),w(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),i[D.eth_sendTransaction]=(d=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.eth_sendTransaction,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),i[D.personal_sign]=(l=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.personal_sign,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return l.apply(this,arguments)}),i[D.gws_disconnect]=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(I.disconnect,{sessionToken:o.storage.getValue(p.sessionId)});case 3:return n=e.sent,o.emit(u.disconnect,g.Disconnected),e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),w(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),i[D.eth_chainId]=(c=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",y(o.storage.getValue(p.chainId)||o.config.chainId||v[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),i[D.wallet_addEthereumChain]=(s=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw w(g.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),i[D.wallet_switchEthereumChain]=(a=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),i),o.config=n,o.rpc=new T(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(u.connect,{chainId:y(o.storage.getValue(p.chainId)||o.config.chainId||v[0])}),o.restorePairing(),o.restoreSession()})),o}o(n,e);var i=n.prototype;return i.isConnected=function(){return!0},i.request=function(){var e=r(t().mark((function e(n){var r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.method,a=n.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.restorePairing=function(){var e=r(t().mark((function e(){var n,r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),r=this.storage.getValue(p.sessionId),!n||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:n});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(p.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw g.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(p.address,a[0]||""),this.emit(u.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),i.restoreSession=function(){var e=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),!this.storage.getValue(p.sessionId)||n){e.next=11;break}return e.prev=3,e.next=6,this.request({method:D.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),i.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},i.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:h,provider:this})}))},i.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},n}(l);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(k||(k={}));var A,x=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o,a,s,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new M,a=o.getValue(p.sessionId),s=o.getValue(p.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:n,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+n);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),b=function(){function e(e){var t,n,r,o,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(o=window.Grindery)?void 0:o.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new M,this.user=null,this.config=i({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(k.walletConnected,{wallets:t})})),this.on(u.disconnect,(function(){e.trackClientEvent(k.walletDisconnected)}))},n.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(p.pairingToken,t)},e}(),U=b;null!=(A=window.Grindery)&&A.WalletSDK&&window.Grindery.WalletSDK instanceof b||(window.Grindery=i({},window.Grindery||{},{WalletSDK:new b})),exports.GrinderyWalletSDK=U; +"use strict";function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(e=function(){return!!t})()}function t(){t=function(){return n};var e,n={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:j(e,n,a)}),i}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var d="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function n(r,o,a,s){var c=h(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function j(t,n,r){var i=d;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===d)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=h(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=h(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},n}function n(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function r(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var a=e.apply(t,r);function s(e){n(a,i,o,s,c,"next",e)}function c(e){n(a,i,o,s,c,"throw",e)}s(void 0)}))}}function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},d={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},f=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return o(t,e),t}(c(Error)),g={PairingFailed:new f("Pairing failed",4900),Disconnected:new f("Disconnected",4900),UnsupportedMethod:new f("Unsupported Method",4200),Unauthorized:new f("Unauthorized",4100),NoResult:new f("No result",4900),NoAppId:new f("App ID is required",4900),UserRejected:new f("User Rejected Request",4001),ChainDisconnected:new f("Chain Disconnected",4901)},w=function(e){return e instanceof f?new f(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new f(e.message||"Unknown error",4900,e):new f("Unknown error",4900,e)},v=["eip155:137","eip155:56","eip155:204"],y=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},m=function(e){return"eip155:"+parseInt(e,16)},N="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(p||(p={}));var I,M=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||v[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(N)||"{}")}catch(e){throw localStorage.setItem(N,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(N,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(I||(I={}));var D,T=function(){function e(e){this.config=void 0,this.config=e}var n=e.prototype;return n.sendAndWaitRpcRequest=function(){var e=r(t().mark((function e(n,r,i){var o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(n,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),n.sendRpcRequest=function(){var e=r(t().mark((function e(n,r){var i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new M,e.next=3,this.sendRpcApiRequest(I.request,{sessionId:i.getValue(p.sessionId),scope:i.getValue(p.chainId),request:{method:n,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.waitRpcRequest=function(){var e=r(t().mark((function e(n,r){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(I.waitForRequestResult,{requestToken:n,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.sendRpcApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+n,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new f(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw g.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new f(e.t0.message,500,e.t0);case 18:throw new f("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(D||(D={}));var k,A=function(e){function n(n){var i,o,a,s,c,l,h,d,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new M,o.rpc=void 0,o.switchChain=function(){var e=r(t().mark((function e(n){var r,i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=m(r=n.chainId),v.includes(i)){e.next=4;break}throw w(g.ChainDisconnected);case 4:return o.storage.setValue(p.chainId,i),o.emit(u.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((i={})[D.eth_requestAccounts]=(f=r(t().mark((function e(n){var r,i,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:D.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(p.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:o.storage.getValue(p.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(p.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw g.PairingFailed;case 19:return e.next=21,o.request({method:D.eth_accounts,params:n||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(I.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(p.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw g.PairingFailed;case 34:return o.storage.setValue(p.pairingToken,i.pairingToken),o.storage.setValue(p.connectUrl,i.connectUrl),o.storage.setValue(p.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(p.shortToken,i.shortToken),o.emit(u.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(p.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw g.PairingFailed;case 45:return o.storage.setValue(p.pairingToken,""),o.storage.setValue(p.connectUrl,""),o.storage.setValue(p.connectUrlBrowser,""),o.storage.setValue(p.shortToken,""),e.next=51,o.request({method:D.eth_accounts,params:n||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),i[D.eth_accounts]=(d=r(t().mark((function e(n){var r;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(D.eth_accounts,n?Array.isArray(n)?n:[n]:[]);case 3:return o.storage.setValue(p.address,(r=e.sent)[0]||""),o.emit(u.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),w(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return d.apply(this,arguments)}),i[D.eth_sendTransaction]=(h=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.eth_sendTransaction,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return h.apply(this,arguments)}),i[D.personal_sign]=(l=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.personal_sign,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return l.apply(this,arguments)}),i[D.gws_disconnect]=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(I.disconnect,{sessionToken:o.storage.getValue(p.sessionId)});case 3:return n=e.sent,o.emit(u.disconnect,g.Disconnected),e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),w(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),i[D.eth_chainId]=(c=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",y(o.storage.getValue(p.chainId)||o.config.chainId||v[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),i[D.wallet_addEthereumChain]=(s=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw w(g.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),i[D.wallet_switchEthereumChain]=(a=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),i),o.config=n,o.rpc=new T(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(u.connect,{chainId:y(o.storage.getValue(p.chainId)||o.config.chainId||v[0])}),o.restorePairing(),o.restoreSession()})),o}o(n,e);var i=n.prototype;return i.isConnected=function(){return!0},i.request=function(){var e=r(t().mark((function e(n){var r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.method,a=n.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.sendAsync=function(e,t){var n,r;null==(n=(r=this.methods)[e.method])||n.call(r,e.params).then((function(e){t(null,e)})).catch((function(e){t(e)}))},i.restorePairing=function(){var e=r(t().mark((function e(){var n,r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),r=this.storage.getValue(p.sessionId),!n||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:n});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(p.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw g.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(p.address,a[0]||""),this.emit(u.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),i.restoreSession=function(){var e=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),!this.storage.getValue(p.sessionId)||n){e.next=11;break}return e.prev=3,e.next=6,this.request({method:D.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),i.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},i.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:d,provider:this})}))},i.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},n}(l);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(k||(k={}));var j,x=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o,a,s,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new M,a=o.getValue(p.sessionId),s=o.getValue(p.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:n,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+n);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),b=function(){function e(e){var t,n,r,o,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(o=window.Grindery)?void 0:o.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new M,this.user=null,this.config=i({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(k.walletConnected,{wallets:t})})),this.on(u.disconnect,(function(){e.trackClientEvent(k.walletDisconnected)}))},n.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(p.pairingToken,t)},e}(),U=b;null!=(j=window.Grindery)&&j.WalletSDK&&window.Grindery.WalletSDK instanceof b||(window.Grindery=i({},window.Grindery||{},{WalletSDK:new b})),exports.GrinderyWalletSDK=U; //# sourceMappingURL=grindery-wallet-sdk.cjs.production.min.js.map diff --git a/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js.map b/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js.map index aaa8358..1718950 100644 --- a/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js.map +++ b/docs/example/dist/grindery-wallet-sdk.cjs.production.min.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.cjs.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.cjs.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file diff --git a/docs/example/dist/grindery-wallet-sdk.esm.js b/docs/example/dist/grindery-wallet-sdk.esm.js index 55a6645..48f689b 100644 --- a/docs/example/dist/grindery-wallet-sdk.esm.js +++ b/docs/example/dist/grindery-wallet-sdk.esm.js @@ -1231,7 +1231,29 @@ var Provider = /*#__PURE__*/function (_EventEmitter) { return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/docs/example/dist/grindery-wallet-sdk.esm.js.map b/docs/example/dist/grindery-wallet-sdk.esm.js.map index 82c78eb..2b16a5b 100644 --- a/docs/example/dist/grindery-wallet-sdk.esm.js.map +++ b/docs/example/dist/grindery-wallet-sdk.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.esm.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.esm.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/docs/example/dist/grindery-wallet-sdk.umd.development.js b/docs/example/dist/grindery-wallet-sdk.umd.development.js index ec26c96..0810324 100644 --- a/docs/example/dist/grindery-wallet-sdk.umd.development.js +++ b/docs/example/dist/grindery-wallet-sdk.umd.development.js @@ -1237,7 +1237,29 @@ return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/docs/example/dist/grindery-wallet-sdk.umd.development.js.map b/docs/example/dist/grindery-wallet-sdk.umd.development.js.map index f28ea88..5566006 100644 --- a/docs/example/dist/grindery-wallet-sdk.umd.development.js.map +++ b/docs/example/dist/grindery-wallet-sdk.umd.development.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.umd.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.umd.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/docs/example/dist/grindery-wallet-sdk.umd.production.min.js b/docs/example/dist/grindery-wallet-sdk.umd.production.min.js index 6f9f042..dd8df56 100644 --- a/docs/example/dist/grindery-wallet-sdk.umd.production.min.js +++ b/docs/example/dist/grindery-wallet-sdk.umd.production.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["grindery-wallet-sdk"]={})}(this,(function(e){"use strict";function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(t=function(){return!!e})()}function n(){n=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},f={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},g=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return a(t,e),t}(u(Error)),w={PairingFailed:new g("Pairing failed",4900),Disconnected:new g("Disconnected",4900),UnsupportedMethod:new g("Unsupported Method",4200),Unauthorized:new g("Unauthorized",4100),NoResult:new g("No result",4900),NoAppId:new g("App ID is required",4900),UserRejected:new g("User Rejected Request",4001),ChainDisconnected:new g("Chain Disconnected",4901)},v=function(e){return e instanceof g?new g(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new g(e.message||"Unknown error",4900,e):new g("Unknown error",4900,e)},y=["eip155:137","eip155:56","eip155:204"],m=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},N=function(e){return"eip155:"+parseInt(e,16)},I="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(l||(l={}));var M,D=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||y[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(I)||"{}")}catch(e){throw localStorage.setItem(I,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(I,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(M||(M={}));var T,k=function(){function e(e){this.config=void 0,this.config=e}var t=e.prototype;return t.sendAndWaitRpcRequest=function(){var e=i(n().mark((function e(t,r,i){var o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(t,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),t.sendRpcRequest=function(){var e=i(n().mark((function e(t,r){var i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new D,e.next=3,this.sendRpcApiRequest(M.request,{sessionId:i.getValue(l.sessionId),scope:i.getValue(l.chainId),request:{method:t,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.waitRpcRequest=function(){var e=i(n().mark((function e(t,r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(M.waitForRequestResult,{requestToken:t,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.sendRpcApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+t,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new g(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw w.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new g(e.t0.message,500,e.t0);case 18:throw new g("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(T||(T={}));var j,A=function(e){function t(t){var r,o,a,s,c,u,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new D,o.rpc=void 0,o.switchChain=function(){var e=i(n().mark((function e(t){var r,i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=N(r=t.chainId),y.includes(i)){e.next=4;break}throw v(w.ChainDisconnected);case 4:return o.storage.setValue(l.chainId,i),o.emit(p.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((r={})[T.eth_requestAccounts]=(f=i(n().mark((function e(t){var r,i,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:T.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(l.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:o.storage.getValue(l.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(l.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw w.PairingFailed;case 19:return e.next=21,o.request({method:T.eth_accounts,params:t||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(M.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(l.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw w.PairingFailed;case 34:return o.storage.setValue(l.pairingToken,i.pairingToken),o.storage.setValue(l.connectUrl,i.connectUrl),o.storage.setValue(l.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(l.shortToken,i.shortToken),o.emit(p.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(l.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw w.PairingFailed;case 45:return o.storage.setValue(l.pairingToken,""),o.storage.setValue(l.connectUrl,""),o.storage.setValue(l.connectUrlBrowser,""),o.storage.setValue(l.shortToken,""),e.next=51,o.request({method:T.eth_accounts,params:t||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),r[T.eth_accounts]=(h=i(n().mark((function e(t){var r;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(T.eth_accounts,t?Array.isArray(t)?t:[t]:[]);case 3:return o.storage.setValue(l.address,(r=e.sent)[0]||""),o.emit(p.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),v(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),r[T.eth_sendTransaction]=(d=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.eth_sendTransaction,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),r[T.personal_sign]=(u=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.personal_sign,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)}),r[T.gws_disconnect]=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(M.disconnect,{sessionToken:o.storage.getValue(l.sessionId)});case 3:return t=e.sent,o.emit(p.disconnect,w.Disconnected),e.abrupt("return",t);case 8:throw e.prev=8,e.t0=e.catch(0),v(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),r[T.eth_chainId]=(c=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",m(o.storage.getValue(l.chainId)||o.config.chainId||y[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),r[T.wallet_addEthereumChain]=(s=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw v(w.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),r[T.wallet_switchEthereumChain]=(a=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),r),o.config=t,o.rpc=new k(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(p.connect,{chainId:m(o.storage.getValue(l.chainId)||o.config.chainId||y[0])}),o.restorePairing(),o.restoreSession()})),o}a(t,e);var r=t.prototype;return r.isConnected=function(){return!0},r.request=function(){var e=i(n().mark((function e(t){var r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.method,a=t.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.restorePairing=function(){var e=i(n().mark((function e(){var t,r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),r=this.storage.getValue(l.sessionId),!t||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:t});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(l.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw w.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(l.address,a[0]||""),this.emit(p.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),r.restoreSession=function(){var e=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),!this.storage.getValue(l.sessionId)||t){e.next=11;break}return e.prev=3,e.next=6,this.request({method:T.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),r.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},r.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:f,provider:this})}))},r.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},t}(d);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(j||(j={}));var x,b=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o,a,s,c;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new D,a=o.getValue(l.sessionId),s=o.getValue(l.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:t,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+t);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),U=function(){function e(e){var t,n,r,i,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(i=window.Grindery)?void 0:i.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new D,this.user=null,this.config=o({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(j.walletConnected,{wallets:t})})),this.on(p.disconnect,(function(){e.trackClientEvent(j.walletDisconnected)}))},t.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(l.pairingToken,t)},e}(),L=U;null!=(x=window.Grindery)&&x.WalletSDK&&window.Grindery.WalletSDK instanceof U||(window.Grindery=o({},window.Grindery||{},{WalletSDK:new U})),e.GrinderyWalletSDK=L,Object.defineProperty(e,"__esModule",{value:!0})})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["grindery-wallet-sdk"]={})}(this,(function(e){"use strict";function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(t=function(){return!!e})()}function n(){n=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},f={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},g=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return a(t,e),t}(u(Error)),w={PairingFailed:new g("Pairing failed",4900),Disconnected:new g("Disconnected",4900),UnsupportedMethod:new g("Unsupported Method",4200),Unauthorized:new g("Unauthorized",4100),NoResult:new g("No result",4900),NoAppId:new g("App ID is required",4900),UserRejected:new g("User Rejected Request",4001),ChainDisconnected:new g("Chain Disconnected",4901)},v=function(e){return e instanceof g?new g(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new g(e.message||"Unknown error",4900,e):new g("Unknown error",4900,e)},y=["eip155:137","eip155:56","eip155:204"],m=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},N=function(e){return"eip155:"+parseInt(e,16)},I="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(l||(l={}));var M,D=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||y[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(I)||"{}")}catch(e){throw localStorage.setItem(I,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(I,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(M||(M={}));var T,k=function(){function e(e){this.config=void 0,this.config=e}var t=e.prototype;return t.sendAndWaitRpcRequest=function(){var e=i(n().mark((function e(t,r,i){var o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(t,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),t.sendRpcRequest=function(){var e=i(n().mark((function e(t,r){var i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new D,e.next=3,this.sendRpcApiRequest(M.request,{sessionId:i.getValue(l.sessionId),scope:i.getValue(l.chainId),request:{method:t,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.waitRpcRequest=function(){var e=i(n().mark((function e(t,r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(M.waitForRequestResult,{requestToken:t,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.sendRpcApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+t,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new g(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw w.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new g(e.t0.message,500,e.t0);case 18:throw new g("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(T||(T={}));var j,A=function(e){function t(t){var r,o,a,s,c,u,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new D,o.rpc=void 0,o.switchChain=function(){var e=i(n().mark((function e(t){var r,i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=N(r=t.chainId),y.includes(i)){e.next=4;break}throw v(w.ChainDisconnected);case 4:return o.storage.setValue(l.chainId,i),o.emit(p.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((r={})[T.eth_requestAccounts]=(f=i(n().mark((function e(t){var r,i,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:T.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(l.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:o.storage.getValue(l.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(l.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw w.PairingFailed;case 19:return e.next=21,o.request({method:T.eth_accounts,params:t||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(M.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(l.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw w.PairingFailed;case 34:return o.storage.setValue(l.pairingToken,i.pairingToken),o.storage.setValue(l.connectUrl,i.connectUrl),o.storage.setValue(l.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(l.shortToken,i.shortToken),o.emit(p.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(l.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw w.PairingFailed;case 45:return o.storage.setValue(l.pairingToken,""),o.storage.setValue(l.connectUrl,""),o.storage.setValue(l.connectUrlBrowser,""),o.storage.setValue(l.shortToken,""),e.next=51,o.request({method:T.eth_accounts,params:t||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),r[T.eth_accounts]=(h=i(n().mark((function e(t){var r;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(T.eth_accounts,t?Array.isArray(t)?t:[t]:[]);case 3:return o.storage.setValue(l.address,(r=e.sent)[0]||""),o.emit(p.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),v(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),r[T.eth_sendTransaction]=(d=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.eth_sendTransaction,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),r[T.personal_sign]=(u=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.personal_sign,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)}),r[T.gws_disconnect]=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(M.disconnect,{sessionToken:o.storage.getValue(l.sessionId)});case 3:return t=e.sent,o.emit(p.disconnect,w.Disconnected),e.abrupt("return",t);case 8:throw e.prev=8,e.t0=e.catch(0),v(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),r[T.eth_chainId]=(c=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",m(o.storage.getValue(l.chainId)||o.config.chainId||y[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),r[T.wallet_addEthereumChain]=(s=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw v(w.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),r[T.wallet_switchEthereumChain]=(a=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),r),o.config=t,o.rpc=new k(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(p.connect,{chainId:m(o.storage.getValue(l.chainId)||o.config.chainId||y[0])}),o.restorePairing(),o.restoreSession()})),o}a(t,e);var r=t.prototype;return r.isConnected=function(){return!0},r.request=function(){var e=i(n().mark((function e(t){var r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.method,a=t.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.sendAsync=function(e,t){var n,r;null==(n=(r=this.methods)[e.method])||n.call(r,e.params).then((function(e){t(null,e)})).catch((function(e){t(e)}))},r.restorePairing=function(){var e=i(n().mark((function e(){var t,r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),r=this.storage.getValue(l.sessionId),!t||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:t});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(l.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw w.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(l.address,a[0]||""),this.emit(p.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),r.restoreSession=function(){var e=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),!this.storage.getValue(l.sessionId)||t){e.next=11;break}return e.prev=3,e.next=6,this.request({method:T.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),r.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},r.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:f,provider:this})}))},r.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},t}(d);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(j||(j={}));var x,b=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o,a,s,c;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new D,a=o.getValue(l.sessionId),s=o.getValue(l.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:t,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+t);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),U=function(){function e(e){var t,n,r,i,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(i=window.Grindery)?void 0:i.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new D,this.user=null,this.config=o({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(j.walletConnected,{wallets:t})})),this.on(p.disconnect,(function(){e.trackClientEvent(j.walletDisconnected)}))},t.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(l.pairingToken,t)},e}(),L=U;null!=(x=window.Grindery)&&x.WalletSDK&&window.Grindery.WalletSDK instanceof U||(window.Grindery=o({},window.Grindery||{},{WalletSDK:new U})),e.GrinderyWalletSDK=L,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=grindery-wallet-sdk.umd.production.min.js.map diff --git a/docs/example/dist/grindery-wallet-sdk.umd.production.min.js.map b/docs/example/dist/grindery-wallet-sdk.umd.production.min.js.map index 6118573..d349c61 100644 --- a/docs/example/dist/grindery-wallet-sdk.umd.production.min.js.map +++ b/docs/example/dist/grindery-wallet-sdk.umd.production.min.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.umd.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.umd.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file diff --git a/docs/functions/classes_ProviderError.newProviderError.html b/docs/functions/classes_ProviderError.newProviderError.html index 06d892a..9a343f6 100644 --- a/docs/functions/classes_ProviderError.newProviderError.html +++ b/docs/functions/classes_ProviderError.newProviderError.html @@ -1 +1 @@ -newProviderError | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +newProviderError | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/functions/utils_chains.hexChainId.html b/docs/functions/utils_chains.hexChainId.html index 0efc7b5..b95e680 100644 --- a/docs/functions/utils_chains.hexChainId.html +++ b/docs/functions/utils_chains.hexChainId.html @@ -1 +1 @@ -hexChainId | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +hexChainId | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/functions/utils_chains.unhexChainId.html b/docs/functions/utils_chains.unhexChainId.html index 96538b7..7577348 100644 --- a/docs/functions/utils_chains.unhexChainId.html +++ b/docs/functions/utils_chains.unhexChainId.html @@ -1 +1 @@ -unhexChainId | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +unhexChainId | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/functions/utils_getConfigFromDataAttributes.getConfigFromDataAttributes.html b/docs/functions/utils_getConfigFromDataAttributes.getConfigFromDataAttributes.html index 2f34ede..8f1abf3 100644 --- a/docs/functions/utils_getConfigFromDataAttributes.getConfigFromDataAttributes.html +++ b/docs/functions/utils_getConfigFromDataAttributes.getConfigFromDataAttributes.html @@ -1,3 +1,3 @@ -getConfigFromDataAttributes | Grindery Wallet SDK - v0.5.3
\ No newline at end of file diff --git a/docs/functions/utils_uuid.uuid.html b/docs/functions/utils_uuid.uuid.html index 4bf8706..e77c03e 100644 --- a/docs/functions/utils_uuid.uuid.html +++ b/docs/functions/utils_uuid.uuid.html @@ -1,3 +1,3 @@ -uuid | Grindery Wallet SDK - v0.5.3
  • Returns string

    The UUID

    +uuid | Grindery Wallet SDK - v0.5.4
    • Returns string

      The UUID

      Summary

      Generates a Version 4 (pseudorandom) UUID

      -
    \ No newline at end of file +
\ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 05f66e2..5a9ed49 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -Grindery Wallet SDK - v0.5.3

Grindery Wallet SDK - v0.5.3

Class Hierarchy

\ No newline at end of file +Grindery Wallet SDK - v0.5.4

Grindery Wallet SDK - v0.5.4

Class Hierarchy

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index ea262f8..2e38e02 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ -Grindery Wallet SDK - v0.5.3

Grindery Wallet SDK - v0.5.3

Grindery Wallet SDK is a JS library that provides a reliable, secure, and seamless connection from your dapp to the Grindery Smart-Wallet.

+Grindery Wallet SDK - v0.5.4
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/interfaces/classes_Provider.ProviderRequestArguments.html b/docs/interfaces/classes_Provider.ProviderRequestArguments.html index a216164..58cdc1f 100644 --- a/docs/interfaces/classes_Provider.ProviderRequestArguments.html +++ b/docs/interfaces/classes_Provider.ProviderRequestArguments.html @@ -1,5 +1,5 @@ -ProviderRequestArguments | Grindery Wallet SDK - v0.5.3

Summary

The Grindery wallet provider request arguments

+ProviderRequestArguments | Grindery Wallet SDK - v0.5.4

Summary

The Grindery wallet provider request arguments

Since

0.2.0

-
interface ProviderRequestArguments {
    method: "eth_requestAccounts" | "eth_accounts" | "personal_sign" | "eth_sendTransaction" | "gws_disconnect" | "eth_chainId" | "wallet_addEthereumChain" | "wallet_switchEthereumChain";
    params?: ProviderRequestArgumentsParams;
}

Properties

interface ProviderRequestArguments {
    method: "eth_requestAccounts" | "eth_accounts" | "personal_sign" | "eth_sendTransaction" | "gws_disconnect" | "eth_chainId" | "wallet_addEthereumChain" | "wallet_switchEthereumChain";
    params?: ProviderRequestArgumentsParams;
}

Properties

Properties

method: "eth_requestAccounts" | "eth_accounts" | "personal_sign" | "eth_sendTransaction" | "gws_disconnect" | "eth_chainId" | "wallet_addEthereumChain" | "wallet_switchEthereumChain"
\ No newline at end of file +

Properties

method: "eth_requestAccounts" | "eth_accounts" | "personal_sign" | "eth_sendTransaction" | "gws_disconnect" | "eth_chainId" | "wallet_addEthereumChain" | "wallet_switchEthereumChain"
\ No newline at end of file diff --git a/docs/interfaces/utils_providerInfo.EIP6963ProviderInfo.html b/docs/interfaces/utils_providerInfo.EIP6963ProviderInfo.html index 0d24417..30842bc 100644 --- a/docs/interfaces/utils_providerInfo.EIP6963ProviderInfo.html +++ b/docs/interfaces/utils_providerInfo.EIP6963ProviderInfo.html @@ -1,7 +1,7 @@ -EIP6963ProviderInfo | Grindery Wallet SDK - v0.5.3

Represents the assets needed to display a wallet

+EIP6963ProviderInfo | Grindery Wallet SDK - v0.5.4

Represents the assets needed to display a wallet

interface EIP6963ProviderInfo {
    icon: string;
    name: string;
    rdns: string;
    uuid: string;
}

Properties

interface EIP6963ProviderInfo {
    icon: string;
    name: string;
    rdns: string;
    uuid: string;
}
\ No newline at end of file +
uuid: string
\ No newline at end of file diff --git a/docs/modules/classes_EventEmitter.html b/docs/modules/classes_EventEmitter.html index c04d522..0e99e54 100644 --- a/docs/modules/classes_EventEmitter.html +++ b/docs/modules/classes_EventEmitter.html @@ -1,4 +1,4 @@ -classes/EventEmitter | Grindery Wallet SDK - v0.5.3

Module classes/EventEmitter

Index

Enumerations

ProviderEvents +classes/EventEmitter | Grindery Wallet SDK - v0.5.4

Module classes/EventEmitter

Index

Enumerations

Classes

Type Aliases

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/classes_Provider.ProviderRequestResults.html b/docs/modules/classes_Provider.ProviderRequestResults.html index e907447..d9cc8dd 100644 --- a/docs/modules/classes_Provider.ProviderRequestResults.html +++ b/docs/modules/classes_Provider.ProviderRequestResults.html @@ -1,4 +1,4 @@ -ProviderRequestResults | Grindery Wallet SDK - v0.5.3

Index

Type Aliases

disconnect +ProviderRequestResults | Grindery Wallet SDK - v0.5.4
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/classes_Provider.html b/docs/modules/classes_Provider.html index 7e7e25f..4a10bc3 100644 --- a/docs/modules/classes_Provider.html +++ b/docs/modules/classes_Provider.html @@ -1,8 +1,8 @@ -classes/Provider | Grindery Wallet SDK - v0.5.3

Index

Namespaces

ProviderRequestResults +classes/Provider | Grindery Wallet SDK - v0.5.4
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/classes_ProviderError.html b/docs/modules/classes_ProviderError.html index be64dba..779ef9a 100644 --- a/docs/modules/classes_ProviderError.html +++ b/docs/modules/classes_ProviderError.html @@ -1,4 +1,4 @@ -classes/ProviderError | Grindery Wallet SDK - v0.5.3

Module classes/ProviderError

Index

Classes

ProviderError +classes/ProviderError | Grindery Wallet SDK - v0.5.4
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/classes_Rpc.RpcRequestResults.html b/docs/modules/classes_Rpc.RpcRequestResults.html index ed4ee73..6a764d9 100644 --- a/docs/modules/classes_Rpc.RpcRequestResults.html +++ b/docs/modules/classes_Rpc.RpcRequestResults.html @@ -1,10 +1,10 @@ -RpcRequestResults | Grindery Wallet SDK - v0.5.3

Summary

The Grindery RPC API request results

+RpcRequestResults | Grindery Wallet SDK - v0.5.4

Summary

The Grindery RPC API request results

Since

0.2.0

-

Index

Type Aliases

Index

Type Aliases

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/classes_Rpc.html b/docs/modules/classes_Rpc.html index 21fbaf3..42e2b14 100644 --- a/docs/modules/classes_Rpc.html +++ b/docs/modules/classes_Rpc.html @@ -1,4 +1,4 @@ -classes/Rpc | Grindery Wallet SDK - v0.5.3

Index

Namespaces

RpcRequestResults +classes/Rpc | Grindery Wallet SDK - v0.5.4

Index

Namespaces

Enumerations

Classes

Rpc -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/classes_SdkStorage.html b/docs/modules/classes_SdkStorage.html index b2bf15a..4e31d18 100644 --- a/docs/modules/classes_SdkStorage.html +++ b/docs/modules/classes_SdkStorage.html @@ -1,5 +1,5 @@ -classes/SdkStorage | Grindery Wallet SDK - v0.5.3

Module classes/SdkStorage

Index

Enumerations

SdkStorageKeys +classes/SdkStorage | Grindery Wallet SDK - v0.5.4
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/classes_WalletAPI.html b/docs/modules/classes_WalletAPI.html index cf4d5e6..cc15329 100644 --- a/docs/modules/classes_WalletAPI.html +++ b/docs/modules/classes_WalletAPI.html @@ -1,2 +1,2 @@ -classes/WalletAPI | Grindery Wallet SDK - v0.5.3

Module classes/WalletAPI

Index

Classes

\ No newline at end of file +classes/WalletAPI | Grindery Wallet SDK - v0.5.4

Module classes/WalletAPI

Index

Classes

\ No newline at end of file diff --git a/docs/modules/classes_WalletSDK.html b/docs/modules/classes_WalletSDK.html index bd26b80..3b2e62a 100644 --- a/docs/modules/classes_WalletSDK.html +++ b/docs/modules/classes_WalletSDK.html @@ -1,3 +1,3 @@ -classes/WalletSDK | Grindery Wallet SDK - v0.5.3

Module classes/WalletSDK

Index

Classes

WalletSDK +classes/WalletSDK | Grindery Wallet SDK - v0.5.4

Module classes/WalletSDK

Index

Classes

Type Aliases

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/utils_chains.html b/docs/modules/utils_chains.html index 21a5ef9..9cbd7f6 100644 --- a/docs/modules/utils_chains.html +++ b/docs/modules/utils_chains.html @@ -1,4 +1,4 @@ -utils/chains | Grindery Wallet SDK - v0.5.3

Index

Variables

CHAINS +utils/chains | Grindery Wallet SDK - v0.5.4

Index

Variables

Functions

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/utils_clientEvents.html b/docs/modules/utils_clientEvents.html index f03da84..69df895 100644 --- a/docs/modules/utils_clientEvents.html +++ b/docs/modules/utils_clientEvents.html @@ -1,3 +1,3 @@ -utils/clientEvents | Grindery Wallet SDK - v0.5.3

Module utils/clientEvents

Index

Enumerations

ClientEventNames +utils/clientEvents | Grindery Wallet SDK - v0.5.4

Module utils/clientEvents

Index

Enumerations

Type Aliases

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/utils_getConfigFromDataAttributes.html b/docs/modules/utils_getConfigFromDataAttributes.html index 50a732a..d1d0ef9 100644 --- a/docs/modules/utils_getConfigFromDataAttributes.html +++ b/docs/modules/utils_getConfigFromDataAttributes.html @@ -1,2 +1,2 @@ -utils/getConfigFromDataAttributes | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +utils/getConfigFromDataAttributes | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/modules/utils_providerInfo.html b/docs/modules/utils_providerInfo.html index 4e95746..51e6717 100644 --- a/docs/modules/utils_providerInfo.html +++ b/docs/modules/utils_providerInfo.html @@ -1,3 +1,3 @@ -utils/providerInfo | Grindery Wallet SDK - v0.5.3

Module utils/providerInfo

Index

Interfaces

EIP6963ProviderInfo +utils/providerInfo | Grindery Wallet SDK - v0.5.4
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/utils_user.html b/docs/modules/utils_user.html index 3b21a45..9f8dce1 100644 --- a/docs/modules/utils_user.html +++ b/docs/modules/utils_user.html @@ -1,2 +1,2 @@ -utils/user | Grindery Wallet SDK - v0.5.3

Index

Type Aliases

\ No newline at end of file +utils/user | Grindery Wallet SDK - v0.5.4

Index

Type Aliases

\ No newline at end of file diff --git a/docs/modules/utils_uuid.html b/docs/modules/utils_uuid.html index 4a40adc..263c24b 100644 --- a/docs/modules/utils_uuid.html +++ b/docs/modules/utils_uuid.html @@ -1,2 +1,2 @@ -utils/uuid | Grindery Wallet SDK - v0.5.3

Index

Functions

\ No newline at end of file +utils/uuid | Grindery Wallet SDK - v0.5.4

Index

Functions

\ No newline at end of file diff --git a/docs/types/classes_EventEmitter.ProviderEventName.html b/docs/types/classes_EventEmitter.ProviderEventName.html index 21a3653..f390451 100644 --- a/docs/types/classes_EventEmitter.ProviderEventName.html +++ b/docs/types/classes_EventEmitter.ProviderEventName.html @@ -1,3 +1,3 @@ -ProviderEventName | Grindery Wallet SDK - v0.5.3
ProviderEventName: keyof typeof ProviderEvents

Summary

Provider event name

+ProviderEventName | Grindery Wallet SDK - v0.5.4
ProviderEventName: keyof typeof ProviderEvents

Summary

Provider event name

Since

0.2.0

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderMethodName.html b/docs/types/classes_Provider.ProviderMethodName.html index be77925..01b1472 100644 --- a/docs/types/classes_Provider.ProviderMethodName.html +++ b/docs/types/classes_Provider.ProviderMethodName.html @@ -1,3 +1,3 @@ -ProviderMethodName | Grindery Wallet SDK - v0.5.3
ProviderMethodName: keyof typeof ProviderMethodNames

Summary

The Grindery wallet provider method names

+ProviderMethodName | Grindery Wallet SDK - v0.5.4
ProviderMethodName: keyof typeof ProviderMethodNames

Summary

The Grindery wallet provider method names

Since

0.2.0

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderMethods.html b/docs/types/classes_Provider.ProviderMethods.html index 5468546..b544496 100644 --- a/docs/types/classes_Provider.ProviderMethods.html +++ b/docs/types/classes_Provider.ProviderMethods.html @@ -1,3 +1,3 @@ -ProviderMethods | Grindery Wallet SDK - v0.5.3
ProviderMethods: {
    [name in ProviderMethodNames]: ((params?) => Promise<unknown>)
}

Summary

The Grindery wallet provider methods

+ProviderMethods | Grindery Wallet SDK - v0.5.4
ProviderMethods: {
    [name in ProviderMethodNames]: ((params?) => Promise<unknown>)
}

Summary

The Grindery wallet provider methods

Since

0.2.0

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestArgumentsParams.html b/docs/types/classes_Provider.ProviderRequestArgumentsParams.html index 9b0ac02..3441e5c 100644 --- a/docs/types/classes_Provider.ProviderRequestArgumentsParams.html +++ b/docs/types/classes_Provider.ProviderRequestArgumentsParams.html @@ -1,3 +1,3 @@ -ProviderRequestArgumentsParams | Grindery Wallet SDK - v0.5.3
ProviderRequestArgumentsParams: readonly unknown[] | object

Summary

The Grindery wallet provider request params

+ProviderRequestArgumentsParams | Grindery Wallet SDK - v0.5.4
ProviderRequestArgumentsParams: readonly unknown[] | object

Summary

The Grindery wallet provider request params

Since

0.2.0

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.disconnect.html b/docs/types/classes_Provider.ProviderRequestResults.disconnect.html index ab0afb8..8ba168a 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.disconnect.html +++ b/docs/types/classes_Provider.ProviderRequestResults.disconnect.html @@ -1 +1 @@ -disconnect | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +disconnect | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.eth_accounts.html b/docs/types/classes_Provider.ProviderRequestResults.eth_accounts.html index 8be7266..9ecf23c 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.eth_accounts.html +++ b/docs/types/classes_Provider.ProviderRequestResults.eth_accounts.html @@ -1 +1 @@ -eth_accounts | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +eth_accounts | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.eth_chainId.html b/docs/types/classes_Provider.ProviderRequestResults.eth_chainId.html index 1ececc9..e1e6a1b 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.eth_chainId.html +++ b/docs/types/classes_Provider.ProviderRequestResults.eth_chainId.html @@ -1 +1 @@ -eth_chainId | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +eth_chainId | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.eth_requestAccounts.html b/docs/types/classes_Provider.ProviderRequestResults.eth_requestAccounts.html index 8ed7ade..c86b78d 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.eth_requestAccounts.html +++ b/docs/types/classes_Provider.ProviderRequestResults.eth_requestAccounts.html @@ -1 +1 @@ -eth_requestAccounts | Grindery Wallet SDK - v0.5.3
eth_requestAccounts: string[]
\ No newline at end of file +eth_requestAccounts | Grindery Wallet SDK - v0.5.4
eth_requestAccounts: string[]
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.eth_sendTransaction.html b/docs/types/classes_Provider.ProviderRequestResults.eth_sendTransaction.html index 8e5b0f2..08403ed 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.eth_sendTransaction.html +++ b/docs/types/classes_Provider.ProviderRequestResults.eth_sendTransaction.html @@ -1 +1 @@ -eth_sendTransaction | Grindery Wallet SDK - v0.5.3
eth_sendTransaction: string
\ No newline at end of file +eth_sendTransaction | Grindery Wallet SDK - v0.5.4
eth_sendTransaction: string
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.personal_sign.html b/docs/types/classes_Provider.ProviderRequestResults.personal_sign.html index e0e6cad..c0b9fa2 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.personal_sign.html +++ b/docs/types/classes_Provider.ProviderRequestResults.personal_sign.html @@ -1 +1 @@ -personal_sign | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +personal_sign | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.wallet_addEthereumChain.html b/docs/types/classes_Provider.ProviderRequestResults.wallet_addEthereumChain.html index b49090b..2bec04b 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.wallet_addEthereumChain.html +++ b/docs/types/classes_Provider.ProviderRequestResults.wallet_addEthereumChain.html @@ -1 +1 @@ -wallet_addEthereumChain | Grindery Wallet SDK - v0.5.3
wallet_addEthereumChain: null
\ No newline at end of file +wallet_addEthereumChain | Grindery Wallet SDK - v0.5.4
wallet_addEthereumChain: null
\ No newline at end of file diff --git a/docs/types/classes_Provider.ProviderRequestResults.wallet_switchEthereumChain.html b/docs/types/classes_Provider.ProviderRequestResults.wallet_switchEthereumChain.html index 63e5397..946f82d 100644 --- a/docs/types/classes_Provider.ProviderRequestResults.wallet_switchEthereumChain.html +++ b/docs/types/classes_Provider.ProviderRequestResults.wallet_switchEthereumChain.html @@ -1 +1 @@ -wallet_switchEthereumChain | Grindery Wallet SDK - v0.5.3
wallet_switchEthereumChain: null
\ No newline at end of file +wallet_switchEthereumChain | Grindery Wallet SDK - v0.5.4
wallet_switchEthereumChain: null
\ No newline at end of file diff --git a/docs/types/classes_Rpc.RpcRequestResults.disconnect.html b/docs/types/classes_Rpc.RpcRequestResults.disconnect.html index 35c34e5..b12428d 100644 --- a/docs/types/classes_Rpc.RpcRequestResults.disconnect.html +++ b/docs/types/classes_Rpc.RpcRequestResults.disconnect.html @@ -1,2 +1,2 @@ -disconnect | Grindery Wallet SDK - v0.5.3
disconnect: boolean

Summary

disconnect method result

-
\ No newline at end of file +disconnect | Grindery Wallet SDK - v0.5.4
disconnect: boolean

Summary

disconnect method result

+
\ No newline at end of file diff --git a/docs/types/classes_Rpc.RpcRequestResults.getUserWalletAddress.html b/docs/types/classes_Rpc.RpcRequestResults.getUserWalletAddress.html index 1488593..a039dc6 100644 --- a/docs/types/classes_Rpc.RpcRequestResults.getUserWalletAddress.html +++ b/docs/types/classes_Rpc.RpcRequestResults.getUserWalletAddress.html @@ -1,2 +1,2 @@ -getUserWalletAddress | Grindery Wallet SDK - v0.5.3
getUserWalletAddress: string

Summary

getUserWalletAddress method result

-
\ No newline at end of file +getUserWalletAddress | Grindery Wallet SDK - v0.5.4
getUserWalletAddress: string

Summary

getUserWalletAddress method result

+
\ No newline at end of file diff --git a/docs/types/classes_Rpc.RpcRequestResults.request.html b/docs/types/classes_Rpc.RpcRequestResults.request.html index 8225014..c63714c 100644 --- a/docs/types/classes_Rpc.RpcRequestResults.request.html +++ b/docs/types/classes_Rpc.RpcRequestResults.request.html @@ -1,2 +1,2 @@ -request | Grindery Wallet SDK - v0.5.3
request: {
    requestToken: string;
}

Type declaration

  • requestToken: string

Summary

request method result

-
\ No newline at end of file +request | Grindery Wallet SDK - v0.5.4
request: {
    requestToken: string;
}

Type declaration

  • requestToken: string

Summary

request method result

+
\ No newline at end of file diff --git a/docs/types/classes_Rpc.RpcRequestResults.requestPairing.html b/docs/types/classes_Rpc.RpcRequestResults.requestPairing.html index 89f226c..3dfd8e1 100644 --- a/docs/types/classes_Rpc.RpcRequestResults.requestPairing.html +++ b/docs/types/classes_Rpc.RpcRequestResults.requestPairing.html @@ -1,2 +1,2 @@ -requestPairing | Grindery Wallet SDK - v0.5.3
requestPairing: {
    config?: WalletSDKConfig;
    connectUrl: string;
    connectUrlBrowser: string;
    miniAppPairingToken?: string;
    pairingToken: string;
    shortToken: string;
}

Type declaration

  • Optional config?: WalletSDKConfig
  • connectUrl: string
  • connectUrlBrowser: string
  • Optional miniAppPairingToken?: string
  • pairingToken: string
  • shortToken: string

Summary

requestPairing method result

-
\ No newline at end of file +requestPairing | Grindery Wallet SDK - v0.5.4
requestPairing: {
    config?: WalletSDKConfig;
    connectUrl: string;
    connectUrlBrowser: string;
    miniAppPairingToken?: string;
    pairingToken: string;
    shortToken: string;
}

Type declaration

  • Optional config?: WalletSDKConfig
  • connectUrl: string
  • connectUrlBrowser: string
  • Optional miniAppPairingToken?: string
  • pairingToken: string
  • shortToken: string

Summary

requestPairing method result

+
\ No newline at end of file diff --git a/docs/types/classes_Rpc.RpcRequestResults.trackClientEvent.html b/docs/types/classes_Rpc.RpcRequestResults.trackClientEvent.html index 434f048..3663a29 100644 --- a/docs/types/classes_Rpc.RpcRequestResults.trackClientEvent.html +++ b/docs/types/classes_Rpc.RpcRequestResults.trackClientEvent.html @@ -1,2 +1,2 @@ -trackClientEvent | Grindery Wallet SDK - v0.5.3
trackClientEvent: true

Summary

trackClientEvent method result

-
\ No newline at end of file +trackClientEvent | Grindery Wallet SDK - v0.5.4
trackClientEvent: true

Summary

trackClientEvent method result

+
\ No newline at end of file diff --git a/docs/types/classes_Rpc.RpcRequestResults.waitForPairingResult.html b/docs/types/classes_Rpc.RpcRequestResults.waitForPairingResult.html index 202f14e..9b89a2f 100644 --- a/docs/types/classes_Rpc.RpcRequestResults.waitForPairingResult.html +++ b/docs/types/classes_Rpc.RpcRequestResults.waitForPairingResult.html @@ -1,2 +1,2 @@ -waitForPairingResult | Grindery Wallet SDK - v0.5.3
waitForPairingResult: {
    session: {
        expiry: number;
        namespaces: {
            [key: string]: {
                accounts: string[];
                chains: string[];
                events: string[];
                methods: string[];
            };
        };
        sessionId: string;
    };
}

Type declaration

  • session: {
        expiry: number;
        namespaces: {
            [key: string]: {
                accounts: string[];
                chains: string[];
                events: string[];
                methods: string[];
            };
        };
        sessionId: string;
    }
    • expiry: number
    • namespaces: {
          [key: string]: {
              accounts: string[];
              chains: string[];
              events: string[];
              methods: string[];
          };
      }
      • [key: string]: {
            accounts: string[];
            chains: string[];
            events: string[];
            methods: string[];
        }
        • accounts: string[]
        • chains: string[]
        • events: string[]
        • methods: string[]
    • sessionId: string

Summary

waitForPairingResult method result

-
\ No newline at end of file +waitForPairingResult | Grindery Wallet SDK - v0.5.4
waitForPairingResult: {
    session: {
        expiry: number;
        namespaces: {
            [key: string]: {
                accounts: string[];
                chains: string[];
                events: string[];
                methods: string[];
            };
        };
        sessionId: string;
    };
}

Type declaration

  • session: {
        expiry: number;
        namespaces: {
            [key: string]: {
                accounts: string[];
                chains: string[];
                events: string[];
                methods: string[];
            };
        };
        sessionId: string;
    }
    • expiry: number
    • namespaces: {
          [key: string]: {
              accounts: string[];
              chains: string[];
              events: string[];
              methods: string[];
          };
      }
      • [key: string]: {
            accounts: string[];
            chains: string[];
            events: string[];
            methods: string[];
        }
        • accounts: string[]
        • chains: string[]
        • events: string[]
        • methods: string[]
    • sessionId: string

Summary

waitForPairingResult method result

+
\ No newline at end of file diff --git a/docs/types/classes_Rpc.RpcRequestResults.waitForRequestResult.html b/docs/types/classes_Rpc.RpcRequestResults.waitForRequestResult.html index bbcea9e..f19cee3 100644 --- a/docs/types/classes_Rpc.RpcRequestResults.waitForRequestResult.html +++ b/docs/types/classes_Rpc.RpcRequestResults.waitForRequestResult.html @@ -1,2 +1,2 @@ -waitForRequestResult | Grindery Wallet SDK - v0.5.3
waitForRequestResult: any

Summary

waitForRequestResult method result

-
\ No newline at end of file +waitForRequestResult | Grindery Wallet SDK - v0.5.4
waitForRequestResult: any

Summary

waitForRequestResult method result

+
\ No newline at end of file diff --git a/docs/types/classes_SdkStorage.SdkStorageKey.html b/docs/types/classes_SdkStorage.SdkStorageKey.html index 699e8e3..66690ac 100644 --- a/docs/types/classes_SdkStorage.SdkStorageKey.html +++ b/docs/types/classes_SdkStorage.SdkStorageKey.html @@ -1,3 +1,3 @@ -SdkStorageKey | Grindery Wallet SDK - v0.5.3
SdkStorageKey: keyof typeof SdkStorageKeys

Summary

SdkStorage key type

+SdkStorageKey | Grindery Wallet SDK - v0.5.4
SdkStorageKey: keyof typeof SdkStorageKeys

Summary

SdkStorage key type

Since

0.2.0

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/classes_SdkStorage.SdkStorageSnapshot.html b/docs/types/classes_SdkStorage.SdkStorageSnapshot.html index 251b96b..9426e8e 100644 --- a/docs/types/classes_SdkStorage.SdkStorageSnapshot.html +++ b/docs/types/classes_SdkStorage.SdkStorageSnapshot.html @@ -1 +1 @@ -SdkStorageSnapshot | Grindery Wallet SDK - v0.5.3
SdkStorageSnapshot: {
    [key in SdkStorageKeys]?: string
}
\ No newline at end of file +SdkStorageSnapshot | Grindery Wallet SDK - v0.5.4
SdkStorageSnapshot: {
    [key in SdkStorageKeys]?: string
}
\ No newline at end of file diff --git a/docs/types/classes_WalletSDK.WalletSDKConfig.html b/docs/types/classes_WalletSDK.WalletSDKConfig.html index 47cce39..ec792a9 100644 --- a/docs/types/classes_WalletSDK.WalletSDKConfig.html +++ b/docs/types/classes_WalletSDK.WalletSDKConfig.html @@ -1,4 +1,4 @@ -WalletSDKConfig | Grindery Wallet SDK - v0.5.3
WalletSDKConfig: {
    appId: string;
    appUrl: string;
    chainId?: string;
    pairingApiUrl?: string;
    redirectMode?: string;
    walletApiUrl?: string;
}

Type declaration

  • appId: string

    Summary

    The application ID, obtained in the Grindery bot by the dApp developer.

    +WalletSDKConfig | Grindery Wallet SDK - v0.5.4
    WalletSDKConfig: {
        appId: string;
        appUrl: string;
        chainId?: string;
        pairingApiUrl?: string;
        redirectMode?: string;
        walletApiUrl?: string;
    }

    Type declaration

    • appId: string

      Summary

      The application ID, obtained in the Grindery bot by the dApp developer.

    • appUrl: string

      Summary

      The application URL. If not provided, the current page URL will be used.

    • Optional chainId?: string

      Summary

      The default chain ID in CAIP-2 format.

    • Optional pairingApiUrl?: string

      Summary

      The pairing API URL. If not provided, the default Grindery API URL will be used.

      @@ -6,4 +6,4 @@

      Example

      'tg' | 'url' | 'close'
       
    • Optional walletApiUrl?: string

      Summary

      The wallet API URL. If not provided, the default Grindery API URL will be used.

      -
    \ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/utils_clientEvents.ClientEventName.html b/docs/types/utils_clientEvents.ClientEventName.html index 443fb74..2e28acd 100644 --- a/docs/types/utils_clientEvents.ClientEventName.html +++ b/docs/types/utils_clientEvents.ClientEventName.html @@ -1 +1 @@ -ClientEventName | Grindery Wallet SDK - v0.5.3
ClientEventName: keyof typeof ClientEventNames
\ No newline at end of file +ClientEventName | Grindery Wallet SDK - v0.5.4
ClientEventName: keyof typeof ClientEventNames
\ No newline at end of file diff --git a/docs/types/utils_user.User.html b/docs/types/utils_user.User.html index a410766..c661818 100644 --- a/docs/types/utils_user.User.html +++ b/docs/types/utils_user.User.html @@ -1 +1 @@ -User | Grindery Wallet SDK - v0.5.3
User: {
    dateAdded: string;
    patchwallet: string;
    photoUrl?: string;
    userHandle: string;
    userName: string;
    userTelegramID: string;
}

Type declaration

  • dateAdded: string
  • patchwallet: string
  • Optional photoUrl?: string
  • userHandle: string
  • userName: string
  • userTelegramID: string
\ No newline at end of file +User | Grindery Wallet SDK - v0.5.4
User: {
    dateAdded: string;
    patchwallet: string;
    photoUrl?: string;
    userHandle: string;
    userName: string;
    userTelegramID: string;
}

Type declaration

  • dateAdded: string
  • patchwallet: string
  • Optional photoUrl?: string
  • userHandle: string
  • userName: string
  • userTelegramID: string
\ No newline at end of file diff --git a/docs/variables/classes_ProviderError.ProviderErrors.html b/docs/variables/classes_ProviderError.ProviderErrors.html index 320c187..6070d85 100644 --- a/docs/variables/classes_ProviderError.ProviderErrors.html +++ b/docs/variables/classes_ProviderError.ProviderErrors.html @@ -1 +1 @@ -ProviderErrors | Grindery Wallet SDK - v0.5.3
ProviderErrors: {
    ChainDisconnected: ProviderError;
    Disconnected: ProviderError;
    NoAppId: ProviderError;
    NoResult: ProviderError;
    PairingFailed: ProviderError;
    Unauthorized: ProviderError;
    UnsupportedMethod: ProviderError;
    UserRejected: ProviderError;
} = ...

Type declaration

\ No newline at end of file +ProviderErrors | Grindery Wallet SDK - v0.5.4
ProviderErrors: {
    ChainDisconnected: ProviderError;
    Disconnected: ProviderError;
    NoAppId: ProviderError;
    NoResult: ProviderError;
    PairingFailed: ProviderError;
    Unauthorized: ProviderError;
    UnsupportedMethod: ProviderError;
    UserRejected: ProviderError;
} = ...

Type declaration

\ No newline at end of file diff --git a/docs/variables/utils_chains.CHAINS.html b/docs/variables/utils_chains.CHAINS.html index db77ee2..8f66d0f 100644 --- a/docs/variables/utils_chains.CHAINS.html +++ b/docs/variables/utils_chains.CHAINS.html @@ -1,4 +1,4 @@ -CHAINS | Grindery Wallet SDK - v0.5.3
CHAINS: string[] = ...

Supported chains list

+CHAINS | Grindery Wallet SDK - v0.5.4
CHAINS: string[] = ...

Supported chains list

Description

Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain

Since

0.3.0

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/variables/utils_providerInfo.providerInfo.html b/docs/variables/utils_providerInfo.providerInfo.html index 9e16871..e0af2ef 100644 --- a/docs/variables/utils_providerInfo.providerInfo.html +++ b/docs/variables/utils_providerInfo.providerInfo.html @@ -1 +1 @@ -providerInfo | Grindery Wallet SDK - v0.5.3
\ No newline at end of file +providerInfo | Grindery Wallet SDK - v0.5.4
\ No newline at end of file diff --git a/example/dist/classes/Provider.d.ts b/example/dist/classes/Provider.d.ts index 2c4b44c..341c813 100644 --- a/example/dist/classes/Provider.d.ts +++ b/example/dist/classes/Provider.d.ts @@ -73,6 +73,18 @@ export declare class Provider extends EventEmitter { * @returns {T} The result of the request */ request({ method, params, }: ProviderRequestArguments): Promise; + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + sendAsync({ method, params }: ProviderRequestArguments, callback: Function): void; private storage; private rpc; /** diff --git a/example/dist/grindery-wallet-sdk.cjs.development.js b/example/dist/grindery-wallet-sdk.cjs.development.js index c9b7b14..b8e9e1a 100644 --- a/example/dist/grindery-wallet-sdk.cjs.development.js +++ b/example/dist/grindery-wallet-sdk.cjs.development.js @@ -1235,7 +1235,29 @@ var Provider = /*#__PURE__*/function (_EventEmitter) { return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/example/dist/grindery-wallet-sdk.cjs.development.js.map b/example/dist/grindery-wallet-sdk.cjs.development.js.map index a5a977a..2073284 100644 --- a/example/dist/grindery-wallet-sdk.cjs.development.js.map +++ b/example/dist/grindery-wallet-sdk.cjs.development.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.cjs.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.cjs.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/example/dist/grindery-wallet-sdk.cjs.production.min.js b/example/dist/grindery-wallet-sdk.cjs.production.min.js index d4d8e52..946f4ba 100644 --- a/example/dist/grindery-wallet-sdk.cjs.production.min.js +++ b/example/dist/grindery-wallet-sdk.cjs.production.min.js @@ -1,2 +1,2 @@ -"use strict";function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(e=function(){return!!t})()}function t(){t=function(){return n};var e,n={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},n}function n(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function r(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var a=e.apply(t,r);function s(e){n(a,i,o,s,c,"next",e)}function c(e){n(a,i,o,s,c,"throw",e)}s(void 0)}))}}function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),d=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},h={uuid:d(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},f=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return o(t,e),t}(c(Error)),g={PairingFailed:new f("Pairing failed",4900),Disconnected:new f("Disconnected",4900),UnsupportedMethod:new f("Unsupported Method",4200),Unauthorized:new f("Unauthorized",4100),NoResult:new f("No result",4900),NoAppId:new f("App ID is required",4900),UserRejected:new f("User Rejected Request",4001),ChainDisconnected:new f("Chain Disconnected",4901)},w=function(e){return e instanceof f?new f(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new f(e.message||"Unknown error",4900,e):new f("Unknown error",4900,e)},v=["eip155:137","eip155:56","eip155:204"],y=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},m=function(e){return"eip155:"+parseInt(e,16)},N="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(p||(p={}));var I,M=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||d(),chainId:this.getSnapshot().chainId||v[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(N)||"{}")}catch(e){throw localStorage.setItem(N,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(N,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(I||(I={}));var D,T=function(){function e(e){this.config=void 0,this.config=e}var n=e.prototype;return n.sendAndWaitRpcRequest=function(){var e=r(t().mark((function e(n,r,i){var o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(n,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),n.sendRpcRequest=function(){var e=r(t().mark((function e(n,r){var i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new M,e.next=3,this.sendRpcApiRequest(I.request,{sessionId:i.getValue(p.sessionId),scope:i.getValue(p.chainId),request:{method:n,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.waitRpcRequest=function(){var e=r(t().mark((function e(n,r){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(I.waitForRequestResult,{requestToken:n,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.sendRpcApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+n,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new f(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw g.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new f(e.t0.message,500,e.t0);case 18:throw new f("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(D||(D={}));var k,j=function(e){function n(n){var i,o,a,s,c,l,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new M,o.rpc=void 0,o.switchChain=function(){var e=r(t().mark((function e(n){var r,i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=m(r=n.chainId),v.includes(i)){e.next=4;break}throw w(g.ChainDisconnected);case 4:return o.storage.setValue(p.chainId,i),o.emit(u.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((i={})[D.eth_requestAccounts]=(f=r(t().mark((function e(n){var r,i,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:D.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(p.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:o.storage.getValue(p.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(p.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw g.PairingFailed;case 19:return e.next=21,o.request({method:D.eth_accounts,params:n||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(I.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(p.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw g.PairingFailed;case 34:return o.storage.setValue(p.pairingToken,i.pairingToken),o.storage.setValue(p.connectUrl,i.connectUrl),o.storage.setValue(p.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(p.shortToken,i.shortToken),o.emit(u.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(p.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw g.PairingFailed;case 45:return o.storage.setValue(p.pairingToken,""),o.storage.setValue(p.connectUrl,""),o.storage.setValue(p.connectUrlBrowser,""),o.storage.setValue(p.shortToken,""),e.next=51,o.request({method:D.eth_accounts,params:n||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),i[D.eth_accounts]=(h=r(t().mark((function e(n){var r;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(D.eth_accounts,n?Array.isArray(n)?n:[n]:[]);case 3:return o.storage.setValue(p.address,(r=e.sent)[0]||""),o.emit(u.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),w(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),i[D.eth_sendTransaction]=(d=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.eth_sendTransaction,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),i[D.personal_sign]=(l=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.personal_sign,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return l.apply(this,arguments)}),i[D.gws_disconnect]=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(I.disconnect,{sessionToken:o.storage.getValue(p.sessionId)});case 3:return n=e.sent,o.emit(u.disconnect,g.Disconnected),e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),w(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),i[D.eth_chainId]=(c=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",y(o.storage.getValue(p.chainId)||o.config.chainId||v[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),i[D.wallet_addEthereumChain]=(s=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw w(g.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),i[D.wallet_switchEthereumChain]=(a=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),i),o.config=n,o.rpc=new T(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(u.connect,{chainId:y(o.storage.getValue(p.chainId)||o.config.chainId||v[0])}),o.restorePairing(),o.restoreSession()})),o}o(n,e);var i=n.prototype;return i.isConnected=function(){return!0},i.request=function(){var e=r(t().mark((function e(n){var r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.method,a=n.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.restorePairing=function(){var e=r(t().mark((function e(){var n,r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),r=this.storage.getValue(p.sessionId),!n||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:n});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(p.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw g.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(p.address,a[0]||""),this.emit(u.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),i.restoreSession=function(){var e=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),!this.storage.getValue(p.sessionId)||n){e.next=11;break}return e.prev=3,e.next=6,this.request({method:D.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),i.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},i.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:h,provider:this})}))},i.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},n}(l);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(k||(k={}));var A,x=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o,a,s,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new M,a=o.getValue(p.sessionId),s=o.getValue(p.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:n,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+n);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),b=function(){function e(e){var t,n,r,o,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(o=window.Grindery)?void 0:o.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new M,this.user=null,this.config=i({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(k.walletConnected,{wallets:t})})),this.on(u.disconnect,(function(){e.trackClientEvent(k.walletDisconnected)}))},n.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(p.pairingToken,t)},e}(),U=b;null!=(A=window.Grindery)&&A.WalletSDK&&window.Grindery.WalletSDK instanceof b||(window.Grindery=i({},window.Grindery||{},{WalletSDK:new b})),exports.GrinderyWalletSDK=U; +"use strict";function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(e=function(){return!!t})()}function t(){t=function(){return n};var e,n={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:j(e,n,a)}),i}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var d="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function n(r,o,a,s){var c=h(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function j(t,n,r){var i=d;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===d)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=h(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=h(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},n}function n(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function r(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var a=e.apply(t,r);function s(e){n(a,i,o,s,c,"next",e)}function c(e){n(a,i,o,s,c,"throw",e)}s(void 0)}))}}function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},d={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},f=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return o(t,e),t}(c(Error)),g={PairingFailed:new f("Pairing failed",4900),Disconnected:new f("Disconnected",4900),UnsupportedMethod:new f("Unsupported Method",4200),Unauthorized:new f("Unauthorized",4100),NoResult:new f("No result",4900),NoAppId:new f("App ID is required",4900),UserRejected:new f("User Rejected Request",4001),ChainDisconnected:new f("Chain Disconnected",4901)},w=function(e){return e instanceof f?new f(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new f(e.message||"Unknown error",4900,e):new f("Unknown error",4900,e)},v=["eip155:137","eip155:56","eip155:204"],y=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},m=function(e){return"eip155:"+parseInt(e,16)},N="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(p||(p={}));var I,M=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||v[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(N)||"{}")}catch(e){throw localStorage.setItem(N,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(N,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(I||(I={}));var D,T=function(){function e(e){this.config=void 0,this.config=e}var n=e.prototype;return n.sendAndWaitRpcRequest=function(){var e=r(t().mark((function e(n,r,i){var o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(n,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),n.sendRpcRequest=function(){var e=r(t().mark((function e(n,r){var i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new M,e.next=3,this.sendRpcApiRequest(I.request,{sessionId:i.getValue(p.sessionId),scope:i.getValue(p.chainId),request:{method:n,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.waitRpcRequest=function(){var e=r(t().mark((function e(n,r){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(I.waitForRequestResult,{requestToken:n,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),n.sendRpcApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+n,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new f(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw g.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new f(e.t0.message,500,e.t0);case 18:throw new f("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(D||(D={}));var k,A=function(e){function n(n){var i,o,a,s,c,l,h,d,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new M,o.rpc=void 0,o.switchChain=function(){var e=r(t().mark((function e(n){var r,i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=m(r=n.chainId),v.includes(i)){e.next=4;break}throw w(g.ChainDisconnected);case 4:return o.storage.setValue(p.chainId,i),o.emit(u.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((i={})[D.eth_requestAccounts]=(f=r(t().mark((function e(n){var r,i,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:D.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(p.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:o.storage.getValue(p.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(p.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw g.PairingFailed;case 19:return e.next=21,o.request({method:D.eth_accounts,params:n||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(I.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(p.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw g.PairingFailed;case 34:return o.storage.setValue(p.pairingToken,i.pairingToken),o.storage.setValue(p.connectUrl,i.connectUrl),o.storage.setValue(p.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(p.shortToken,i.shortToken),o.emit(u.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(p.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw g.PairingFailed;case 45:return o.storage.setValue(p.pairingToken,""),o.storage.setValue(p.connectUrl,""),o.storage.setValue(p.connectUrlBrowser,""),o.storage.setValue(p.shortToken,""),e.next=51,o.request({method:D.eth_accounts,params:n||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),i[D.eth_accounts]=(d=r(t().mark((function e(n){var r;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(D.eth_accounts,n?Array.isArray(n)?n:[n]:[]);case 3:return o.storage.setValue(p.address,(r=e.sent)[0]||""),o.emit(u.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),w(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return d.apply(this,arguments)}),i[D.eth_sendTransaction]=(h=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.eth_sendTransaction,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return h.apply(this,arguments)}),i[D.personal_sign]=(l=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(D.personal_sign,n?Array.isArray(n)?n:[n]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return l.apply(this,arguments)}),i[D.gws_disconnect]=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(I.disconnect,{sessionToken:o.storage.getValue(p.sessionId)});case 3:return n=e.sent,o.emit(u.disconnect,g.Disconnected),e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),w(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),i[D.eth_chainId]=(c=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",y(o.storage.getValue(p.chainId)||o.config.chainId||v[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),i[D.wallet_addEthereumChain]=(s=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw w(g.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),i[D.wallet_switchEthereumChain]=(a=r(t().mark((function e(n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),i),o.config=n,o.rpc=new T(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(u.connect,{chainId:y(o.storage.getValue(p.chainId)||o.config.chainId||v[0])}),o.restorePairing(),o.restoreSession()})),o}o(n,e);var i=n.prototype;return i.isConnected=function(){return!0},i.request=function(){var e=r(t().mark((function e(n){var r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.method,a=n.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),i.sendAsync=function(e,t){var n,r;null==(n=(r=this.methods)[e.method])||n.call(r,e.params).then((function(e){t(null,e)})).catch((function(e){t(e)}))},i.restorePairing=function(){var e=r(t().mark((function e(){var n,r,i,o,a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),r=this.storage.getValue(p.sessionId),!n||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(I.waitForPairingResult,{pairingToken:n});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(p.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw g.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(p.address,a[0]||""),this.emit(u.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),i.restoreSession=function(){var e=r(t().mark((function e(){var n;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.storage.getValue(p.pairingToken),!this.storage.getValue(p.sessionId)||n){e.next=11;break}return e.prev=3,e.next=6,this.request({method:D.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),i.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},i.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:d,provider:this})}))},i.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},n}(l);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(k||(k={}));var j,x=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=r(t().mark((function e(n,r){var i,o,a,s,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new M,a=o.getValue(p.sessionId),s=o.getValue(p.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:n,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+n);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),b=function(){function e(e){var t,n,r,o,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(o=window.Grindery)?void 0:o.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new M,this.user=null,this.config=i({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(k.walletConnected,{wallets:t})})),this.on(u.disconnect,(function(){e.trackClientEvent(k.walletDisconnected)}))},n.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(p.pairingToken,t)},e}(),U=b;null!=(j=window.Grindery)&&j.WalletSDK&&window.Grindery.WalletSDK instanceof b||(window.Grindery=i({},window.Grindery||{},{WalletSDK:new b})),exports.GrinderyWalletSDK=U; //# sourceMappingURL=grindery-wallet-sdk.cjs.production.min.js.map diff --git a/example/dist/grindery-wallet-sdk.cjs.production.min.js.map b/example/dist/grindery-wallet-sdk.cjs.production.min.js.map index aaa8358..1718950 100644 --- a/example/dist/grindery-wallet-sdk.cjs.production.min.js.map +++ b/example/dist/grindery-wallet-sdk.cjs.production.min.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.cjs.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.cjs.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file diff --git a/example/dist/grindery-wallet-sdk.esm.js b/example/dist/grindery-wallet-sdk.esm.js index 55a6645..48f689b 100644 --- a/example/dist/grindery-wallet-sdk.esm.js +++ b/example/dist/grindery-wallet-sdk.esm.js @@ -1231,7 +1231,29 @@ var Provider = /*#__PURE__*/function (_EventEmitter) { return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/example/dist/grindery-wallet-sdk.esm.js.map b/example/dist/grindery-wallet-sdk.esm.js.map index 82c78eb..2b16a5b 100644 --- a/example/dist/grindery-wallet-sdk.esm.js.map +++ b/example/dist/grindery-wallet-sdk.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.esm.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.esm.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/example/dist/grindery-wallet-sdk.umd.development.js b/example/dist/grindery-wallet-sdk.umd.development.js index ec26c96..0810324 100644 --- a/example/dist/grindery-wallet-sdk.umd.development.js +++ b/example/dist/grindery-wallet-sdk.umd.development.js @@ -1237,7 +1237,29 @@ return _request.apply(this, arguments); } return request; - }(); + }() + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + ; + _proto.sendAsync = function sendAsync(_ref12, callback) { + var _this$methods$method2, _this$methods3; + var method = _ref12.method, + params = _ref12.params; + (_this$methods$method2 = (_this$methods3 = this.methods)[method]) == null || _this$methods$method2.call(_this$methods3, params).then(function (res) { + callback(null, res); + })["catch"](function (error) { + callback(error); + }); + }; /** * @summary Restores the pairing process if pairing token is stored in the local storage * @private diff --git a/example/dist/grindery-wallet-sdk.umd.development.js.map b/example/dist/grindery-wallet-sdk.umd.development.js.map index f28ea88..5566006 100644 --- a/example/dist/grindery-wallet-sdk.umd.development.js.map +++ b/example/dist/grindery-wallet-sdk.umd.development.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.umd.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.umd.development.js","sources":["../src/classes/EventEmitter.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/SdkStorage.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/utils/getConfigFromDataAttributes.ts","../src/classes/WalletSDK.ts","../src/index.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n"],"names":["ProviderEvents","EventEmitter","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","errorResponse","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","SdkStorageKeys","SdkStorage","getValue","key","value","getSnapshot","setValue","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","RpcMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_callee$","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_callee2$","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_callee3$","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_callee4$","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","ProviderMethodNames","Provider","_EventEmitter","_this$methods","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","_ref3","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","_ref4","isArray","address","accountsChanged","eth_sendTransaction","_ref5","personal_sign","_ref6","_callee5","_callee5$","_context5","gws_disconnect","_callee6","_callee6$","_context6","disconnect","sessionToken","eth_chainId","_ref8","_callee7","_","_callee7$","_context7","wallet_addEthereumChain","_ref9","_callee8","_callee8$","_context8","wallet_switchEthereumChain","_ref10","_callee9","_callee9$","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_callee10$","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_callee11$","_context11","namespaces","map","account","_restoreSession","_callee12","_callee12$","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","ClientEventNames","WalletAPI","sendApiRequest","_sendApiRequest","_window$Grindery","Grindery","WalletSDK","walletApiUrl","Authorization","ok","getConfigFromDataAttributes","attributesMap","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","isGrinderySrc","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","onWalletConnect","wallets","walletConnected","onWalletDisconnect","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK","init"],"mappings":"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"} \ No newline at end of file diff --git a/example/dist/grindery-wallet-sdk.umd.production.min.js b/example/dist/grindery-wallet-sdk.umd.production.min.js index 6f9f042..dd8df56 100644 --- a/example/dist/grindery-wallet-sdk.umd.production.min.js +++ b/example/dist/grindery-wallet-sdk.umd.production.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["grindery-wallet-sdk"]={})}(this,(function(e){"use strict";function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(t=function(){return!!e})()}function n(){n=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},f={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},g=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return a(t,e),t}(u(Error)),w={PairingFailed:new g("Pairing failed",4900),Disconnected:new g("Disconnected",4900),UnsupportedMethod:new g("Unsupported Method",4200),Unauthorized:new g("Unauthorized",4100),NoResult:new g("No result",4900),NoAppId:new g("App ID is required",4900),UserRejected:new g("User Rejected Request",4001),ChainDisconnected:new g("Chain Disconnected",4901)},v=function(e){return e instanceof g?new g(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new g(e.message||"Unknown error",4900,e):new g("Unknown error",4900,e)},y=["eip155:137","eip155:56","eip155:204"],m=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},N=function(e){return"eip155:"+parseInt(e,16)},I="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(l||(l={}));var M,D=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||y[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(I)||"{}")}catch(e){throw localStorage.setItem(I,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(I,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(M||(M={}));var T,k=function(){function e(e){this.config=void 0,this.config=e}var t=e.prototype;return t.sendAndWaitRpcRequest=function(){var e=i(n().mark((function e(t,r,i){var o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(t,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),t.sendRpcRequest=function(){var e=i(n().mark((function e(t,r){var i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new D,e.next=3,this.sendRpcApiRequest(M.request,{sessionId:i.getValue(l.sessionId),scope:i.getValue(l.chainId),request:{method:t,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.waitRpcRequest=function(){var e=i(n().mark((function e(t,r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(M.waitForRequestResult,{requestToken:t,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.sendRpcApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+t,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new g(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw w.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new g(e.t0.message,500,e.t0);case 18:throw new g("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(T||(T={}));var j,A=function(e){function t(t){var r,o,a,s,c,u,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new D,o.rpc=void 0,o.switchChain=function(){var e=i(n().mark((function e(t){var r,i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=N(r=t.chainId),y.includes(i)){e.next=4;break}throw v(w.ChainDisconnected);case 4:return o.storage.setValue(l.chainId,i),o.emit(p.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((r={})[T.eth_requestAccounts]=(f=i(n().mark((function e(t){var r,i,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:T.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(l.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:o.storage.getValue(l.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(l.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw w.PairingFailed;case 19:return e.next=21,o.request({method:T.eth_accounts,params:t||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(M.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(l.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw w.PairingFailed;case 34:return o.storage.setValue(l.pairingToken,i.pairingToken),o.storage.setValue(l.connectUrl,i.connectUrl),o.storage.setValue(l.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(l.shortToken,i.shortToken),o.emit(p.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(l.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw w.PairingFailed;case 45:return o.storage.setValue(l.pairingToken,""),o.storage.setValue(l.connectUrl,""),o.storage.setValue(l.connectUrlBrowser,""),o.storage.setValue(l.shortToken,""),e.next=51,o.request({method:T.eth_accounts,params:t||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),r[T.eth_accounts]=(h=i(n().mark((function e(t){var r;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(T.eth_accounts,t?Array.isArray(t)?t:[t]:[]);case 3:return o.storage.setValue(l.address,(r=e.sent)[0]||""),o.emit(p.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),v(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),r[T.eth_sendTransaction]=(d=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.eth_sendTransaction,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),r[T.personal_sign]=(u=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.personal_sign,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)}),r[T.gws_disconnect]=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(M.disconnect,{sessionToken:o.storage.getValue(l.sessionId)});case 3:return t=e.sent,o.emit(p.disconnect,w.Disconnected),e.abrupt("return",t);case 8:throw e.prev=8,e.t0=e.catch(0),v(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),r[T.eth_chainId]=(c=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",m(o.storage.getValue(l.chainId)||o.config.chainId||y[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),r[T.wallet_addEthereumChain]=(s=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw v(w.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),r[T.wallet_switchEthereumChain]=(a=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),r),o.config=t,o.rpc=new k(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(p.connect,{chainId:m(o.storage.getValue(l.chainId)||o.config.chainId||y[0])}),o.restorePairing(),o.restoreSession()})),o}a(t,e);var r=t.prototype;return r.isConnected=function(){return!0},r.request=function(){var e=i(n().mark((function e(t){var r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.method,a=t.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.restorePairing=function(){var e=i(n().mark((function e(){var t,r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),r=this.storage.getValue(l.sessionId),!t||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:t});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(l.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw w.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(l.address,a[0]||""),this.emit(p.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),r.restoreSession=function(){var e=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),!this.storage.getValue(l.sessionId)||t){e.next=11;break}return e.prev=3,e.next=6,this.request({method:T.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),r.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},r.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:f,provider:this})}))},r.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},t}(d);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(j||(j={}));var x,b=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o,a,s,c;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new D,a=o.getValue(l.sessionId),s=o.getValue(l.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:t,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+t);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),U=function(){function e(e){var t,n,r,i,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(i=window.Grindery)?void 0:i.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new D,this.user=null,this.config=o({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(j.walletConnected,{wallets:t})})),this.on(p.disconnect,(function(){e.trackClientEvent(j.walletDisconnected)}))},t.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(l.pairingToken,t)},e}(),L=U;null!=(x=window.Grindery)&&x.WalletSDK&&window.Grindery.WalletSDK instanceof U||(window.Grindery=o({},window.Grindery||{},{WalletSDK:new U})),e.GrinderyWalletSDK=L,Object.defineProperty(e,"__esModule",{value:!0})})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["grindery-wallet-sdk"]={})}(this,(function(e){"use strict";function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(t=function(){return!!e})()}function n(){n=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function p(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{p({},"")}catch(e){p=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=Object.create((t&&t.prototype instanceof y?t:y).prototype),a=new L(r||[]);return o(i,"_invoke",{value:A(e,n,a)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var h="suspendedStart",f="suspendedYield",g="executing",w="completed",v={};function y(){}function m(){}function N(){}var I={};p(I,s,(function(){return this}));var M=Object.getPrototypeOf,D=M&&M(M(O([])));D&&D!==r&&i.call(D,s)&&(I=D);var T=N.prototype=y.prototype=Object.create(I);function k(e){["next","throw","return"].forEach((function(t){p(e,t,(function(e){return this._invoke(t,e)}))}))}function j(e,t){function n(r,o,a,s){var c=d(e[r],e,o);if("throw"!==c.type){var u=c.arg,p=u.value;return p&&"object"==typeof p&&i.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function A(t,n,r){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===w){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=x(s,r);if(c){if(c===v)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===h)throw i=w,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=d(t,n,r);if("normal"===u.type){if(i=r.done?w:f,u.arg===v)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=w,r.method="throw",r.arg=u.arg)}}}function x(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,x(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function U(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function O(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),U(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;U(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r Event:",e,n[0]),this.events.get(e).forEach((function(e){e.apply(void 0,n)}))),this},e}(),h=function(){for(var e="";e.length<32;)e+=Math.random().toString(16).substr(2);var t=(3&parseInt(e.substr(16,1),16)|8).toString(16);return e.substr(0,8)+"-"+e.substr(8,4)+"-4"+e.substr(13,3)+"-"+t+e.substr(17,3)+"-"+e.substr(20,12)},f={uuid:h(),name:"Grindery Wallet",rdns:"com.grindery.wallet",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="},g=function(e){function t(t,n,r){var i;return(i=e.call(this,t)||this).name="GrinderyWalletProviderError",i.code=void 0,i.data=void 0,i.code=n,i.data=r,i}return a(t,e),t}(u(Error)),w={PairingFailed:new g("Pairing failed",4900),Disconnected:new g("Disconnected",4900),UnsupportedMethod:new g("Unsupported Method",4200),Unauthorized:new g("Unauthorized",4100),NoResult:new g("No result",4900),NoAppId:new g("App ID is required",4900),UserRejected:new g("User Rejected Request",4001),ChainDisconnected:new g("Chain Disconnected",4901)},v=function(e){return e instanceof g?new g(e.message||"Unknown error",e.code||4900,e.data):e instanceof Error?new g(e.message||"Unknown error",4900,e):new g("Unknown error",4900,e)},y=["eip155:137","eip155:56","eip155:204"],m=function(e){return"0x"+parseInt(e.split(":")[1],10).toString(16)},N=function(e){return"eip155:"+parseInt(e,16)},I="GrinderyWalletProvider";!function(e){e.pairingToken="pairingToken",e.sessionId="sessionId",e.connectUrl="connectUrl",e.connectUrlBrowser="connectUrlBrowser",e.shortToken="shortToken",e.clientId="clientId",e.address="address",e.chainId="chainId"}(l||(l={}));var M,D=function(){function e(){}var t=e.prototype;return t.getValue=function(e){return this.getSnapshot()[e]||""},t.setValue=function(e,t){var n=this.getSnapshot();return n[e]=t,this.saveSnapshot(n),t},t.clear=function(){this.saveSnapshot({clientId:this.getSnapshot().clientId||h(),chainId:this.getSnapshot().chainId||y[0]})},t.getSnapshot=function(){try{return JSON.parse(localStorage.getItem(I)||"{}")}catch(e){throw localStorage.setItem(I,JSON.stringify({})),new Error("Error parsing storage")}},t.saveSnapshot=function(e){localStorage.setItem(I,JSON.stringify(e))},e}();!function(e){e.requestPairing="requestPairing",e.waitForPairingResult="waitForPairingResult",e.request="request",e.waitForRequestResult="waitForRequestResult",e.disconnect="disconnect",e.getUserWalletAddress="getUserWalletAddress",e.trackClientEvent="trackClientEvent"}(M||(M={}));var T,k=function(){function e(e){this.config=void 0,this.config=e}var t=e.prototype;return t.sendAndWaitRpcRequest=function(){var e=i(n().mark((function e(t,r,i){var o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcRequest(t,r);case 2:return o=e.sent,e.next=5,this.waitRpcRequest(o.requestToken,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}(),t.sendRpcRequest=function(){var e=i(n().mark((function e(t,r){var i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new D,e.next=3,this.sendRpcApiRequest(M.request,{sessionId:i.getValue(l.sessionId),scope:i.getValue(l.chainId),request:{method:t,params:r}});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.waitRpcRequest=function(){var e=i(n().mark((function e(t,r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRpcApiRequest(M.waitForRequestResult,{requestToken:t,timeout:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.sendRpcApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch(this.config.pairingApiUrl||"https://walletconnect-api.grindery.com",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"gws_"+t,params:r||[]})});case 3:return i=e.sent,e.next=6,i.json();case 6:if(!(o=e.sent).error){e.next=9;break}throw new g(o.error.message,o.error.code);case 9:if(o.result){e.next=11;break}throw w.NoResult;case 11:return e.abrupt("return",o.result);case 14:if(e.prev=14,e.t0=e.catch(0),!(e.t0 instanceof Error)){e.next=18;break}throw new g(e.t0.message,500,e.t0);case 18:throw new g("Server error",500,e.t0);case 19:case"end":return e.stop()}}),e,this,[[0,14]])})));return function(t,n){return e.apply(this,arguments)}}(),e}();!function(e){e.eth_requestAccounts="eth_requestAccounts",e.eth_accounts="eth_accounts",e.personal_sign="personal_sign",e.eth_sendTransaction="eth_sendTransaction",e.gws_disconnect="gws_disconnect",e.eth_chainId="eth_chainId",e.wallet_addEthereumChain="wallet_addEthereumChain",e.wallet_switchEthereumChain="wallet_switchEthereumChain"}(T||(T={}));var j,A=function(e){function t(t){var r,o,a,s,c,u,d,h,f;return(o=e.call(this)||this).isGrinderyWallet=!0,o.config=void 0,o.storage=new D,o.rpc=void 0,o.switchChain=function(){var e=i(n().mark((function e(t){var r,i;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=N(r=t.chainId),y.includes(i)){e.next=4;break}throw v(w.ChainDisconnected);case 4:return o.storage.setValue(l.chainId,i),o.emit(p.chainChanged,{chainId:r}),e.abrupt("return",null);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),o.methods=((r={})[T.eth_requestAccounts]=(f=i(n().mark((function e(t){var r,i,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.storage.getValue("sessionId")){e.next=10;break}return e.prev=1,e.next=4,o.request({method:T.eth_accounts,params:[]});case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(1),o.storage.setValue(l.sessionId,"");case 10:if(!o.storage.getValue("pairingToken")){e.next=27;break}return e.prev=11,e.next=14,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:o.storage.getValue(l.pairingToken)});case 14:if(r=e.sent,o.storage.clear(),o.storage.setValue(l.sessionId,r.session.sessionId),r.session.sessionId){e.next=19;break}throw w.PairingFailed;case 19:return e.next=21,o.request({method:T.eth_accounts,params:t||[]});case 21:return e.abrupt("return",e.sent);case 24:e.prev=24,e.t1=e.catch(11),o.storage.clear();case 27:return e.prev=27,o.storage.clear(),e.next=31,o.rpc.sendRpcApiRequest(M.requestPairing,{appId:o.config.appId||"",clientId:o.storage.getValue(l.clientId),redirectMode:o.config.redirectMode,redirectUrl:o.config.appUrl});case 31:if((i=e.sent).pairingToken&&i.connectUrl){e.next=34;break}throw w.PairingFailed;case 34:return o.storage.setValue(l.pairingToken,i.pairingToken),o.storage.setValue(l.connectUrl,i.connectUrl),o.storage.setValue(l.connectUrlBrowser,i.connectUrlBrowser),o.storage.setValue(l.shortToken,i.shortToken),o.emit(p.pair,{config:o.config,shortToken:i.shortToken,connectUrl:i.connectUrl,connectUrlBrowser:i.connectUrlBrowser,miniAppPairingToken:i.miniAppPairingToken}),e.next=41,o.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:i.pairingToken});case 41:if(o.storage.setValue(l.sessionId,(a=e.sent).session.sessionId),a.session.sessionId){e.next=45;break}throw w.PairingFailed;case 45:return o.storage.setValue(l.pairingToken,""),o.storage.setValue(l.connectUrl,""),o.storage.setValue(l.connectUrlBrowser,""),o.storage.setValue(l.shortToken,""),e.next=51,o.request({method:T.eth_accounts,params:t||[]});case 51:return e.abrupt("return",e.sent);case 54:throw e.prev=54,e.t2=e.catch(27),e.t2;case 57:case"end":return e.stop()}}),e,null,[[1,7],[11,24],[27,54]])}))),function(e){return f.apply(this,arguments)}),r[T.eth_accounts]=(h=i(n().mark((function e(t){var r;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendAndWaitRpcRequest(T.eth_accounts,t?Array.isArray(t)?t:[t]:[]);case 3:return o.storage.setValue(l.address,(r=e.sent)[0]||""),o.emit(p.accountsChanged,r),e.abrupt("return",r);case 9:throw e.prev=9,e.t0=e.catch(0),v(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])}))),function(e){return h.apply(this,arguments)}),r[T.eth_sendTransaction]=(d=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.eth_sendTransaction,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return d.apply(this,arguments)}),r[T.personal_sign]=(u=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.rpc.sendAndWaitRpcRequest(T.personal_sign,t?Array.isArray(t)?t:[t]:[]);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)}),r[T.gws_disconnect]=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o.rpc.sendRpcApiRequest(M.disconnect,{sessionToken:o.storage.getValue(l.sessionId)});case 3:return t=e.sent,o.emit(p.disconnect,w.Disconnected),e.abrupt("return",t);case 8:throw e.prev=8,e.t0=e.catch(0),v(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])}))),r[T.eth_chainId]=(c=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",m(o.storage.getValue(l.chainId)||o.config.chainId||y[0]));case 1:case"end":return e.stop()}}),e)}))),function(e){return c.apply(this,arguments)}),r[T.wallet_addEthereumChain]=(s=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw v(w.UserRejected);case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),r[T.wallet_switchEthereumChain]=(a=i(n().mark((function e(t){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.switchChain(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)}),r),o.config=t,o.rpc=new k(o.config),o.injectProvider(),o.listenForRequestProviderEvents(),o.announceProvider(),window.addEventListener("load",(function(){o.emit(p.connect,{chainId:m(o.storage.getValue(l.chainId)||o.config.chainId||y[0])}),o.restorePairing(),o.restoreSession()})),o}a(t,e);var r=t.prototype;return r.isConnected=function(){return!0},r.request=function(){var e=i(n().mark((function e(t){var r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.method,a=t.params,e.next=3,null==(r=(i=this.methods)[o])?void 0:r.call(i,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.sendAsync=function(e,t){var n,r;null==(n=(r=this.methods)[e.method])||n.call(r,e.params).then((function(e){t(null,e)})).catch((function(e){t(e)}))},r.restorePairing=function(){var e=i(n().mark((function e(){var t,r,i,o,a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),r=this.storage.getValue(l.sessionId),!t||r){e.next=19;break}return e.prev=3,e.next=6,this.rpc.sendRpcApiRequest(M.waitForPairingResult,{pairingToken:t});case 6:if(o=e.sent,this.storage.clear(),this.storage.setValue(l.sessionId,o.session.sessionId),o.session.sessionId){e.next=11;break}throw w.PairingFailed;case 11:a=((null==(i=o.session)||null==(i=i.namespaces)||null==(i=i.eip155)?void 0:i.accounts)||[]).map((function(e){return e.includes(":")?e.split(":")[2]||"":e})),this.storage.setValue(l.address,a[0]||""),this.emit(p.accountsChanged,a),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),this.storage.clear();case 19:case"end":return e.stop()}}),e,this,[[3,16]])})));return function(){return e.apply(this,arguments)}}(),r.restoreSession=function(){var e=i(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.storage.getValue(l.pairingToken),!this.storage.getValue(l.sessionId)||t){e.next=11;break}return e.prev=3,e.next=6,this.request({method:T.eth_requestAccounts});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(3),this.storage.clear();case 11:case"end":return e.stop()}}),e,this,[[3,8]])})));return function(){return e.apply(this,arguments)}}(),r.injectProvider=function(){window.ethereum?window.ethereum.providers&&Array.isArray(window.ethereum.providers)?window.ethereum.providers.push(this):window.ethereum.providers=[window.ethereum,this]:window.ethereum=this},r.announceProvider=function(){window.dispatchEvent(new CustomEvent("eip6963:announceProvider",{detail:Object.freeze({info:f,provider:this})}))},r.listenForRequestProviderEvents=function(){var e=this;window.addEventListener("eip6963:requestProvider",(function(){e.announceProvider()}))},t}(d);!function(e){e.appOpened="appOpened",e.walletConnected="walletConnected",e.walletDisconnected="walletDisconnected",e.walletAddressRequested="walletAddressRequested"}(j||(j={}));var x,b=function(){function e(){}return e.prototype.sendApiRequest=function(){var e=i(n().mark((function e(t,r){var i,o,a,s,c;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=new D,a=o.getValue(l.sessionId),s=o.getValue(l.address),a&&s){e.next=5;break}throw new Error("Not connected to the wallet");case 5:return e.next=7,fetch((null==(i=window.Grindery)||null==(i=i.WalletSDK)?void 0:i.config.walletApiUrl)||"https://wallet-api.grindery.com/v3",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s+":"+a},body:JSON.stringify({jsonrpc:"2.0",id:1,method:t,params:r||{}})});case 7:if((c=e.sent).ok){e.next=10;break}throw new Error("Failed to call "+t);case 10:return e.next=12,c.json();case 12:return e.abrupt("return",e.sent.result);case 14:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),e}(),U=function(){function e(e){var t,n,r,i,a,s;if(this.provider=void 0,this.config={appId:(null==(t=window.Grindery)?void 0:t.appId)||"",appUrl:(null==(n=window.Grindery)?void 0:n.appUrl)||window.location.origin,redirectMode:null==(r=window.Grindery)?void 0:r.redirectMode,pairingApiUrl:null==(i=window.Grindery)?void 0:i.pairingApiUrl,walletApiUrl:null==(a=window.Grindery)?void 0:a.walletApiUrl,chainId:null==(s=window.Grindery)?void 0:s.chainId},this.storage=new D,this.user=null,this.config=o({},this.config,e||function(){for(var e={},t=0,n=Object.entries({"data-app-id":"appId","data-wallet-api-url":"walletApiUrl","data-pairing-api-url":"pairingApiUrl","data-app-url":"appUrl","data-redirect-mode":"redirectMode","data-chain-id":"chainId"});t0&&e.trackClientEvent(j.walletConnected,{wallets:t})})),this.on(p.disconnect,(function(){e.trackClientEvent(j.walletDisconnected)}))},t.detectPairingToken=function(){var e=new URLSearchParams(window.location.search),t=e.get("_grinderyPairingToken")||e.get("tgWebAppStartParam");t&&this.storage.setValue(l.pairingToken,t)},e}(),L=U;null!=(x=window.Grindery)&&x.WalletSDK&&window.Grindery.WalletSDK instanceof U||(window.Grindery=o({},window.Grindery||{},{WalletSDK:new U})),e.GrinderyWalletSDK=L,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=grindery-wallet-sdk.umd.production.min.js.map diff --git a/example/dist/grindery-wallet-sdk.umd.production.min.js.map b/example/dist/grindery-wallet-sdk.umd.production.min.js.map index 6118573..d349c61 100644 --- a/example/dist/grindery-wallet-sdk.umd.production.min.js.map +++ b/example/dist/grindery-wallet-sdk.umd.production.min.js.map @@ -1 +1 @@ -{"version":3,"file":"grindery-wallet-sdk.umd.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grindery-wallet-sdk.umd.production.min.js","sources":["../src/classes/EventEmitter.ts","../src/classes/SdkStorage.ts","../src/utils/uuid.ts","../src/utils/providerInfo.ts","../src/classes/ProviderError.ts","../src/utils/chains.ts","../src/classes/Rpc.ts","../src/classes/Provider.ts","../src/utils/clientEvents.ts","../src/classes/WalletAPI.ts","../src/index.ts","../src/classes/WalletSDK.ts","../src/utils/getConfigFromDataAttributes.ts"],"sourcesContent":["/**\n * @summary Provider events\n * @since 0.2.0\n * @link https://eips.ethereum.org/EIPS/eip-1193#provider-events\n * @enum {string}\n */\nexport enum ProviderEvents {\n accountsChanged = 'accountsChanged',\n pair = 'pair',\n connect = 'connect',\n disconnect = 'disconnect',\n chainChanged = 'chainChanged',\n message = 'message',\n}\n\n/**\n * @summary Provider event name\n * @since 0.2.0\n */\nexport type ProviderEventName = keyof typeof ProviderEvents;\n\n/**\n * @summary A class for emitting provider events\n * @since 0.2.0\n */\nexport class EventEmitter {\n constructor() {\n this.events = new Map();\n }\n\n /**\n * @summary A map of events and their listeners\n * @private\n */\n private events: Map>;\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n if (this.events.has(event)) {\n const callbacks = this.events.get(event)!.filter((cb) => cb !== callback);\n this.events.set(event, callbacks);\n }\n return this;\n }\n\n /**\n * @summary Emits an event\n * @public\n * @param {string} event Event name\n * @param data Event data\n * @returns {EventEmitter} The instance of the class itself\n */\n protected emit(event: ProviderEventName, ...data: any[]) {\n if (this.events.has(event)) {\n console.log('[Grindery.WalletSDK] > Event:', event, data[0]);\n this.events.get(event)!.forEach((callback) => {\n callback(...data);\n });\n }\n return this;\n }\n}\n","import { CHAINS } from '../utils/chains';\nimport { uuid } from '../utils/uuid';\n\nconst LOCALSTORAGE_KEY = 'GrinderyWalletProvider';\n\n/**\n * @summary SdkStorage keys\n * @since 0.2.0\n */\nexport enum SdkStorageKeys {\n pairingToken = 'pairingToken',\n sessionId = 'sessionId',\n connectUrl = 'connectUrl',\n connectUrlBrowser = 'connectUrlBrowser',\n shortToken = 'shortToken',\n clientId = 'clientId',\n address = 'address',\n chainId = 'chainId',\n}\n\n/**\n * @summary SdkStorage key type\n * @since 0.2.0\n */\nexport type SdkStorageKey = keyof typeof SdkStorageKeys;\n\nexport type SdkStorageSnapshot = {\n [key in SdkStorageKeys]?: string;\n};\n\n/**\n * @summary A class to handle local storage\n * @since 0.2.0\n */\nexport class SdkStorage {\n /**\n * @summary Gets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @returns {string} The value of the storage by the key\n */\n public getValue(key: SdkStorageKey): string {\n const value = this.getSnapshot()[key] || '';\n return value;\n }\n\n /**\n * @summary Sets the value of the storage by the key\n * @public\n * @param {SdkStorageKey} key Provider storage key\n * @param {string} value The value to set\n * @returns {void}\n */\n public setValue(key: SdkStorageKey, value: string): string {\n const snapshot = this.getSnapshot();\n snapshot[key] = value;\n this.saveSnapshot(snapshot);\n return value;\n }\n\n /**\n * @summary Clears the storage\n * @public\n * @returns {void}\n */\n public clear(): void {\n this.saveSnapshot({\n clientId: this.getSnapshot().clientId || uuid(),\n chainId: this.getSnapshot().chainId || CHAINS[0],\n });\n }\n\n /**\n * @summary Gets the storage\n * @since 0.2.0\n * @returns {SdkStorageSnapshot} The storage snapshot object\n */\n private getSnapshot(): SdkStorageSnapshot {\n try {\n return JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY) || '{}'\n ) as SdkStorageSnapshot;\n } catch (error) {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify({}));\n throw new Error('Error parsing storage');\n }\n }\n\n /**\n * @summary Saves the storage\n * @since 0.2.0\n * @param {SdkStorageSnapshot} storage SdkStorage snapshot object\n */\n private saveSnapshot(storage: SdkStorageSnapshot): void {\n localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(storage));\n }\n}\n","/**\n * @summary Generates a Version 4 (pseudorandom) UUID\n * @returns {string} The UUID\n */\nexport const uuid = (): string => {\n let d = '';\n while (d.length < 32) d += Math.random().toString(16).substr(2);\n const vr = ((parseInt(d.substr(16, 1), 16) & 0x3) | 0x8).toString(16);\n return `${d.substr(0, 8)}-${d.substr(8, 4)}-4${d.substr(\n 13,\n 3\n )}-${vr}${d.substr(17, 3)}-${d.substr(20, 12)}`;\n};\n","import { uuid } from './uuid';\n\n/**\n * Represents the assets needed to display a wallet\n *\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#provider-info\n */\nexport interface EIP6963ProviderInfo {\n uuid: string;\n name: string;\n\n /**\n * Data URI as defined in RFC-2397.\n *\n * The image SHOULD be a square with 96x96px minimum resolution.\n * The image format is RECOMMENDED to be either lossless or vector based such as PNG, WebP or SVG.\n * @link https://eips.ethereum.org/EIPS/eip-6963#imagesicons\n */\n icon: string;\n\n /**\n * MUST BE a valid RFC-1034 Domain Name\n * @link https://eips.ethereum.org/EIPS/eip-6963#rdns\n */\n rdns: string;\n}\n\nexport const providerInfo: EIP6963ProviderInfo = {\n uuid: uuid(),\n name: 'Grindery Wallet',\n rdns: 'com.grindery.wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9Ijk2IiBoZWlnaHQ9Ijk2IiByeD0iNDgiIGZpbGw9IiMwQjBEMTciLz4KPHBhdGggZD0iTTUyLjcwOTMgNTQuNjI5NUw0My40MDAzIDYwLjU2MTdDNDEuOTkwMiA2MS40NjAzIDQxLjU4OTQgNjMuMzEwNSA0Mi41MDUxIDY0LjY5NDJDNDMuNDA5NyA2Ni4wNjExIDQ1LjI2MDYgNjYuNDYxNSA0Ni42NjQ4IDY1LjYwNDhMNTIuNDQ4MiA2MS43MjY5TDU3LjU1NjggNTguMjk1MUM1Ny42MzgyIDU4LjI0MTkgNTcuNzE5MyA1OC4xODk2IDU3LjgwMDMgNTguMTM4NEw1OC4wNTgxIDU3Ljk2NTVDNTguMjA1MyA1Ny44NjY4IDU4LjM1NzggNTcuNzgxMyA1OC41MTQxIDU3LjcwODlDNTguNjQwNiA1Ny42MzY5IDU4Ljc2NjYgNTcuNTY3MyA1OC44OTIxIDU3LjUwMDFDNjEuOTUwMSA1NS44NjQ0IDY1Ljc4MDQgNTYuOTcwOSA2Ny40NDczIDU5Ljk3MTdDNjguOTA3NSA2Mi42MDAzIDY4LjI0MDggNjUuODc3NiA2NS44NjQgNjcuNzU0NUM2Ni4yMzc2IDY2Ljg3NDggNjYuMTc2OCA2NS44MzUyIDY1LjYwNzkgNjQuOTc1NUM2NC43MDMzIDYzLjYwODYgNjIuODUyNCA2My4yMDgzIDYxLjQ0ODIgNjQuMDY1TDU1LjY2NDggNjcuOTQyOEw1MC41NTYyIDcxLjM3NDdDNTAuNTA3OSA3MS40MDU1IDUwLjQ1OTQgNzEuNDM1OCA1MC40MTA3IDcxLjQ2NTdMNTAuMDU1IDcxLjcwNDJDNDkuNzU1OCA3MS45MDQ5IDQ5LjQzNDkgNzIuMDUwNiA0OS4xMDQ3IDcyLjE0MzhDNDQuNjU3MyA3NC4wNTkyIDM5LjMyMzggNzIuNTg5NCAzNi41OTI0IDY4LjQ2MjFDMzMuNzUxNiA2NC4xNjk2IDM0LjczMTcgNTguNTIzNCAzOC42OTg2IDU1LjM3MzZDMzYuODE0IDU0LjY1NzkgMzUuMDI3NSA1My41OTk1IDMzLjQzNjEgNTIuMTkzNEMyNi40MzA0IDQ2LjAwMzYgMjUuODU3NyAzNS40MjA1IDMyLjE1NjkgMjguNTU1NEMzOC40NTYyIDIxLjY5MDQgNDkuMjQxOSAyMS4xNDMxIDU2LjI0NzYgMjcuMzMyOUM2My4yNTMzIDMzLjUyMjggNjMuODI2IDQ0LjEwNTkgNTcuNTI2NyA1MC45NzA5QzU2LjExNTIgNTIuNTA5MyA1NC40Nzg0IDUzLjczMDQgNTIuNzA5MyA1NC42Mjk1Wk01MS44MDcgNDYuMDUxNkM1NS40MjMgNDIuMDgyMyA1NS4wOTQzIDM1Ljk2MzEgNTEuMDcyNyAzMi4zODQxQzQ3LjA1MTEgMjguODA1MiA0MC44NTk1IDI5LjEyMTYgMzcuMjQzNSAzMy4wOTFDMzMuNjI3NCAzNy4wNjA0IDMzLjk1NjIgNDMuMTc5NSAzNy45Nzc4IDQ2Ljc1ODVDNDEuOTk5NCA1MC4zMzc1IDQ4LjE5MDkgNTAuMDIxIDUxLjgwNyA0Ni4wNTE2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==',\n};\n","/**\n * @summary Error class for wallet Provider\n * @since 0.1.0\n * @extends Error\n */\nexport class ProviderError extends Error {\n name: string = 'GrinderyWalletProviderError';\n code?: number;\n data?: unknown;\n\n constructor(message: string, code?: number, data?: unknown) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport const ProviderErrors = {\n PairingFailed: new ProviderError('Pairing failed', 4900),\n Disconnected: new ProviderError('Disconnected', 4900),\n UnsupportedMethod: new ProviderError('Unsupported Method', 4200),\n Unauthorized: new ProviderError('Unauthorized', 4100),\n NoResult: new ProviderError('No result', 4900),\n NoAppId: new ProviderError('App ID is required', 4900),\n UserRejected: new ProviderError('User Rejected Request', 4001),\n ChainDisconnected: new ProviderError('Chain Disconnected', 4901),\n};\n\nexport const newProviderError = (error?: unknown): ProviderError => {\n let errorResponse: ProviderError;\n if (error instanceof ProviderError) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n error.code || 4900,\n error.data\n );\n } else if (error instanceof Error) {\n errorResponse = new ProviderError(\n error.message || 'Unknown error',\n 4900,\n error\n );\n } else {\n errorResponse = new ProviderError('Unknown error', 4900, error);\n }\n return errorResponse;\n};\n","/**\n * Supported chains list\n *\n * @description Currently supports the following chains: Polygon, BNB Smart Chain, and opBNB Smart Chain\n *\n * @since 0.3.0\n * @type {string[]} Chain ids in CAIP-2 format\n */\nexport const CHAINS: string[] = ['eip155:137', 'eip155:56', 'eip155:204'];\n\nexport const hexChainId = (chainId: string): string => {\n return `0x${parseInt(chainId.split(':')[1], 10).toString(16)}`;\n};\n\nexport const unhexChainId = (hexChainId: string): string => {\n return `eip155:${parseInt(hexChainId, 16)}`;\n};\n","import { ProviderError, ProviderErrors } from './ProviderError';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery RPC API method names\n */\nexport enum RpcMethodNames {\n requestPairing = 'requestPairing',\n waitForPairingResult = 'waitForPairingResult',\n request = 'request',\n waitForRequestResult = 'waitForRequestResult',\n 'disconnect' = 'disconnect',\n getUserWalletAddress = 'getUserWalletAddress',\n trackClientEvent = 'trackClientEvent',\n}\n\n/**\n * @summary The Grindery RPC API request results\n * @since 0.2.0\n */\nexport namespace RpcRequestResults {\n /**\n * @summary `waitForPairingResult` method result\n */\n export type waitForPairingResult = {\n session: {\n expiry: number;\n sessionId: string;\n namespaces: {\n [key: string]: {\n accounts: string[];\n chains: string[];\n events: string[];\n methods: string[];\n };\n };\n };\n };\n\n /**\n * @summary `requestPairing` method result\n */\n export type requestPairing = {\n config?: WalletSDKConfig;\n pairingToken: string;\n connectUrl: string;\n connectUrlBrowser: string;\n shortToken: string;\n miniAppPairingToken?: string;\n };\n\n /**\n * @summary `request` method result\n */\n export type request = {\n requestToken: string;\n };\n\n /**\n * @summary `waitForRequestResult` method result\n */\n export type waitForRequestResult = any;\n\n /**\n * @summary `disconnect` method result\n */\n export type disconnect = boolean;\n\n /**\n * @summary `getUserWalletAddress` method result\n */\n export type getUserWalletAddress = string;\n\n /**\n * @summary `trackClientEvent` method result\n */\n export type trackClientEvent = true;\n}\n\n/**\n * @summary The Grindery RPC API wrapper class\n * @since 0.2.0\n */\nexport class Rpc {\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n this.config = config;\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API and waits for the result.\n * @public\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n public async sendAndWaitRpcRequest(\n method: string,\n params?: readonly unknown[],\n timeout?: number\n ): Promise {\n const request = await this.sendRpcRequest(method, params);\n return await this.waitRpcRequest(request.requestToken, timeout);\n }\n\n /**\n * @summary Sends a provider request to the Grindery RPC API.\n * @protected\n * @param {RpcMethodNames} method Provider request method name\n * @param {Array} params Provider request parameters\n * @returns {RpcRequestResults.request} Promise resolving with the request token to use in the `waitGrinderyRpcProviderRequest` method\n */\n protected async sendRpcRequest(\n method: string,\n params?: readonly unknown[]\n ): Promise {\n const storage = new SdkStorage();\n return await this.sendRpcApiRequest(\n RpcMethodNames.request,\n {\n sessionId: storage.getValue(SdkStorageKeys.sessionId),\n scope: storage.getValue(SdkStorageKeys.chainId),\n request: {\n method,\n params,\n },\n }\n );\n }\n\n /**\n * @summary Waits for the result of the provider request.\n * @protected\n * @param {string} requestToken A token to identify provider request. Recieved in the results of `sendGrinderyRpcProviderRequest` method.\n * @param {number} timeout Optional. The time in milliseconds to wait for the request result. Default is 30000.\n * @returns The result of the provider request\n */\n protected async waitRpcRequest(\n requestToken: string,\n timeout?: number\n ): Promise {\n return await this.sendRpcApiRequest(\n RpcMethodNames.waitForRequestResult,\n {\n requestToken,\n timeout,\n }\n );\n }\n\n /**\n * @summary Sends a request to the Grindery Walletconnect RPC API.\n * @public\n * @param {RpcMethodNames} method Request method name\n * @param {RequestArgumentsParams} params Request parameters\n * @returns {T} The result of the request\n */\n public async sendRpcApiRequest(\n method: RpcMethodNames,\n params?: unknown[] | object\n ): Promise {\n try {\n const response = await fetch(\n this.config.pairingApiUrl || 'https://walletconnect-api.grindery.com',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: `gws_${method}`,\n params: params || [],\n }),\n }\n );\n const data = await response.json();\n if (data.error) {\n throw new ProviderError(data.error.message, data.error.code);\n }\n if (!data.result) {\n throw ProviderErrors.NoResult;\n }\n return data.result;\n } catch (error) {\n if (error instanceof Error) {\n throw new ProviderError(error.message, 500, error);\n }\n throw new ProviderError('Server error', 500, error);\n }\n }\n}\n","import { providerInfo } from '../utils/providerInfo';\nimport { EventEmitter, ProviderEvents } from './EventEmitter';\nimport { ProviderErrors, newProviderError } from './ProviderError';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId, unhexChainId } from '../utils/chains';\nimport { WalletSDKConfig } from './WalletSDK';\n\n/**\n * @summary The Grindery wallet provider methods\n * @since 0.2.0\n */\nexport type ProviderMethods = {\n [name in ProviderMethodNames]: (\n params?: ProviderRequestArgumentsParams\n ) => Promise;\n};\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n * @since 0.3.0 Added `eth_chainId`, `wallet_addEthereumChain` and `wallet_switchEthereumChain` methods\n */\nexport enum ProviderMethodNames {\n eth_requestAccounts = 'eth_requestAccounts',\n eth_accounts = 'eth_accounts',\n personal_sign = 'personal_sign',\n eth_sendTransaction = 'eth_sendTransaction',\n gws_disconnect = 'gws_disconnect',\n eth_chainId = 'eth_chainId',\n wallet_addEthereumChain = 'wallet_addEthereumChain',\n wallet_switchEthereumChain = 'wallet_switchEthereumChain',\n}\n\nexport namespace ProviderRequestResults {\n export type eth_accounts = string[];\n export type eth_requestAccounts = string[];\n export type personal_sign = string;\n export type eth_sendTransaction = string;\n export type disconnect = boolean;\n export type wallet_switchEthereumChain = null;\n export type wallet_addEthereumChain = null;\n export type eth_chainId = string;\n}\n\n/**\n * @summary The Grindery wallet provider method names\n * @since 0.2.0\n */\nexport type ProviderMethodName = keyof typeof ProviderMethodNames;\n\n/**\n * @summary The Grindery wallet provider request params\n * @since 0.2.0\n */\nexport type ProviderRequestArgumentsParams = readonly unknown[] | object;\n\n/**\n * @summary The Grindery wallet provider request arguments\n * @since 0.2.0\n */\nexport interface ProviderRequestArguments {\n readonly method: ProviderMethodName;\n readonly params?: ProviderRequestArgumentsParams;\n}\n\n/**\n * @summary The base wallet provider class\n * @since 0.2.0\n * @extends EventEmitter\n */\nexport class Provider extends EventEmitter {\n public isGrinderyWallet: boolean = true;\n private config: WalletSDKConfig;\n\n constructor(config: WalletSDKConfig) {\n super();\n this.config = config;\n this.rpc = new Rpc(this.config);\n this.injectProvider();\n this.listenForRequestProviderEvents();\n this.announceProvider();\n window.addEventListener('load', () => {\n this.emit(ProviderEvents.connect, {\n chainId: hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n ),\n });\n this.restorePairing();\n this.restoreSession();\n });\n }\n\n /**\n * @public\n * @returns {boolean} True if the provider is connected to the server.\n */\n public isConnected(): boolean {\n // Always true\n return true;\n }\n\n /**\n * @summary Sends a request to the provider\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @returns {T} The result of the request\n */\n public async request({\n method,\n params,\n }: ProviderRequestArguments): Promise {\n return (await this.methods[method]?.(params)) as T;\n }\n\n /**\n * @summary Sends a request to the provider (legacy)\n * @public\n * @param {ProviderRequestArguments} args Request arguments\n * @param {string} args.method The method name\n * @param {ProviderRequestArgumentsParams} args.params The method parameters\n * @param {Function} callback The callback function\n * @deprecated Use `request` method instead\n * @since 0.5.4\n * @returns {void} `void`\n */\n public sendAsync(\n { method, params }: ProviderRequestArguments,\n callback: Function\n ): void {\n this.methods[method]?.(params)\n .then((res) => {\n callback(null, res);\n })\n .catch((error) => {\n callback(error);\n });\n }\n\n private storage: SdkStorage = new SdkStorage();\n\n private rpc: Rpc;\n\n /**\n * @summary Switches the chain\n * @since 0.3.0\n * @param {string} chainId Chain id in hex format\n * @returns {null} `Null` on success\n */\n private switchChain = async ({ chainId }: any): Promise => {\n const chainCaip = unhexChainId(chainId);\n if (!CHAINS.includes(chainCaip)) {\n throw newProviderError(ProviderErrors.ChainDisconnected);\n }\n this.storage.setValue(SdkStorageKeys.chainId, chainCaip);\n this.emit(ProviderEvents.chainChanged, { chainId });\n return null;\n };\n\n /**\n * @summary The list of supported provider methods.\n * @private\n */\n private methods: Partial = {\n /**\n * @summary The `eth_requestAccounts` provider method\n */\n [ProviderMethodNames.eth_requestAccounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n if (this.storage.getValue('sessionId')) {\n try {\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: [],\n });\n } catch (error) {\n this.storage.setValue(SdkStorageKeys.sessionId, '');\n // skip failed request and continue with pairing\n }\n }\n if (this.storage.getValue('pairingToken')) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: this.storage.getValue(\n SdkStorageKeys.pairingToken\n ),\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n this.storage.clear();\n // skip failed request and continue with pairing\n }\n }\n try {\n this.storage.clear();\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.requestPairing,\n {\n appId: this.config.appId || '',\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n redirectMode: this.config.redirectMode,\n redirectUrl: this.config.appUrl,\n }\n );\n\n if (!result.pairingToken || !result.connectUrl) {\n throw ProviderErrors.PairingFailed;\n }\n\n this.storage.setValue(SdkStorageKeys.pairingToken, result.pairingToken);\n this.storage.setValue(SdkStorageKeys.connectUrl, result.connectUrl);\n this.storage.setValue(\n SdkStorageKeys.connectUrlBrowser,\n result.connectUrlBrowser\n );\n this.storage.setValue(SdkStorageKeys.shortToken, result.shortToken);\n this.emit(ProviderEvents.pair, {\n config: this.config,\n shortToken: result.shortToken,\n connectUrl: result.connectUrl,\n connectUrlBrowser: result.connectUrlBrowser,\n miniAppPairingToken: result.miniAppPairingToken,\n });\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken: result.pairingToken,\n }\n );\n\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n this.storage.setValue(SdkStorageKeys.pairingToken, '');\n this.storage.setValue(SdkStorageKeys.connectUrl, '');\n this.storage.setValue(SdkStorageKeys.connectUrlBrowser, '');\n this.storage.setValue(SdkStorageKeys.shortToken, '');\n\n return await this.request({\n method: ProviderMethodNames.eth_accounts,\n params: params || [],\n });\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * @summary The `eth_accounts` provider method\n */\n [ProviderMethodNames.eth_accounts]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n try {\n const result = (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_accounts,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_accounts;\n this.storage.setValue(SdkStorageKeys.address, result[0] || '');\n this.emit(ProviderEvents.accountsChanged, result);\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_sendTransaction` provider method\n */\n [ProviderMethodNames.eth_sendTransaction]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.eth_sendTransaction,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.eth_sendTransaction;\n },\n\n /**\n * @summary The `personal_sign` provider method\n */\n [ProviderMethodNames.personal_sign]: async (\n params?: Partial\n ): Promise => {\n return (await this.rpc.sendAndWaitRpcRequest(\n ProviderMethodNames.personal_sign,\n params ? (Array.isArray(params) ? params : [params]) : []\n )) as ProviderRequestResults.personal_sign;\n },\n\n /**\n * @summary The `gws_disconnect` provider method\n */\n [ProviderMethodNames.gws_disconnect]:\n async (): Promise => {\n try {\n const result =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.disconnect,\n {\n sessionToken: this.storage.getValue(SdkStorageKeys.sessionId),\n }\n );\n\n this.emit(ProviderEvents.disconnect, ProviderErrors.Disconnected);\n\n return result;\n } catch (error) {\n throw newProviderError(error);\n }\n },\n\n /**\n * @summary The `eth_chainId` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.eth_chainId]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n return hexChainId(\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n },\n\n /**\n * @summary The `wallet_addEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_addEthereumChain]: async (\n _?: ProviderRequestArgumentsParams\n ): Promise => {\n throw newProviderError(ProviderErrors.UserRejected);\n },\n\n /**\n * @summary The `wallet_switchEthereumChain` provider method\n * @since 0.3.0\n */\n [ProviderMethodNames.wallet_switchEthereumChain]: async (\n params?: ProviderRequestArgumentsParams\n ): Promise =>\n await this.switchChain(params),\n };\n\n /**\n * @summary Restores the pairing process if pairing token is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restorePairing(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (pairingToken && !sessionId) {\n try {\n const pairResult =\n await this.rpc.sendRpcApiRequest(\n RpcMethodNames.waitForPairingResult,\n {\n pairingToken,\n }\n );\n\n this.storage.clear();\n this.storage.setValue(\n SdkStorageKeys.sessionId,\n pairResult.session.sessionId\n );\n\n if (!pairResult.session.sessionId) {\n throw ProviderErrors.PairingFailed;\n }\n\n const accounts = (\n pairResult.session?.namespaces?.[`eip155`]?.accounts || []\n ).map((account) =>\n account.includes(':') ? account.split(':')[2] || '' : account\n );\n this.storage.setValue(SdkStorageKeys.address, accounts[0] || '');\n this.emit(ProviderEvents.accountsChanged, accounts);\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Restores the session if session Id is stored in the local storage\n * @private\n * @returns {void}\n */\n private async restoreSession(): Promise {\n const pairingToken = this.storage.getValue(SdkStorageKeys.pairingToken);\n const sessionId = this.storage.getValue(SdkStorageKeys.sessionId);\n if (sessionId && !pairingToken) {\n try {\n await this.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n } catch (error) {\n this.storage.clear();\n }\n }\n }\n\n /**\n * @summary Injects the provider into the window object\n * @private\n * @returns {void}\n */\n private injectProvider(): void {\n if (!window.ethereum) {\n window.ethereum = this;\n } else {\n if (\n window.ethereum.providers &&\n Array.isArray(window.ethereum.providers)\n ) {\n window.ethereum.providers.push(this);\n } else {\n window.ethereum.providers = [window.ethereum, this];\n }\n }\n }\n\n /**\n * @summary Announces the provider to the window object\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private announceProvider(): void {\n window.dispatchEvent(\n new CustomEvent('eip6963:announceProvider', {\n detail: Object.freeze({ info: providerInfo, provider: this }),\n })\n );\n }\n\n /**\n * @summary Listens for the request provider events\n * @private\n * @since 0.1.1\n * @link https://eips.ethereum.org/EIPS/eip-6963#announce-and-request-events\n * @returns {void}\n */\n private listenForRequestProviderEvents(): void {\n window.addEventListener('eip6963:requestProvider', () => {\n this.announceProvider();\n });\n }\n}\n","export enum ClientEventNames {\n /**\n * @summary The event is triggered every time the app page is opened\n */\n appOpened = 'appOpened',\n /**\n * @summary The event is triggered when the user wallet is connected\n */\n walletConnected = 'walletConnected',\n /**\n * @summary The event is triggered when the user wallet is disconnected\n */\n walletDisconnected = 'walletDisconnected',\n /**\n * @summary The event is triggered when the app requests user wallet address\n */\n walletAddressRequested = 'walletAddressRequested',\n}\n\nexport type ClientEventName = keyof typeof ClientEventNames;\n","import { SdkStorage, SdkStorageKeys } from './SdkStorage';\n\n/**\n * @summary The Grindery Wallet API wrapper class\n * @since 0.5.0\n */\nexport class WalletAPI {\n /**\n * @summary Sends a request to the Grindery Wallet API\n * @public\n * @param {string} method JSON-RPC method name\n * @param {object} params JSON-RPC method parameters, optional\n * @returns {T} The result of the API request\n */\n public async sendApiRequest(method: string, params?: object): Promise {\n const storage = new SdkStorage();\n const sessionId = storage.getValue(SdkStorageKeys.sessionId);\n const address = storage.getValue(SdkStorageKeys.address);\n if (!sessionId || !address) {\n throw new Error('Not connected to the wallet');\n }\n const response = await fetch(\n window.Grindery?.WalletSDK?.config.walletApiUrl ||\n 'https://wallet-api.grindery.com/v3',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${address}:${sessionId}`,\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method,\n params: params || {},\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to call ${method}`);\n }\n const json = await response.json();\n return json.result as T;\n }\n}\n","import { WalletSDK } from './classes/WalletSDK';\n\ndeclare global {\n interface Window {\n Telegram?: any;\n ethereum?: any;\n Grindery?: {\n appId?: string;\n appUrl?: string;\n redirectMode?: string;\n pairingApiUrl?: string;\n walletApiUrl?: string;\n chainId?: string;\n WalletSDK?: WalletSDK;\n };\n }\n}\n\n/**\n * @summary The Grindery Wallet SDK\n */\nexport const GrinderyWalletSDK = WalletSDK;\n\nfunction init() {\n if (\n !window.Grindery?.WalletSDK ||\n !(window.Grindery.WalletSDK instanceof WalletSDK)\n ) {\n window.Grindery = {\n ...(window.Grindery || {}),\n WalletSDK: new WalletSDK(),\n };\n }\n}\n\n// Initialize the SDK\ninit();\n","import { ProviderEventName, ProviderEvents } from './EventEmitter';\nimport { Provider, ProviderMethodNames } from './Provider';\nimport { Rpc, RpcMethodNames, RpcRequestResults } from './Rpc';\nimport { SdkStorage, SdkStorageKeys } from './SdkStorage';\nimport { CHAINS, hexChainId } from '../utils/chains';\nimport { ClientEventName, ClientEventNames } from '../utils/clientEvents';\nimport { User } from '../utils/user';\nimport { WalletAPI } from './WalletAPI';\nimport { getConfigFromDataAttributes } from '../utils/getConfigFromDataAttributes';\n\nexport type WalletSDKConfig = {\n /**\n * @summary The application ID, obtained in the Grindery bot by the dApp developer.\n */\n appId: string;\n /**\n * @summary The application URL. If not provided, the current page URL will be used.\n */\n appUrl: string;\n /**\n * @summary The pairing API URL. If not provided, the default Grindery API URL will be used.\n */\n pairingApiUrl?: string;\n /**\n * @summary The wallet API URL. If not provided, the default Grindery API URL will be used.\n */\n walletApiUrl?: string;\n /**\n * @summary The redirect mode for the pairing request.\n * @example 'tg' | 'url' | 'close'\n */\n redirectMode?: string;\n /**\n * @summary The default chain ID in CAIP-2 format.\n */\n chainId?: string;\n};\n\n/**\n * @summary The Wallet SDK class\n * @since 0.2.0\n */\nexport class WalletSDK {\n /**\n * @summary The provider instance\n * @public\n */\n public provider: Provider;\n\n public config: WalletSDKConfig = {\n appId: window.Grindery?.appId || '',\n appUrl: window.Grindery?.appUrl || window.location.origin,\n redirectMode: window.Grindery?.redirectMode,\n pairingApiUrl: window.Grindery?.pairingApiUrl,\n walletApiUrl: window.Grindery?.walletApiUrl,\n chainId: window.Grindery?.chainId,\n };\n\n constructor(config?: Partial) {\n this.config = {\n ...this.config,\n ...(config || getConfigFromDataAttributes() || {}),\n };\n\n if (!this.config.appId) {\n throw new Error('App ID is required');\n }\n if (!this.config.appUrl) {\n throw new Error('App URL is required');\n }\n\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n\n this.storage.setValue(\n SdkStorageKeys.chainId,\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n this.detectPairingToken();\n this.provider = this.getWeb3Provider();\n this.initTracking();\n this.provider.on(ProviderEvents.pair, this.handlePairing);\n }\n\n /**\n * @summary Checks if the provider is connected to the server\n * @returns {boolean} True if the provider is connected to the server.\n *\n * @example\n * ```typescript\n * const isConnected = window.Grindery.WalletSDK.isConnected();\n * ```\n */\n public isConnected(): boolean {\n return this.provider.isConnected();\n }\n\n /**\n * @summary Checks if the provider is connected to the server and the Grindery Wallet\n * @returns {boolean} True if the provider is connected to the server and the Grindery Wallet.\n */\n public isWalletConnected(): boolean {\n return (\n this.isConnected() &&\n !!this.storage.getValue(SdkStorageKeys.pairingToken) &&\n !this.storage.getValue(SdkStorageKeys.sessionId)\n );\n }\n\n /**\n * @summary Initiate connection to the Grindery Wallet\n * @public\n * @returns {Promise} The array of ethereum addresses\n * @since 0.1.0\n */\n public async connect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_requestAccounts,\n });\n }\n\n /**\n * @summary Disconnects Grindery Wallet\n * @public\n * @returns {Promise} True if wallet is disconnected\n * @since 0.1.0\n */\n public async disconnect(): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.gws_disconnect,\n });\n }\n\n /**\n * @summary Sends a transaction request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {object} params The transaction parameters\n * @param {string} params.to The recipient address\n * @param {string} [params.value] The amount to send in wei\n * @param {string} [params.data] The data to send\n * @returns {Promise} Transaction hash string\n */\n public async sendTransaction(params: {\n to: string;\n value?: string;\n data?: string;\n }): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.eth_sendTransaction,\n params: [params],\n });\n }\n\n /**\n * @summary Sends a personal signature request to the Grindery Wallet\n * @public\n * @since 0.1.0\n * @param {string} message The message to sign\n * @returns {Promise} Signature string\n */\n public async signMessage(message: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.personal_sign,\n params: [message, this.storage.getValue('address')],\n });\n }\n\n /**\n * @summary Requests the Grindery Wallet to switch the chain\n * @public\n * @since 0.3.0\n * @param {string} chainId Chain id in CAIP-2 format\n * @returns {Promise} Returns `null` on success\n */\n public async switchChain(chainId: string): Promise {\n return await this.provider.request({\n method: ProviderMethodNames.wallet_switchEthereumChain,\n params: { chainId: hexChainId(chainId) },\n });\n }\n\n /**\n * @summary Gets currently connected chain\n * @public\n * @since 0.3.0\n * @returns {string} Returns chain id in CAIP-2 format\n */\n public getChain(): string {\n return (\n this.storage.getValue(SdkStorageKeys.chainId) ||\n this.config.chainId ||\n CHAINS[0]\n );\n }\n\n /**\n * @summary Exchange Telegram user ID to Grindery Wallet address\n * @public\n * @since 0.4.0\n * @param {string} userId Telegram user ID\n * @returns {Promise} Grindery Wallet address\n */\n public async getUserWalletAddress(\n userId: string\n ): Promise {\n const rpc = new Rpc(this.config);\n this.trackClientEvent(ClientEventNames.walletAddressRequested, { userId });\n return await rpc.sendRpcApiRequest(\n RpcMethodNames.getUserWalletAddress,\n { appId: this.config.appId, userId }\n );\n }\n\n /**\n * @summary Adds a listener to the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public on(event: ProviderEventName, callback: Function) {\n this.provider.on(event, callback);\n return this;\n }\n\n /**\n * @summary Removes a listener from the event\n * @public\n * @param {ProviderEventName} event Event name\n * @param {Function} callback Callback function\n * @returns {EventEmitter} The instance of the class itself\n */\n public removeListener(event: ProviderEventName, callback: Function) {\n this.provider.removeListener(event, callback);\n return this;\n }\n\n /**\n * @summary Gets the Grindery user information\n * @public\n * @since 0.5.0\n * @returns {Promise} The Grindery user information\n */\n public async getUser(): Promise {\n if (!this.user) {\n const api = new WalletAPI();\n try {\n this.user = await api.sendApiRequest('gw_getMe');\n } catch (e) {\n throw new Error(\n e instanceof Error ? e.message : 'Failed to fetch user information'\n );\n }\n }\n return this.user;\n }\n\n /**\n * @summary Sets the application ID\n * @public\n * @since 0.5.1\n * @param {string} appId The application ID\n * @returns {void}\n */\n public setAppId(appId: string): void {\n this.config.appId = appId;\n window.Grindery = {\n ...window.Grindery,\n appId,\n };\n }\n\n /**\n * @summary Sets the SDK config\n * @public\n * @since 0.5.1\n * @param {object} config The partial SDK config object\n * @returns {void}\n */\n public setConfig(config: Partial): void {\n this.config = { ...this.config, ...config };\n window.Grindery = {\n ...window.Grindery,\n ...this.config,\n };\n }\n\n /**\n * @summary SdkStorage class instance\n * @private\n */\n private storage: SdkStorage = new SdkStorage();\n\n /**\n * @summary The Grindery Wallet user\n * @private\n */\n private user: User | null = null;\n\n /**\n * @summary Gets the Grindery Wallet ethereum provider\n * @returns {Provider} The Grindery Wallet ethereum provider\n */\n private getWeb3Provider(): Provider {\n let provider = window.ethereum?.providers?.find(\n (provider: Provider | unknown) =>\n provider instanceof Provider && provider.isGrinderyWallet\n );\n if (\n !provider &&\n window.ethereum instanceof Provider &&\n window.ethereum.isGrinderyWallet\n ) {\n provider = window.ethereum;\n }\n if (!provider) {\n provider = new Provider(this.config);\n }\n return provider;\n }\n\n /**\n * @summary Handles the pairing request, by opening the Grindery Wallet\n * @private\n * @param ProviderRequestPairingResult\n * @returns {void}\n */\n private handlePairing({\n config,\n shortToken,\n connectUrl,\n connectUrlBrowser,\n miniAppPairingToken,\n }: RpcRequestResults.requestPairing): void {\n const WebApp = window.Telegram?.WebApp;\n const redirectUrl =\n connectUrlBrowser ||\n `https://www.grindery.com/connect/wc?uri=${shortToken}`;\n const miniAppUrl = miniAppPairingToken\n ? `https://t.me/GrinderyConnectTestBot/confirm?startapp=${miniAppPairingToken.replaceAll(\n '.',\n '___'\n )}`\n : '';\n if (miniAppUrl && config?.redirectMode === 'tg') {\n try {\n window.Telegram?.WebApp?.openTelegramLink?.(miniAppUrl);\n } catch (e) {\n window.open(miniAppUrl, '_blank');\n }\n return;\n }\n if (\n WebApp &&\n WebApp.openTelegramLink &&\n WebApp.platform &&\n WebApp.platform !== 'unknown' &&\n connectUrl\n ) {\n WebApp.openTelegramLink(connectUrl);\n } else {\n window.open(redirectUrl, '_blank');\n }\n }\n\n /**\n * @summary Tracks client side event\n * @since 0.4.2\n * @private\n * @param AppEvent\n * @returns {Promise}\n */\n private async trackClientEvent(\n name: ClientEventName,\n data?: Record\n ): Promise {\n const appUrl = this.config.appUrl;\n const appId = this.config.appId;\n const userTelegramId = String(\n window.Telegram?.WebApp?.initDataUnsafe?.user?.id || ''\n );\n\n try {\n const rpc = new Rpc(this.config);\n await rpc.sendRpcApiRequest(\n RpcMethodNames.trackClientEvent,\n {\n name,\n appUrl,\n userTelegramId,\n data: {\n ...(data || {}),\n pageUrl: window.location.href,\n appId,\n sessionId: this.storage.getValue(SdkStorageKeys.sessionId),\n clientId: this.storage.getValue(SdkStorageKeys.clientId),\n isMiniApp: Boolean(window.Telegram?.initDataUnsafe),\n miniAppPlatform: window.Telegram?.WebApp?.platform,\n miniAppSdkVersion: window.Telegram?.WebApp?.version,\n userAgent: window.navigator.userAgent,\n },\n }\n );\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @summary Initializes the tracking\n * @since 0.4.2\n * @private\n * @returns {void}\n */\n private initTracking(): void {\n const onWalletConnect = (wallets: string[]) => {\n if (wallets.length > 0) {\n this.trackClientEvent(ClientEventNames.walletConnected, {\n wallets: wallets,\n });\n }\n };\n\n const onWalletDisconnect = () => {\n this.trackClientEvent(ClientEventNames.walletDisconnected);\n };\n\n this.on(ProviderEvents.accountsChanged, onWalletConnect);\n this.on(ProviderEvents.disconnect, onWalletDisconnect);\n }\n\n private detectPairingToken(): void {\n const urlParams = new URLSearchParams(window.location.search);\n const token =\n urlParams.get('_grinderyPairingToken') ||\n urlParams.get('tgWebAppStartParam');\n if (token) {\n this.storage.setValue(SdkStorageKeys.pairingToken, token);\n }\n }\n}\n","import { WalletSDKConfig } from '../classes/WalletSDK';\n\n/**\n * @summary Get the SDK config from the script tag data attributes\n * @returns {object} The SDK config object\n */\nexport const getConfigFromDataAttributes = (): Partial => {\n let config: Partial = {};\n const attributesMap = {\n 'data-app-id': 'appId',\n 'data-wallet-api-url': 'walletApiUrl',\n 'data-pairing-api-url': 'pairingApiUrl',\n 'data-app-url': 'appUrl',\n 'data-redirect-mode': 'redirectMode',\n 'data-chain-id': 'chainId',\n };\n for (const [attribute, key] of Object.entries(attributesMap)) {\n const elements = document.querySelectorAll(`[${attribute}]`);\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n const value = element.getAttribute(attribute);\n const src = element.getAttribute('src');\n const isGrinderySrc = src && src.includes('grindery-wallet-sdk');\n if (isGrinderySrc && value) {\n config[key as keyof WalletSDKConfig] = value as string;\n }\n }\n }\n return config;\n};\n"],"names":["ProviderEvents","SdkStorageKeys","EventEmitter","this","events","Map","_proto","prototype","on","event","callback","has","set","get","push","removeListener","callbacks","filter","cb","emit","_len","arguments","length","data","Array","_key","console","log","forEach","apply","uuid","d","Math","random","toString","substr","vr","parseInt","providerInfo","name","rdns","icon","ProviderError","_Error","message","code","_this","call","_inheritsLoose","_wrapNativeSuper","Error","ProviderErrors","PairingFailed","Disconnected","UnsupportedMethod","Unauthorized","NoResult","NoAppId","UserRejected","ChainDisconnected","newProviderError","error","CHAINS","hexChainId","chainId","split","unhexChainId","LOCALSTORAGE_KEY","RpcMethodNames","SdkStorage","getValue","key","getSnapshot","setValue","value","snapshot","saveSnapshot","clear","clientId","JSON","parse","localStorage","getItem","setItem","stringify","storage","ProviderMethodNames","Rpc","config","sendAndWaitRpcRequest","_sendAndWaitRpcRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","method","params","timeout","request","wrap","_context","prev","next","sendRpcRequest","sent","waitRpcRequest","requestToken","abrupt","stop","_x","_x2","_x3","_sendRpcRequest","_callee2","_context2","sendRpcApiRequest","sessionId","scope","_x4","_x5","_waitRpcRequest","_callee3","_context3","waitForRequestResult","_x6","_x7","_sendRpcApiRequest","_callee4","response","_context4","fetch","pairingApiUrl","headers","body","jsonrpc","id","json","result","t0","_x8","_x9","Provider","ClientEventNames","_EventEmitter","_this$methods","_ref10","_ref9","_ref8","_ref6","_ref5","_ref4","_ref3","isGrinderyWallet","rpc","switchChain","_ref2","_ref","chainCaip","includes","chainChanged","methods","eth_requestAccounts","pairResult","_pairResult","eth_accounts","waitForPairingResult","pairingToken","session","t1","requestPairing","appId","redirectMode","redirectUrl","appUrl","connectUrl","connectUrlBrowser","shortToken","pair","miniAppPairingToken","t2","isArray","address","accountsChanged","eth_sendTransaction","personal_sign","_callee5","_context5","gws_disconnect","_callee6","_context6","disconnect","sessionToken","eth_chainId","_callee7","_","_context7","wallet_addEthereumChain","_callee8","_context8","wallet_switchEthereumChain","_callee9","_context9","injectProvider","listenForRequestProviderEvents","announceProvider","window","addEventListener","connect","restorePairing","restoreSession","isConnected","_request","_callee10","_ref11","_this$methods$method","_this$methods2","_context10","sendAsync","_ref12","_this$methods$method2","_this$methods3","then","res","_restorePairing","_callee11","_pairResult$session","accounts","_context11","namespaces","map","account","_restoreSession","_callee12","_context12","ethereum","providers","dispatchEvent","CustomEvent","detail","Object","freeze","info","provider","_this2","_window$Grindery","WalletAPI","sendApiRequest","_sendApiRequest","Grindery","WalletSDK","walletApiUrl","Authorization","ok","_window$Grindery2","_window$Grindery3","_window$Grindery4","_window$Grindery5","_window$Grindery6","location","origin","user","_extends","_i","_Object$entries","entries","_Object$entries$_i","attribute","elements","document","querySelectorAll","j","element","getAttribute","src","getConfigFromDataAttributes","detectPairingToken","getWeb3Provider","initTracking","handlePairing","isWalletConnected","_connect","_disconnect","sendTransaction","_sendTransaction","signMessage","_signMessage","_switchChain","getChain","getUserWalletAddress","_getUserWalletAddress","userId","trackClientEvent","walletAddressRequested","getUser","_getUser","api","setAppId","setConfig","_window$ethereum","find","_window$Telegram","WebApp","Telegram","miniAppUrl","replaceAll","_window$Telegram2","openTelegramLink","e","open","platform","_trackClientEvent","_window$Telegram3","userTelegramId","_window$Telegram4","_window$Telegram5","_window$Telegram6","String","initDataUnsafe","pageUrl","href","isMiniApp","Boolean","miniAppPlatform","miniAppSdkVersion","version","userAgent","navigator","wallets","walletConnected","walletDisconnected","urlParams","URLSearchParams","search","token","GrinderyWalletSDK"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 3fe813b..85d56b4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grindery-wallet-sdk", "author": "Egor Miliukov", - "version": "0.5.3", + "version": "0.5.4", "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/src/classes/Provider.ts b/src/classes/Provider.ts index 05bf9c1..d04a75f 100644 --- a/src/classes/Provider.ts +++ b/src/classes/Provider.ts @@ -117,6 +117,30 @@ export class Provider extends EventEmitter { return (await this.methods[method]?.(params)) as T; } + /** + * @summary Sends a request to the provider (legacy) + * @public + * @param {ProviderRequestArguments} args Request arguments + * @param {string} args.method The method name + * @param {ProviderRequestArgumentsParams} args.params The method parameters + * @param {Function} callback The callback function + * @deprecated Use `request` method instead + * @since 0.5.4 + * @returns {void} `void` + */ + public sendAsync( + { method, params }: ProviderRequestArguments, + callback: Function + ): void { + this.methods[method]?.(params) + .then((res) => { + callback(null, res); + }) + .catch((error) => { + callback(error); + }); + } + private storage: SdkStorage = new SdkStorage(); private rpc: Rpc;