@massalabs/wallet-provider 3.1.1-dev.20250110144120 → 3.1.1-dev.20250115113900

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"MetamaskWallet.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAGL,OAAO,EACP,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAM7D,qBAAa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,cAAc,CAAU;IAEzB,IAAI,IAAI,UAAU;gBAIN,QAAQ,EAAE,sBAAsB;WAItC,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY3C,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKtC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAW7C;;;;;OAKG;IACU,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI7C,oBAAoB,IAAI;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS;IAMtE;;;;;;;;;;;;;;OAcG;IACI,oBAAoB,CACzB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS;IA2B1C;;;;OAIG;IACU,OAAO;IAaP,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,OAAO,IAAI,OAAO;CAG1B"}
1
+ {"version":3,"file":"MetamaskWallet.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAEL,OAAO,EACP,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAM7D,qBAAa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,cAAc,CAAU;IAEzB,IAAI,IAAI,UAAU;gBAIN,QAAQ,EAAE,sBAAsB;WAItC,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY3C,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKtC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAW7C;;;;;OAKG;IACU,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI7C,oBAAoB,IAAI;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS;IAMtE;;;;;;;;;;;;;;OAcG;IACI,oBAAoB,CACzB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS;IA2B1C;;;;OAIG;IACU,OAAO;IAaP,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,OAAO,IAAI,OAAO;CAG1B"}
@@ -1,4 +1,4 @@
1
- import { getNetworkNameByChainId, Mas, } from '@massalabs/massa-web3';
1
+ import { getNetworkNameByChainId, } from '@massalabs/massa-web3';
2
2
  import { WalletName } from '../wallet';
3
3
  import { getMetamaskProvider } from './metamask';
4
4
  import { connectSnap, isConnected } from './snap';
@@ -44,7 +44,7 @@ export class MetamaskWallet {
44
44
  name: getNetworkNameByChainId(BigInt(res.chainId)),
45
45
  chainId: BigInt(res.chainId),
46
46
  url: res.network,
47
- minimalFee: Mas.fromString(res.minimalFees),
47
+ minimalFee: BigInt(res.minimalFees),
48
48
  };
49
49
  }
50
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MetamaskWallet.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,GAAG,GAGJ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAE5D,MAAM,OAAO,cAAc;IACjB,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;IACjC,gBAAgB,CAAyB;IACzC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,cAAc,CAAU;IAEzB,IAAI;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,YAAmB,QAAgC;QACjD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC5B,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAE7C,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAE3B,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;SACrC;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEpD,OAAO;YACL,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAC5B,GAAG,EAAE,GAAG,CAAC,OAAO;YAChB,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,SAAS,CAAC,GAAW;QAChC,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,oBAAoB;QACzB,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,oBAAoB,CACzB,QAAoC;QAEpC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;gBAC9B,OAAO;aACR;YACD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;gBAC7C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;aAC7D;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO;YACL,WAAW,EAAE,GAAG,EAAE;gBAChB,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,cAAc,CAChC,wBAAwB;gBACxB,gEAAgE;gBAChE,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,IAAI;YACF,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE3D,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC1C;YACD,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,SAAS;QACd,OAAO,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAEM,OAAO;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import { Wallet } from '../wallet/interface';\nimport {\n getNetworkNameByChainId,\n Mas,\n Network,\n Provider,\n} from '@massalabs/massa-web3';\nimport { WalletName } from '../wallet';\nimport { getMetamaskProvider } from './metamask';\nimport { connectSnap, isConnected } from './snap';\nimport { MetamaskAccount } from './MetamaskAccount';\nimport { MetaMaskInpageProvider } from '@metamask/providers';\nimport { getActiveAccount, getNetwork, setRpcUrl } from './services';\nimport EventEmitter from 'eventemitter3';\n\nconst METAMASK_NETWORK_CHANGED = 'METAMASK_NETWORK_CHANGED';\n\nexport class MetamaskWallet implements Wallet {\n private walletName = WalletName.Metamask;\n private metamaskProvider: MetaMaskInpageProvider;\n private eventsListener = new EventEmitter();\n private currentNetwork: Network;\n\n public name(): WalletName {\n return this.walletName;\n }\n\n public constructor(provider: MetaMaskInpageProvider) {\n this.metamaskProvider = provider;\n }\n\n static async createIfInstalled(): Promise<Wallet | null> {\n try {\n const metamask = await getMetamaskProvider();\n\n if (!metamask) return null;\n\n return new MetamaskWallet(metamask);\n } catch (error) {\n return null;\n }\n }\n\n public async accounts(): Promise<MetamaskAccount[]> {\n const res = await getActiveAccount(this.metamaskProvider);\n return [new MetamaskAccount(res.address, this.metamaskProvider)];\n }\n\n public async importAccount(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n public async deleteAccount(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n public async networkInfos(): Promise<Network> {\n const res = await getNetwork(this.metamaskProvider);\n\n return {\n name: getNetworkNameByChainId(BigInt(res.chainId)),\n chainId: BigInt(res.chainId),\n url: res.network,\n minimalFee: Mas.fromString(res.minimalFees),\n };\n }\n\n /**\n * Sets the RPC URL for the MetaMask provider.\n *\n * @param url - The new RPC URL.\n * @returns A promise that resolves when the RPC URL is updated.\n */\n public async setRpcUrl(url: string): Promise<void> {\n await setRpcUrl(this.metamaskProvider, { network: url });\n }\n\n public async generateNewAccount(): Promise<Provider> {\n throw new Error('Method not implemented.');\n }\n\n public listenAccountChanges(): { unsubscribe: () => void } | undefined {\n throw new Error(\n 'listenAccountChanges is not yet implemented for the current provider.',\n );\n }\n\n /**\n * Subscribes to network changes.\n *\n * @param callback - Callback function called when the network changes.\n * @returns An object with an `unsubscribe` method to stop listening.\n * @remarks Periodically checks for network changes every 500ms.\n *\n * @example\n * ```typescript\n * const observer = await provider.listenNetworkChanges((network) => {\n * console.log(network);\n * });\n * observer.unsubscribe();\n * ```\n */\n public listenNetworkChanges(\n callback: (network: Network) => void,\n ): { unsubscribe: () => void } | undefined {\n this.eventsListener.on(METAMASK_NETWORK_CHANGED, (evt) => callback(evt));\n\n const intervalId = setInterval(async () => {\n const network = await this.networkInfos();\n if (!this.currentNetwork) {\n this.currentNetwork = network;\n return;\n }\n if (this.currentNetwork.name !== network.name) {\n this.currentNetwork = network;\n this.eventsListener.emit(METAMASK_NETWORK_CHANGED, network);\n }\n }, 500);\n\n return {\n unsubscribe: () => {\n clearInterval(intervalId);\n this.eventsListener.removeListener(\n METAMASK_NETWORK_CHANGED,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n );\n },\n };\n }\n\n /**\n * Connects to MetaMask and ensures it is unlocked and ready.\n *\n * @returns A promise that resolves to `true` if connected successfully, otherwise `false`.\n */\n public async connect() {\n try {\n const connected = await isConnected(this.metamaskProvider);\n\n if (!connected) {\n await connectSnap(this.metamaskProvider);\n }\n return true;\n } catch (error) {\n return false;\n }\n }\n\n public async disconnect(): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n\n public connected(): Promise<boolean> {\n return isConnected(this.metamaskProvider);\n }\n\n public enabled(): boolean {\n throw new Error('Method not implemented.');\n }\n}\n"]}
1
+ {"version":3,"file":"MetamaskWallet.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskWallet.ts"],"names":[],"mappings":"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","sourcesContent":["import { Wallet } from '../wallet/interface';\nimport {\n getNetworkNameByChainId,\n Network,\n Provider,\n} from '@massalabs/massa-web3';\nimport { WalletName } from '../wallet';\nimport { getMetamaskProvider } from './metamask';\nimport { connectSnap, isConnected } from './snap';\nimport { MetamaskAccount } from './MetamaskAccount';\nimport { MetaMaskInpageProvider } from '@metamask/providers';\nimport { getActiveAccount, getNetwork, setRpcUrl } from './services';\nimport EventEmitter from 'eventemitter3';\n\nconst METAMASK_NETWORK_CHANGED = 'METAMASK_NETWORK_CHANGED';\n\nexport class MetamaskWallet implements Wallet {\n private walletName = WalletName.Metamask;\n private metamaskProvider: MetaMaskInpageProvider;\n private eventsListener = new EventEmitter();\n private currentNetwork: Network;\n\n public name(): WalletName {\n return this.walletName;\n }\n\n public constructor(provider: MetaMaskInpageProvider) {\n this.metamaskProvider = provider;\n }\n\n static async createIfInstalled(): Promise<Wallet | null> {\n try {\n const metamask = await getMetamaskProvider();\n\n if (!metamask) return null;\n\n return new MetamaskWallet(metamask);\n } catch (error) {\n return null;\n }\n }\n\n public async accounts(): Promise<MetamaskAccount[]> {\n const res = await getActiveAccount(this.metamaskProvider);\n return [new MetamaskAccount(res.address, this.metamaskProvider)];\n }\n\n public async importAccount(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n public async deleteAccount(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n public async networkInfos(): Promise<Network> {\n const res = await getNetwork(this.metamaskProvider);\n\n return {\n name: getNetworkNameByChainId(BigInt(res.chainId)),\n chainId: BigInt(res.chainId),\n url: res.network,\n minimalFee: BigInt(res.minimalFees),\n };\n }\n\n /**\n * Sets the RPC URL for the MetaMask provider.\n *\n * @param url - The new RPC URL.\n * @returns A promise that resolves when the RPC URL is updated.\n */\n public async setRpcUrl(url: string): Promise<void> {\n await setRpcUrl(this.metamaskProvider, { network: url });\n }\n\n public async generateNewAccount(): Promise<Provider> {\n throw new Error('Method not implemented.');\n }\n\n public listenAccountChanges(): { unsubscribe: () => void } | undefined {\n throw new Error(\n 'listenAccountChanges is not yet implemented for the current provider.',\n );\n }\n\n /**\n * Subscribes to network changes.\n *\n * @param callback - Callback function called when the network changes.\n * @returns An object with an `unsubscribe` method to stop listening.\n * @remarks Periodically checks for network changes every 500ms.\n *\n * @example\n * ```typescript\n * const observer = await provider.listenNetworkChanges((network) => {\n * console.log(network);\n * });\n * observer.unsubscribe();\n * ```\n */\n public listenNetworkChanges(\n callback: (network: Network) => void,\n ): { unsubscribe: () => void } | undefined {\n this.eventsListener.on(METAMASK_NETWORK_CHANGED, (evt) => callback(evt));\n\n const intervalId = setInterval(async () => {\n const network = await this.networkInfos();\n if (!this.currentNetwork) {\n this.currentNetwork = network;\n return;\n }\n if (this.currentNetwork.name !== network.name) {\n this.currentNetwork = network;\n this.eventsListener.emit(METAMASK_NETWORK_CHANGED, network);\n }\n }, 500);\n\n return {\n unsubscribe: () => {\n clearInterval(intervalId);\n this.eventsListener.removeListener(\n METAMASK_NETWORK_CHANGED,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n );\n },\n };\n }\n\n /**\n * Connects to MetaMask and ensures it is unlocked and ready.\n *\n * @returns A promise that resolves to `true` if connected successfully, otherwise `false`.\n */\n public async connect() {\n try {\n const connected = await isConnected(this.metamaskProvider);\n\n if (!connected) {\n await connectSnap(this.metamaskProvider);\n }\n return true;\n } catch (error) {\n return false;\n }\n }\n\n public async disconnect(): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n\n public connected(): Promise<boolean> {\n return isConnected(this.metamaskProvider);\n }\n\n public enabled(): boolean {\n throw new Error('Method not implemented.');\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@massalabs/wallet-provider",
3
- "version": "3.1.1-dev.20250110144120",
3
+ "version": "3.1.1-dev.20250115113900",
4
4
  "description": "massa's wallet provider",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",