@massalabs/wallet-provider 3.2.1-dev.20250520130105 → 3.2.1-dev.20250523123439
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/bearbyWallet/BearbyAccount.d.ts +2 -1
- package/dist/esm/bearbyWallet/BearbyAccount.d.ts.map +1 -1
- package/dist/esm/bearbyWallet/BearbyAccount.js +9 -0
- package/dist/esm/bearbyWallet/BearbyAccount.js.map +1 -1
- package/dist/esm/massaStation/MassaStationAccount.d.ts +2 -1
- package/dist/esm/massaStation/MassaStationAccount.d.ts.map +1 -1
- package/dist/esm/massaStation/MassaStationAccount.js +9 -0
- package/dist/esm/massaStation/MassaStationAccount.js.map +1 -1
- package/dist/esm/metamaskSnap/MetamaskAccount.d.ts +2 -1
- package/dist/esm/metamaskSnap/MetamaskAccount.d.ts.map +1 -1
- package/dist/esm/metamaskSnap/MetamaskAccount.js +19 -24
- package/dist/esm/metamaskSnap/MetamaskAccount.js.map +1 -1
- package/dist/esm/metamaskSnap/utils/network.d.ts +2 -2
- package/dist/esm/metamaskSnap/utils/network.d.ts.map +1 -1
- package/dist/esm/metamaskSnap/utils/network.js +2 -2
- package/dist/esm/metamaskSnap/utils/network.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Address, CallSCParams, DeploySCParams, EventFilter, Network, NodeStatusInfo, Operation, OperationOptions, OperationStatus, Provider, ReadSCData, ReadSCParams, SignedData, SmartContract, rpcTypes, ExecuteScParams } from '@massalabs/massa-web3';
|
|
1
|
+
import { Address, CallSCParams, DeploySCParams, EventFilter, Network, NodeStatusInfo, Operation, OperationOptions, OperationStatus, Provider, ReadSCData, ReadSCParams, SignedData, SmartContract, rpcTypes, ExecuteScParams, ExecuteSCReadOnlyParams, ExecuteSCReadOnlyResult } from '@massalabs/massa-web3';
|
|
2
2
|
export declare class BearbyAccount implements Provider {
|
|
3
3
|
address: string;
|
|
4
4
|
constructor(address: string);
|
|
@@ -20,6 +20,7 @@ export declare class BearbyAccount implements Provider {
|
|
|
20
20
|
readSC(params: ReadSCParams): Promise<ReadSCData>;
|
|
21
21
|
deploySC(params: DeploySCParams): Promise<SmartContract>;
|
|
22
22
|
executeSC(params: ExecuteScParams): Promise<Operation>;
|
|
23
|
+
executeSCReadOnly(params: ExecuteSCReadOnlyParams): Promise<ExecuteSCReadOnlyResult>;
|
|
23
24
|
getOperationStatus(opId: string): Promise<OperationStatus>;
|
|
24
25
|
getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents>;
|
|
25
26
|
getNodeStatus(): Promise<NodeStatusInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyAccount.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"AASA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAIX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EAIb,QAAQ,EAER,eAAe,
|
|
1
|
+
{"version":3,"file":"BearbyAccount.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"AASA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,WAAW,EAIX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EAIb,QAAQ,EAER,eAAe,EAEf,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAQ/B,qBAAa,aAAc,YAAW,QAAQ;IAClB,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAEzC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;YAUa,SAAS;IAYV,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBvC,SAAS,CACpB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAerC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBpD,QAAQ,CACnB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;IAUR,SAAS,CACpB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;IAUR,QAAQ,CACnB,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EAEd,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,SAAS,CAAC;YAeP,UAAU;IAKX,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAkChD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA0DjD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAwDxD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAwB7D,iBAAiB,CACrB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC;IAWtB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmC1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IA6B9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAQxC,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BX,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;CAkBzB"}
|
|
@@ -262,6 +262,15 @@ export class BearbyAccount {
|
|
|
262
262
|
const operationId = await web3.contract.executeBytecode(args);
|
|
263
263
|
return new Operation(this, operationId);
|
|
264
264
|
}
|
|
265
|
+
async executeSCReadOnly(params) {
|
|
266
|
+
try {
|
|
267
|
+
const client = await this.getClient();
|
|
268
|
+
return client.executeSCReadOnly(params);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
throw new Error(`Error during readonly smart contract bytecode execution: ${error}`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
265
274
|
async getOperationStatus(opId) {
|
|
266
275
|
try {
|
|
267
276
|
const res = await web3.massa.getOperations(opId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BearbyAccount.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EventFilterParam,\n web3,\n DatastoreEntryInputParam,\n JsonRPCResponse,\n ExecuteBytecodeParams,\n} from '@hicaru/bearby.js';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DEPLOYER_BYTECODE,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n StorageCost,\n strToBytes,\n bytesToStr,\n rpcTypes,\n JsonRpcPublicProvider,\n ExecuteScParams,\n populateDatastore,\n} from '@massalabs/massa-web3';\nimport { networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport isEqual from 'lodash.isequal';\nimport { uint8ArrayToBase64 } from '../utils/base64';\n\nlet jsonClient: JsonRpcPublicProvider;\n\nexport class BearbyAccount implements Provider {\n public constructor(public address: string) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Bearby;\n }\n\n // public async connect() {\n // try {\n // await web3.wallet.connect();\n // } catch (ex) {\n // console.log('Bearby connection error: ', ex);\n // }\n // }\n\n private async getClient(): Promise<JsonRpcPublicProvider> {\n if (!jsonClient) {\n const network = await networkInfos();\n jsonClient = (\n network.name === 'mainnet'\n ? JsonRpcPublicProvider.mainnet()\n : JsonRpcPublicProvider.buildnet()\n ) as JsonRpcPublicProvider;\n }\n return jsonClient;\n }\n\n public async balance(final = false): Promise<bigint> {\n // // TODO: check if we need to connect every time\n // await this.connect();\n\n try {\n const res = await web3.massa.getAddresses(this.address);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n const { final_balance, candidate_balance } = res.result[0];\n\n return Mas.fromString(final ? final_balance : candidate_balance);\n } catch (error) {\n const errorMessage = `An unexpected error occurred while fetching the account balance: ${error.message}.`;\n\n throw new Error(errorMessage);\n }\n }\n\n public async balanceOf(\n addresses: string[],\n final?: boolean,\n ): Promise<{ address: string; balance: bigint }[]> {\n const res = await web3.massa.getAddresses(...addresses);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n return res.result.map((addressInfo) => {\n const { final_balance, candidate_balance } = addressInfo;\n return {\n address: addressInfo.address,\n balance: Mas.fromString(final ? final_balance : candidate_balance),\n };\n });\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async sign(data: Uint8Array | string): Promise<SignedData> {\n // await this.connect();\n\n if (data instanceof Uint8Array) {\n data = bytesToStr(data);\n }\n\n try {\n const signature = await web3.wallet.signMessage(data);\n\n return {\n publicKey: signature.publicKey,\n signature: signature.signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.buyRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.BuyRolls, error);\n }\n }\n\n public async sellRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.sellRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SellRolls, error);\n }\n }\n\n public async transfer(\n to: Address | string,\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n\n try {\n const operationId = await web3.massa.payment(\n amount.toString(),\n to.toString(),\n );\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const { minimalFee } = await this.networkInfos();\n return minimalFee;\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // await this.connect();\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params.fee ?? (await this.minimalFee());\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.getGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n try {\n const operationId = await web3.contract.call({\n // TODO: add bigint support in bearby.js\n maxGas: Number(maxGas),\n coins: Number(params.coins || 0),\n fee: Number(fee),\n targetAddress: params.target,\n functionName: params.func,\n unsafeParameters,\n });\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}.`,\n );\n }\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n\n try {\n // const res = await web3.contract.readSmartContract({\n // // TODO: add bigint support in bearby.js\n // maxGas: Number(params.maxGas),\n // coins: Number(params.coins),\n // fee: Number(fee),\n // targetAddress: params.target,\n // targetFunction: params.func,\n // // TODO: add unsafeParameters to bearby.js\n // // https://github.com/bearby-wallet/bearby-web3/pull/18\n // parameter: unsafeParameters as any,\n // });\n\n // console.log('bearby readSC res', res[0]);\n // const data = res[0].result[0];\n\n // return {\n // value: data.result.Ok ? Uint8Array.from(data.result.Ok): new Uint8Array(),\n // info: {\n // error: data.result.Error,\n // events: data.output_events.map((event: SCEvent) => ({\n // data: event.data,\n // context: event.context,\n // })),\n // gasCost: data.gas_cost,\n // },\n // };\n\n // Temp implementation to remove when bearby.js is fixed\n const client = await this.getClient();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter: unsafeParameters,\n };\n return client.readSC(readOnlyParams);\n } catch (error) {\n throw new Error(\n `An error occurred while reading the smart contract: ${error.message}`,\n );\n }\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const fee = Number(params.fee ?? (await this.minimalFee()));\n const coins = params.coins ?? 0n;\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n\n const datastore = populateDatastore([\n {\n data: params.byteCode,\n args: parameters,\n coins,\n },\n ]);\n\n maxGas = await client.executeSCGasEstimation({\n ...params,\n byteCode: DEPLOYER_BYTECODE,\n datastore,\n caller: this.address,\n });\n }\n\n const bearbyParams = {\n maxCoins,\n maxGas,\n coins,\n fee,\n contractDataBase64: uint8ArrayToBase64(params.byteCode),\n deployerBase64: uint8ArrayToBase64(DEPLOYER_BYTECODE),\n unsafeParameters: parameters,\n };\n\n const operationId = await web3.contract.deploy(bearbyParams);\n\n const operation = new Operation(this, operationId);\n\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n console.error('Error deploying smart contract:', error);\n throw new Error(`Failed to deploy smart contract: ${error.message}`);\n }\n }\n\n public async executeSC(params: ExecuteScParams): Promise<Operation> {\n const fee = params.fee ?? (await this.minimalFee());\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const args: ExecuteBytecodeParams = {\n maxCoins: params.maxCoins ?? 0n,\n maxGas,\n fee,\n bytecodeBase64: uint8ArrayToBase64(params.byteCode),\n datastore: params.datastore ?? new Map<Uint8Array, Uint8Array>(),\n };\n\n const operationId = await web3.contract.executeBytecode(args);\n\n return new Operation(this, operationId);\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n try {\n const res = await web3.massa.getOperations(opId);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getOperations error');\n }\n const op = res.result[0];\n if (op.op_exec_status === null) {\n if (op.is_operation_final === null) {\n return OperationStatus.NotFound;\n }\n throw new Error('unexpected status');\n }\n\n if (op.in_pool) {\n return OperationStatus.PendingInclusion;\n }\n\n if (!op.is_operation_final) {\n return op.op_exec_status\n ? OperationStatus.SpeculativeSuccess\n : OperationStatus.SpeculativeError;\n }\n\n return op.op_exec_status\n ? OperationStatus.Success\n : OperationStatus.Error;\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const formattedFilter: EventFilterParam = {\n start: filter.start,\n end: filter.end,\n emitter_address: filter.smartContractAddress,\n original_caller_address: filter.callerAddress,\n original_operation_id: filter.operationId,\n is_final: filter.isFinal,\n is_error: filter.isError,\n };\n\n try {\n /* \n Currently getFilteredSCOutputEvent is supposed to return a JsonRPCResponseFilteredSCOutputEvent object.\n But in practice it's returning an array of JsonRPCResponse<rpcTypes.OutputEvents> objects.\n */\n const res = (await web3.contract.getFilteredSCOutputEvent(\n formattedFilter,\n )) as JsonRPCResponse<rpcTypes.OutputEvents>[];\n\n if (res?.[0]?.error) throw res[0].error;\n return res?.[0]?.result ?? [];\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const status = await web3.massa.getNodesStatus();\n if (status.error || !status.result) {\n throw new Error(status.error?.message || 'Bearby getNodeStatus error');\n }\n return formatNodeStatusObject(status.result);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const res = await web3.massa.getAddresses(address);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getStorageKeys error');\n }\n\n const addressInfo = res.result[0];\n const keys = final\n ? addressInfo.final_datastore_keys\n : addressInfo.candidate_datastore_keys;\n\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n\n return keys\n .filter(\n (key) =>\n !filter.length ||\n isEqual(\n Uint8Array.from(key.slice(0, filterBytes.length)),\n filterBytes,\n ),\n )\n .map((d) => Uint8Array.from(d));\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n try {\n const input: DatastoreEntryInputParam[] = keys.map((key) => ({\n key,\n address,\n }));\n const data = await web3.contract.getDatastoreEntries(...input);\n const resultArray = data[0]['result'];\n const dataArray = final\n ? resultArray.map((d) => Uint8Array.from(d.final_value))\n : resultArray.map((d) => Uint8Array.from(d.candidate_value));\n return dataArray;\n } catch (error) {\n throw new Error(\n `An error occurred while reading the storage: ${error.message}`,\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BearbyAccount.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EventFilterParam,\n web3,\n DatastoreEntryInputParam,\n JsonRPCResponse,\n ExecuteBytecodeParams,\n} from '@hicaru/bearby.js';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n DEPLOYER_BYTECODE,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n StorageCost,\n strToBytes,\n bytesToStr,\n rpcTypes,\n JsonRpcPublicProvider,\n ExecuteScParams,\n populateDatastore,\n ExecuteSCReadOnlyParams,\n ExecuteSCReadOnlyResult,\n} from '@massalabs/massa-web3';\nimport { networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport isEqual from 'lodash.isequal';\nimport { uint8ArrayToBase64 } from '../utils/base64';\n\nlet jsonClient: JsonRpcPublicProvider;\n\nexport class BearbyAccount implements Provider {\n public constructor(public address: string) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Bearby;\n }\n\n // public async connect() {\n // try {\n // await web3.wallet.connect();\n // } catch (ex) {\n // console.log('Bearby connection error: ', ex);\n // }\n // }\n\n private async getClient(): Promise<JsonRpcPublicProvider> {\n if (!jsonClient) {\n const network = await networkInfos();\n jsonClient = (\n network.name === 'mainnet'\n ? JsonRpcPublicProvider.mainnet()\n : JsonRpcPublicProvider.buildnet()\n ) as JsonRpcPublicProvider;\n }\n return jsonClient;\n }\n\n public async balance(final = false): Promise<bigint> {\n // // TODO: check if we need to connect every time\n // await this.connect();\n\n try {\n const res = await web3.massa.getAddresses(this.address);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n const { final_balance, candidate_balance } = res.result[0];\n\n return Mas.fromString(final ? final_balance : candidate_balance);\n } catch (error) {\n const errorMessage = `An unexpected error occurred while fetching the account balance: ${error.message}.`;\n\n throw new Error(errorMessage);\n }\n }\n\n public async balanceOf(\n addresses: string[],\n final?: boolean,\n ): Promise<{ address: string; balance: bigint }[]> {\n const res = await web3.massa.getAddresses(...addresses);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getAddresses error');\n }\n\n return res.result.map((addressInfo) => {\n const { final_balance, candidate_balance } = addressInfo;\n return {\n address: addressInfo.address,\n balance: Mas.fromString(final ? final_balance : candidate_balance),\n };\n });\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async sign(data: Uint8Array | string): Promise<SignedData> {\n // await this.connect();\n\n if (data instanceof Uint8Array) {\n data = bytesToStr(data);\n }\n\n try {\n const signature = await web3.wallet.signMessage(data);\n\n return {\n publicKey: signature.publicKey,\n signature: signature.signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.buyRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.BuyRolls, error);\n }\n }\n\n public async sellRolls(\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n try {\n const operationId = await web3.massa.sellRolls(amount.toString());\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SellRolls, error);\n }\n }\n\n public async transfer(\n to: Address | string,\n amount: bigint,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _opts?: OperationOptions,\n ): Promise<Operation> {\n // await this.connect();\n\n try {\n const operationId = await web3.massa.payment(\n amount.toString(),\n to.toString(),\n );\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const { minimalFee } = await this.networkInfos();\n return minimalFee;\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // await this.connect();\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params.fee ?? (await this.minimalFee());\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.getGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n try {\n const operationId = await web3.contract.call({\n // TODO: add bigint support in bearby.js\n maxGas: Number(maxGas),\n coins: Number(params.coins || 0),\n fee: Number(fee),\n targetAddress: params.target,\n functionName: params.func,\n unsafeParameters,\n });\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}.`,\n );\n }\n\n const args = params.parameter ?? new Uint8Array();\n const unsafeParameters =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n\n try {\n // const res = await web3.contract.readSmartContract({\n // // TODO: add bigint support in bearby.js\n // maxGas: Number(params.maxGas),\n // coins: Number(params.coins),\n // fee: Number(fee),\n // targetAddress: params.target,\n // targetFunction: params.func,\n // // TODO: add unsafeParameters to bearby.js\n // // https://github.com/bearby-wallet/bearby-web3/pull/18\n // parameter: unsafeParameters as any,\n // });\n\n // console.log('bearby readSC res', res[0]);\n // const data = res[0].result[0];\n\n // return {\n // value: data.result.Ok ? Uint8Array.from(data.result.Ok): new Uint8Array(),\n // info: {\n // error: data.result.Error,\n // events: data.output_events.map((event: SCEvent) => ({\n // data: event.data,\n // context: event.context,\n // })),\n // gasCost: data.gas_cost,\n // },\n // };\n\n // Temp implementation to remove when bearby.js is fixed\n const client = await this.getClient();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter: unsafeParameters,\n };\n return client.readSC(readOnlyParams);\n } catch (error) {\n throw new Error(\n `An error occurred while reading the smart contract: ${error.message}`,\n );\n }\n }\n\n public async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const fee = Number(params.fee ?? (await this.minimalFee()));\n const coins = params.coins ?? 0n;\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n\n const datastore = populateDatastore([\n {\n data: params.byteCode,\n args: parameters,\n coins,\n },\n ]);\n\n maxGas = await client.executeSCGasEstimation({\n ...params,\n byteCode: DEPLOYER_BYTECODE,\n datastore,\n caller: this.address,\n });\n }\n\n const bearbyParams = {\n maxCoins,\n maxGas,\n coins,\n fee,\n contractDataBase64: uint8ArrayToBase64(params.byteCode),\n deployerBase64: uint8ArrayToBase64(DEPLOYER_BYTECODE),\n unsafeParameters: parameters,\n };\n\n const operationId = await web3.contract.deploy(bearbyParams);\n\n const operation = new Operation(this, operationId);\n\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n console.error('Error deploying smart contract:', error);\n throw new Error(`Failed to deploy smart contract: ${error.message}`);\n }\n }\n\n public async executeSC(params: ExecuteScParams): Promise<Operation> {\n const fee = params.fee ?? (await this.minimalFee());\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await this.getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const args: ExecuteBytecodeParams = {\n maxCoins: params.maxCoins ?? 0n,\n maxGas,\n fee,\n bytecodeBase64: uint8ArrayToBase64(params.byteCode),\n datastore: params.datastore ?? new Map<Uint8Array, Uint8Array>(),\n };\n\n const operationId = await web3.contract.executeBytecode(args);\n\n return new Operation(this, operationId);\n }\n\n async executeSCReadOnly(\n params: ExecuteSCReadOnlyParams,\n ): Promise<ExecuteSCReadOnlyResult> {\n try {\n const client = await this.getClient();\n return client.executeSCReadOnly(params);\n } catch (error) {\n throw new Error(\n `Error during readonly smart contract bytecode execution: ${error}`,\n );\n }\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n try {\n const res = await web3.massa.getOperations(opId);\n\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getOperations error');\n }\n const op = res.result[0];\n if (op.op_exec_status === null) {\n if (op.is_operation_final === null) {\n return OperationStatus.NotFound;\n }\n throw new Error('unexpected status');\n }\n\n if (op.in_pool) {\n return OperationStatus.PendingInclusion;\n }\n\n if (!op.is_operation_final) {\n return op.op_exec_status\n ? OperationStatus.SpeculativeSuccess\n : OperationStatus.SpeculativeError;\n }\n\n return op.op_exec_status\n ? OperationStatus.Success\n : OperationStatus.Error;\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const formattedFilter: EventFilterParam = {\n start: filter.start,\n end: filter.end,\n emitter_address: filter.smartContractAddress,\n original_caller_address: filter.callerAddress,\n original_operation_id: filter.operationId,\n is_final: filter.isFinal,\n is_error: filter.isError,\n };\n\n try {\n /* \n Currently getFilteredSCOutputEvent is supposed to return a JsonRPCResponseFilteredSCOutputEvent object.\n But in practice it's returning an array of JsonRPCResponse<rpcTypes.OutputEvents> objects.\n */\n const res = (await web3.contract.getFilteredSCOutputEvent(\n formattedFilter,\n )) as JsonRPCResponse<rpcTypes.OutputEvents>[];\n\n if (res?.[0]?.error) throw res[0].error;\n return res?.[0]?.result ?? [];\n } catch (error) {\n throw new Error(\n `An error occurred while fetching the operation status: ${error.message}`,\n );\n }\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const status = await web3.massa.getNodesStatus();\n if (status.error || !status.result) {\n throw new Error(status.error?.message || 'Bearby getNodeStatus error');\n }\n return formatNodeStatusObject(status.result);\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const res = await web3.massa.getAddresses(address);\n if (res.error || !res.result) {\n throw new Error(res.error?.message || 'Bearby getStorageKeys error');\n }\n\n const addressInfo = res.result[0];\n const keys = final\n ? addressInfo.final_datastore_keys\n : addressInfo.candidate_datastore_keys;\n\n const filterBytes: Uint8Array =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n\n return keys\n .filter(\n (key) =>\n !filter.length ||\n isEqual(\n Uint8Array.from(key.slice(0, filterBytes.length)),\n filterBytes,\n ),\n )\n .map((d) => Uint8Array.from(d));\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<Uint8Array[]> {\n try {\n const input: DatastoreEntryInputParam[] = keys.map((key) => ({\n key,\n address,\n }));\n const data = await web3.contract.getDatastoreEntries(...input);\n const resultArray = data[0]['result'];\n const dataArray = final\n ? resultArray.map((d) => Uint8Array.from(d.final_value))\n : resultArray.map((d) => Uint8Array.from(d.candidate_value));\n return dataArray;\n } catch (error) {\n throw new Error(\n `An error occurred while reading the storage: ${error.message}`,\n );\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MSDeploySCParams, MSExecuteScParams } from './types';
|
|
2
|
-
import { Address, CallSCParams, EventFilter, Network, NodeStatusInfo, Operation, OperationOptions, OperationStatus, Provider, ReadSCData, ReadSCParams, SignedData, SignOptions, SmartContract, rpcTypes } from '@massalabs/massa-web3';
|
|
2
|
+
import { Address, CallSCParams, EventFilter, Network, NodeStatusInfo, Operation, OperationOptions, OperationStatus, Provider, ReadSCData, ReadSCParams, SignedData, SignOptions, SmartContract, rpcTypes, ExecuteSCReadOnlyResult, ExecuteSCReadOnlyParams } from '@massalabs/massa-web3';
|
|
3
3
|
/**
|
|
4
4
|
* This module contains the MassaStationAccount class. It is responsible for representing an account in
|
|
5
5
|
* the MassaStation wallet.
|
|
@@ -30,6 +30,7 @@ export declare class MassaStationAccount implements Provider {
|
|
|
30
30
|
readSC(params: ReadSCParams): Promise<ReadSCData>;
|
|
31
31
|
deploySC(params: MSDeploySCParams): Promise<SmartContract>;
|
|
32
32
|
executeSC(params: MSExecuteScParams): Promise<Operation>;
|
|
33
|
+
executeSCReadOnly(params: ExecuteSCReadOnlyParams): Promise<ExecuteSCReadOnlyResult>;
|
|
33
34
|
getOperationStatus(opId: string): Promise<OperationStatus>;
|
|
34
35
|
getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents>;
|
|
35
36
|
getNodeStatus(): Promise<NodeStatusInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassaStationAccount.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"AAOA,OAAO,EAOL,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EAGX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,QAAQ,
|
|
1
|
+
{"version":3,"file":"MassaStationAccount.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"AAOA,OAAO,EAOL,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EAGX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EAKR,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAK/B;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAIzC,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IAJ5B,OAAO,CAAC,aAAa,CAA0B;gBAGtC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM;IAG5B,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEY,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAU9C,SAAS,CACb,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,UAAQ,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAsBrC,IAAI,CACf,IAAI,EAAE,UAAU,GAAG,MAAM,EACzB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;YA2BR,UAAU;YAMV,aAAa;IAwBd,QAAQ,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIR,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAIf,QAAQ,CACZ,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAqBR,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAqChD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BjD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgEjE,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IA+CxD,iBAAiB,CACrB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC;IAWtB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAM1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAM9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAKxC,cAAc,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IAMX,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;CAKlC"}
|
|
@@ -246,6 +246,15 @@ export class MassaStationAccount {
|
|
|
246
246
|
throw new Error(`Error during smart contract bytecode execution: ${error}`);
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
+
async executeSCReadOnly(params) {
|
|
250
|
+
try {
|
|
251
|
+
const client = await getClient();
|
|
252
|
+
return client.executeSCReadOnly(params);
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
throw new Error(`Error during readonly smart contract bytecode execution: ${error}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
249
258
|
async getOperationStatus(opId) {
|
|
250
259
|
const client = await getClient();
|
|
251
260
|
// This implementation is wrong. We should use massaStation instead of targeting the node directly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassaStationAccount.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRequest, postRequest } from './RequestHandler';\nimport { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet';\nimport {\n argsToBase64,\n base64ToByteArray,\n uint8ArrayToBase64,\n} from '../utils/base64';\nimport {\n DeploySCFunctionBody,\n ExecuteFunctionBody,\n ExecuteSCBody,\n MSAccountSignPayload,\n MSAccountSignResp,\n MSBalancesResp,\n MSDeploySCParams,\n MSExecuteScParams,\n MSSendOperationResp,\n} from './types';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n EventFilter,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SignOptions,\n SmartContract,\n rpcTypes,\n StorageCost,\n formatMas,\n DEPLOYER_BYTECODE,\n populateDatastore,\n} from '@massalabs/massa-web3';\nimport { getClient, networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport bs58check from 'bs58check';\n\n/**\n * This module contains the MassaStationAccount class. It is responsible for representing an account in\n * the MassaStation wallet.\n *\n * @remarks\n * This class provides methods to interact with MassaStation account's {@link balance} and to {@link sign} messages.\n *\n */\nexport class MassaStationAccount implements Provider {\n private _providerName = WalletName.MassaWallet;\n\n constructor(\n public address: string,\n public accountName: string,\n ) {}\n\n get providerName(): string {\n return this._providerName;\n }\n\n public async balance(final = false): Promise<bigint> {\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?attributes=balance&addresses=${this.address}`,\n );\n\n const balances = result.addressesAttributes[this.address].balance;\n\n return Mas.fromString(final ? balances.final : balances.pending);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const queryParams = new URLSearchParams();\n\n queryParams.append('attributes', 'balance');\n addresses.forEach((address) => {\n queryParams.append('addresses', address);\n });\n\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?${queryParams.toString()}`,\n );\n\n return addresses.map((address) => {\n const balance = result.addressesAttributes[address].balance;\n\n return {\n address,\n balance: Mas.fromString(final ? balance.final : balance.pending),\n };\n });\n }\n\n public async sign(\n data: Uint8Array | string,\n opts?: SignOptions,\n ): Promise<SignedData> {\n const signData: MSAccountSignPayload = {\n description: opts?.description ?? '',\n message: typeof data === 'string' ? data : new TextDecoder().decode(data),\n DisplayData: opts?.displayData ?? true,\n };\n\n try {\n const { result } = await postRequest<MSAccountSignResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/signMessage`,\n signData,\n );\n\n // MS Wallet encodes signature in base64... so we need to decode it en re-encode it in base58\n const signature = bs58check.encode(\n await base64ToByteArray(result.signature),\n );\n\n return {\n publicKey: result.publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const client = await getClient();\n const { minimalFee } = await client.networkInfos();\n return minimalFee;\n }\n\n private async rollOperation(\n type: operationType.BuyRolls | operationType.SellRolls,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n let fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n side: type === operationType.BuyRolls ? 'buy' : 'sell',\n };\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/rolls`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(type, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.BuyRolls, amount, opts);\n }\n\n public async sellRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.SellRolls, amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n const fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/transfer`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // convert parameter to base64\n let args = '';\n if (params.parameter) {\n if (params.parameter instanceof Uint8Array) {\n args = uint8ArrayToBase64(params.parameter);\n } else {\n args = argsToBase64(params.parameter);\n }\n }\n\n let fee = params?.fee ?? (await this.minimalFee());\n\n const body: ExecuteFunctionBody = {\n nickname: this.accountName,\n name: params.func,\n at: params.target,\n args,\n coins: params.coins ? Number(params.coins) : 0,\n fee: fee.toString(),\n // If maxGas is not provided, estimation will be done by MS\n maxGas: params.maxGas ? params.maxGas.toString() : '',\n async: true,\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeFunction`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler('callSmartContract', error);\n }\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n // Gas amount check\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `\n The gas submitted ${params.maxGas.toString()} exceeds the max. allowed block gas of \n ${MAX_GAS_CALL.toString()}\n `,\n );\n }\n\n const client = await getClient();\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n const args = params.parameter ?? new Uint8Array();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter:\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize()),\n };\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.readSC(readOnlyParams);\n }\n\n public async deploySC(params: MSDeploySCParams): Promise<SmartContract> {\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n const coins = params.coins ?? 0n; // If coins is undefined, some vesions of station will have a panic\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n const fee = params.fee ?? (await this.minimalFee());\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await getClient();\n const datastore = populateDatastore([\n {\n data: params.byteCode,\n args: parameters,\n coins,\n },\n ]);\n\n maxGas = await client.executeSCGasEstimation({\n ...params,\n byteCode: DEPLOYER_BYTECODE,\n datastore,\n caller: this.address,\n });\n }\n\n const description =\n params.description ??\n `${formatMas(coins)} MAS coins allocated to new smart contract`;\n\n const body: DeploySCFunctionBody = {\n nickname: this.accountName,\n smartContract: uint8ArrayToBase64(params.byteCode),\n coins: coins.toString(),\n parameters: uint8ArrayToBase64(parameters),\n maxCoins: maxCoins.toString(),\n fee: fee.toString(),\n maxGas: maxGas.toString(),\n description,\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/deploySC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n const operation = new Operation(this, operationId);\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw new Error(`Error during smart contract deployment: ${error}`);\n }\n }\n\n async executeSC(params: MSExecuteScParams): Promise<Operation> {\n try {\n const fee = params.fee ?? (await this.minimalFee());\n const maxCoins = params.maxCoins ?? 0n;\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const datastore: [string, string][] = [];\n if (params.datastore) {\n for (const [key, value] of params.datastore.entries()) {\n datastore.push([uint8ArrayToBase64(key), uint8ArrayToBase64(value)]);\n }\n }\n\n const body: ExecuteSCBody = {\n nickname: this.accountName,\n bytecode: uint8ArrayToBase64(params.byteCode),\n datastore,\n maxCoins: maxCoins.toString(),\n fee: fee.toString(),\n description: params.description ?? '',\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeSC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n return new Operation(this, operationId);\n } catch (error) {\n throw new Error(\n `Error during smart contract bytecode execution: ${error}`,\n );\n }\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getOperationStatus(opId);\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getEvents(filter);\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient();\n return client.getNodeStatus();\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n return client.getStorageKeys(address, filter, final);\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n return client.readStorage(address, keys, final);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MassaStationAccount.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRequest, postRequest } from './RequestHandler';\nimport { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet';\nimport {\n argsToBase64,\n base64ToByteArray,\n uint8ArrayToBase64,\n} from '../utils/base64';\nimport {\n DeploySCFunctionBody,\n ExecuteFunctionBody,\n ExecuteSCBody,\n MSAccountSignPayload,\n MSAccountSignResp,\n MSBalancesResp,\n MSDeploySCParams,\n MSExecuteScParams,\n MSSendOperationResp,\n} from './types';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport {\n Address,\n CallSCParams,\n EventFilter,\n Mas,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SignOptions,\n SmartContract,\n rpcTypes,\n StorageCost,\n formatMas,\n DEPLOYER_BYTECODE,\n populateDatastore,\n ExecuteSCReadOnlyResult,\n ExecuteSCReadOnlyParams,\n} from '@massalabs/massa-web3';\nimport { getClient, networkInfos } from './utils/network';\nimport { WalletName } from '../wallet';\nimport bs58check from 'bs58check';\n\n/**\n * This module contains the MassaStationAccount class. It is responsible for representing an account in\n * the MassaStation wallet.\n *\n * @remarks\n * This class provides methods to interact with MassaStation account's {@link balance} and to {@link sign} messages.\n *\n */\nexport class MassaStationAccount implements Provider {\n private _providerName = WalletName.MassaWallet;\n\n constructor(\n public address: string,\n public accountName: string,\n ) {}\n\n get providerName(): string {\n return this._providerName;\n }\n\n public async balance(final = false): Promise<bigint> {\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?attributes=balance&addresses=${this.address}`,\n );\n\n const balances = result.addressesAttributes[this.address].balance;\n\n return Mas.fromString(final ? balances.final : balances.pending);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const queryParams = new URLSearchParams();\n\n queryParams.append('attributes', 'balance');\n addresses.forEach((address) => {\n queryParams.append('addresses', address);\n });\n\n const { result } = await getRequest<MSBalancesResp>(\n `${MASSA_STATION_URL}massa/addresses?${queryParams.toString()}`,\n );\n\n return addresses.map((address) => {\n const balance = result.addressesAttributes[address].balance;\n\n return {\n address,\n balance: Mas.fromString(final ? balance.final : balance.pending),\n };\n });\n }\n\n public async sign(\n data: Uint8Array | string,\n opts?: SignOptions,\n ): Promise<SignedData> {\n const signData: MSAccountSignPayload = {\n description: opts?.description ?? '',\n message: typeof data === 'string' ? data : new TextDecoder().decode(data),\n DisplayData: opts?.displayData ?? true,\n };\n\n try {\n const { result } = await postRequest<MSAccountSignResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/signMessage`,\n signData,\n );\n\n // MS Wallet encodes signature in base64... so we need to decode it en re-encode it in base58\n const signature = bs58check.encode(\n await base64ToByteArray(result.signature),\n );\n\n return {\n publicKey: result.publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async minimalFee(): Promise<bigint> {\n const client = await getClient();\n const { minimalFee } = await client.networkInfos();\n return minimalFee;\n }\n\n private async rollOperation(\n type: operationType.BuyRolls | operationType.SellRolls,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n let fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n side: type === operationType.BuyRolls ? 'buy' : 'sell',\n };\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/rolls`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(type, error);\n }\n }\n\n public async buyRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.BuyRolls, amount, opts);\n }\n\n public async sellRolls(\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n return this.rollOperation(operationType.SellRolls, amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n const fee = opts?.fee ?? (await this.minimalFee());\n\n const body = {\n fee: fee.toString(),\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${walletApiUrl()}/accounts/${this.accountName}/transfer`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n public async callSC(params: CallSCParams): Promise<Operation> {\n // convert parameter to base64\n let args = '';\n if (params.parameter) {\n if (params.parameter instanceof Uint8Array) {\n args = uint8ArrayToBase64(params.parameter);\n } else {\n args = argsToBase64(params.parameter);\n }\n }\n\n let fee = params?.fee ?? (await this.minimalFee());\n\n const body: ExecuteFunctionBody = {\n nickname: this.accountName,\n name: params.func,\n at: params.target,\n args,\n coins: params.coins ? Number(params.coins) : 0,\n fee: fee.toString(),\n // If maxGas is not provided, estimation will be done by MS\n maxGas: params.maxGas ? params.maxGas.toString() : '',\n async: true,\n };\n\n try {\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeFunction`,\n body,\n );\n\n return new Operation(this, result.operationId);\n } catch (error) {\n throw errorHandler('callSmartContract', error);\n }\n }\n\n public async networkInfos(): Promise<Network> {\n return networkInfos();\n }\n\n public async readSC(params: ReadSCParams): Promise<ReadSCData> {\n // Gas amount check\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `\n The gas submitted ${params.maxGas.toString()} exceeds the max. allowed block gas of \n ${MAX_GAS_CALL.toString()}\n `,\n );\n }\n\n const client = await getClient();\n\n const fee = params?.fee ?? (await this.minimalFee());\n const caller = params.caller ?? this.address;\n const args = params.parameter ?? new Uint8Array();\n const readOnlyParams = {\n ...params,\n caller,\n fee,\n parameter:\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize()),\n };\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.readSC(readOnlyParams);\n }\n\n public async deploySC(params: MSDeploySCParams): Promise<SmartContract> {\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameters = args instanceof Uint8Array ? args : args.serialize();\n const coins = params.coins ?? 0n; // If coins is undefined, some vesions of station will have a panic\n const maxCoins =\n params.maxCoins ??\n StorageCost.smartContractDeploy(params.byteCode.length) + coins;\n const fee = params.fee ?? (await this.minimalFee());\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await getClient();\n const datastore = populateDatastore([\n {\n data: params.byteCode,\n args: parameters,\n coins,\n },\n ]);\n\n maxGas = await client.executeSCGasEstimation({\n ...params,\n byteCode: DEPLOYER_BYTECODE,\n datastore,\n caller: this.address,\n });\n }\n\n const description =\n params.description ??\n `${formatMas(coins)} MAS coins allocated to new smart contract`;\n\n const body: DeploySCFunctionBody = {\n nickname: this.accountName,\n smartContract: uint8ArrayToBase64(params.byteCode),\n coins: coins.toString(),\n parameters: uint8ArrayToBase64(parameters),\n maxCoins: maxCoins.toString(),\n fee: fee.toString(),\n maxGas: maxGas.toString(),\n description,\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/deploySC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n const operation = new Operation(this, operationId);\n const deployedAddress = await operation.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw new Error(`Error during smart contract deployment: ${error}`);\n }\n }\n\n async executeSC(params: MSExecuteScParams): Promise<Operation> {\n try {\n const fee = params.fee ?? (await this.minimalFee());\n const maxCoins = params.maxCoins ?? 0n;\n\n let maxGas = params.maxGas;\n if (!maxGas) {\n const client = await getClient();\n maxGas = await client.executeSCGasEstimation({\n ...params,\n caller: this.address,\n });\n }\n\n const datastore: [string, string][] = [];\n if (params.datastore) {\n for (const [key, value] of params.datastore.entries()) {\n datastore.push([uint8ArrayToBase64(key), uint8ArrayToBase64(value)]);\n }\n }\n\n const body: ExecuteSCBody = {\n nickname: this.accountName,\n bytecode: uint8ArrayToBase64(params.byteCode),\n datastore,\n maxCoins: maxCoins.toString(),\n fee: fee.toString(),\n description: params.description ?? '',\n };\n\n const { result } = await postRequest<MSSendOperationResp>(\n `${MASSA_STATION_URL}cmd/executeSC`,\n body,\n );\n\n const operationId = result?.operationId;\n\n if (!operationId) throw new Error('Operation ID not found');\n\n return new Operation(this, operationId);\n } catch (error) {\n throw new Error(\n `Error during smart contract bytecode execution: ${error}`,\n );\n }\n }\n\n async executeSCReadOnly(\n params: ExecuteSCReadOnlyParams,\n ): Promise<ExecuteSCReadOnlyResult> {\n try {\n const client = await getClient();\n return client.executeSCReadOnly(params);\n } catch (error) {\n throw new Error(\n `Error during readonly smart contract bytecode execution: ${error}`,\n );\n }\n }\n\n public async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getOperationStatus(opId);\n }\n\n public async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient();\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n return client.getEvents(filter);\n }\n\n public async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient();\n return client.getNodeStatus();\n }\n\n public async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n return client.getStorageKeys(address, filter, final);\n }\n\n public async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n // This implementation is wrong. We should use massaStation instead of targeting the node directly.\n const client = await getClient();\n return client.readStorage(address, keys, final);\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MetaMaskInpageProvider } from '@metamask/providers';
|
|
2
|
-
import { Address, CallSCParams, DeploySCParams, EventFilter, Network, NodeStatusInfo, Operation, OperationOptions, OperationStatus, Provider, ReadSCData, ReadSCParams, SignedData, SmartContract, rpcTypes, ExecuteScParams } from '@massalabs/massa-web3';
|
|
2
|
+
import { Address, CallSCParams, DeploySCParams, EventFilter, Network, NodeStatusInfo, Operation, OperationOptions, OperationStatus, Provider, ReadSCData, ReadSCParams, SignedData, SmartContract, rpcTypes, ExecuteScParams, ExecuteSCReadOnlyParams, ExecuteSCReadOnlyResult } from '@massalabs/massa-web3';
|
|
3
3
|
export declare class MetamaskAccount implements Provider {
|
|
4
4
|
readonly address: string;
|
|
5
5
|
private readonly provider;
|
|
@@ -26,5 +26,6 @@ export declare class MetamaskAccount implements Provider {
|
|
|
26
26
|
getStorageKeys(address: string, filter?: Uint8Array | string, final?: boolean): Promise<Uint8Array[]>;
|
|
27
27
|
readStorage(address: string, keys: Uint8Array[] | string[], final?: boolean): Promise<(Uint8Array | null)[]>;
|
|
28
28
|
executeSC(params: ExecuteScParams): Promise<Operation>;
|
|
29
|
+
executeSCReadOnly(params: ExecuteSCReadOnlyParams): Promise<ExecuteSCReadOnlyResult>;
|
|
29
30
|
}
|
|
30
31
|
//# sourceMappingURL=MetamaskAccount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetamaskAccount.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,YAAY,
|
|
1
|
+
{"version":3,"file":"MetamaskAccount.d.ts","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,cAAc,EACd,WAAW,EACX,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,QAAQ,EACR,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAwB/B,qBAAa,eAAgB,YAAW,QAAQ;aAE5B,OAAO,EAAE,MAAM;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADT,OAAO,EAAE,MAAM,EACd,QAAQ,EAAE,sBAAsB;IAGnD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEK,OAAO,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvC,SAAS,CACb,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,UAAQ,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAK5C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAgB9C,mBAAmB;IA0B3B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIrE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAItE,QAAQ,CACZ,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,SAAS,CAAC;IAiBf,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IA8BhD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAcjD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCxD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAK1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAK9D,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAKxC,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,MAAyB,EAC9C,KAAK,UAAO,GACX,OAAO,CAAC,UAAU,EAAE,CAAC;IAKlB,WAAW,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAC7B,KAAK,UAAO,GACX,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAK3B,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IA+BtD,iBAAiB,CACrB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC;CAepC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Operation, SmartContract, } from '@massalabs/massa-web3';
|
|
2
2
|
import { WalletName } from '../wallet';
|
|
3
3
|
import { errorHandler } from '../errors/utils/errorHandler';
|
|
4
4
|
import { operationType } from '../utils/constants';
|
|
@@ -25,13 +25,7 @@ export class MetamaskAccount {
|
|
|
25
25
|
}
|
|
26
26
|
async balanceOf(addresses, final = false) {
|
|
27
27
|
const client = await getClient(this.provider);
|
|
28
|
-
|
|
29
|
-
return addressesInfo.map((addressInfo) => ({
|
|
30
|
-
address: addressInfo.address,
|
|
31
|
-
balance: final
|
|
32
|
-
? Mas.fromString(addressInfo.final_balance)
|
|
33
|
-
: Mas.fromString(addressInfo.candidate_balance),
|
|
34
|
-
}));
|
|
28
|
+
return client.balanceOf(addresses, final);
|
|
35
29
|
}
|
|
36
30
|
async networkInfos() {
|
|
37
31
|
return networkInfos(this.provider);
|
|
@@ -119,19 +113,13 @@ export class MetamaskAccount {
|
|
|
119
113
|
}
|
|
120
114
|
}
|
|
121
115
|
async readSC(params) {
|
|
122
|
-
if (params.maxGas && params.maxGas > MAX_GAS_CALL) {
|
|
123
|
-
throw new Error(`Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}`);
|
|
124
|
-
}
|
|
125
116
|
try {
|
|
126
|
-
const args = params.parameter ?? new Uint8Array();
|
|
127
|
-
const parameter = args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());
|
|
128
117
|
const client = await getClient(this.provider);
|
|
129
118
|
const readOnlyParams = {
|
|
130
119
|
...params,
|
|
131
120
|
caller: params.caller ?? this.address,
|
|
132
|
-
parameter,
|
|
133
121
|
};
|
|
134
|
-
return client.
|
|
122
|
+
return client.readSC(readOnlyParams);
|
|
135
123
|
}
|
|
136
124
|
catch (error) {
|
|
137
125
|
throw new Error(`Smart contract read failed: ${error.message}`);
|
|
@@ -179,21 +167,15 @@ export class MetamaskAccount {
|
|
|
179
167
|
}
|
|
180
168
|
async getNodeStatus() {
|
|
181
169
|
const client = await getClient(this.provider);
|
|
182
|
-
|
|
183
|
-
return formatNodeStatusObject(status);
|
|
170
|
+
return client.getNodeStatus();
|
|
184
171
|
}
|
|
185
172
|
async getStorageKeys(address, filter = new Uint8Array(), final = true) {
|
|
186
173
|
const client = await getClient(this.provider);
|
|
187
|
-
|
|
188
|
-
return client.getDataStoreKeys(address, filterBytes, final);
|
|
174
|
+
return client.getStorageKeys(address, filter, final);
|
|
189
175
|
}
|
|
190
176
|
async readStorage(address, keys, final = true) {
|
|
191
177
|
const client = await getClient(this.provider);
|
|
192
|
-
|
|
193
|
-
key,
|
|
194
|
-
address,
|
|
195
|
-
}));
|
|
196
|
-
return client.getDatastoreEntries(entries, final);
|
|
178
|
+
return client.readStorage(address, keys, final);
|
|
197
179
|
}
|
|
198
180
|
async executeSC(params) {
|
|
199
181
|
try {
|
|
@@ -222,5 +204,18 @@ export class MetamaskAccount {
|
|
|
222
204
|
throw errorHandler(operationType.ExecuteSC, error);
|
|
223
205
|
}
|
|
224
206
|
}
|
|
207
|
+
async executeSCReadOnly(params) {
|
|
208
|
+
try {
|
|
209
|
+
const readOnlyParams = {
|
|
210
|
+
...params,
|
|
211
|
+
caller: params.caller ?? this.address,
|
|
212
|
+
};
|
|
213
|
+
const client = await getClient(this.provider);
|
|
214
|
+
return client.executeSCReadOnly(readOnlyParams);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
throw new Error(`Error during readonly smart contract bytecode execution: ${error}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
225
220
|
}
|
|
226
221
|
//# sourceMappingURL=MetamaskAccount.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetamaskAccount.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { MetaMaskInpageProvider } from '@metamask/providers';\nimport {\n Address,\n CallSCParams,\n DatastoreEntry,\n DeploySCParams,\n EventFilter,\n formatNodeStatusObject,\n MAX_GAS_CALL,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n strToBytes,\n rpcTypes,\n Mas,\n ExecuteScParams,\n} from '@massalabs/massa-web3';\nimport { WalletName } from '../wallet';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport { networkInfos, getClient } from './utils/network';\nimport {\n buyRolls,\n callSC,\n deploySC,\n executeSC,\n getBalance,\n sellRolls,\n signMessage,\n transfer,\n} from './services';\nimport type {\n BuyRollsParams,\n SellRollsParams,\n TransferParams,\n CallSCParams as MMCallSCParams,\n DeploySCParams as MMDeploySCParams,\n ExecuteSCParams as MMExecuteSCParams,\n} from '@massalabs/metamask-snap';\n\nexport class MetamaskAccount implements Provider {\n constructor(\n public readonly address: string,\n private readonly provider: MetaMaskInpageProvider,\n ) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Metamask;\n }\n\n async balance(final = false): Promise<bigint> {\n const { finalBalance, candidateBalance } = await getBalance(this.provider, {\n address: this.address,\n });\n return BigInt(final ? finalBalance : candidateBalance);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const client = await getClient(this.provider);\n const addressesInfo = await client.getMultipleAddressInfo(addresses);\n\n return addressesInfo.map((addressInfo) => ({\n address: addressInfo.address,\n balance: final\n ? Mas.fromString(addressInfo.final_balance)\n : Mas.fromString(addressInfo.candidate_balance),\n }));\n }\n\n async networkInfos(): Promise<Network> {\n return networkInfos(this.provider);\n }\n\n async sign(inData: Uint8Array | string): Promise<SignedData> {\n try {\n const data = typeof inData === 'string' ? inData : Array.from(inData);\n const { publicKey, signature } = await signMessage(this.provider, {\n data,\n });\n\n return {\n publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async handleRollOperation(\n operation: 'buy' | 'sell',\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: BuyRollsParams | SellRollsParams = {\n amount: amount.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n\n const { operationId } = await (operation === 'buy'\n ? buyRolls(this.provider, params)\n : sellRolls(this.provider, params));\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(\n operation === 'buy' ? operationType.BuyRolls : operationType.SellRolls,\n error,\n );\n }\n }\n\n async buyRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('buy', amount, opts);\n }\n\n async sellRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('sell', amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: TransferParams = {\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n const { operationId } = await transfer(this.provider, params);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n async callSC(params: CallSCParams): Promise<Operation> {\n try {\n const callSCparams: MMCallSCParams = {\n functionName: params.func,\n at: params.target,\n };\n if (params.parameter) {\n callSCparams.args =\n params.parameter instanceof Uint8Array\n ? Array.from(params.parameter)\n : Array.from(params.parameter.serialize());\n }\n if (params.coins) {\n callSCparams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n callSCparams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n callSCparams.fee = params.fee.toString();\n }\n\n const { operationId } = await callSC(this.provider, callSCparams);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n async readSC(params: ReadSCParams): Promise<ReadSCData> {\n if (params.maxGas && params.maxGas > MAX_GAS_CALL) {\n throw new Error(\n `Gas amount ${params.maxGas} exceeds the maximum allowed ${MAX_GAS_CALL}`,\n );\n }\n try {\n const args = params.parameter ?? new Uint8Array();\n const parameter =\n args instanceof Uint8Array ? args : Uint8Array.from(args.serialize());\n\n const client = await getClient(this.provider);\n const readOnlyParams = {\n ...params,\n caller: params.caller ?? this.address,\n parameter,\n };\n return client.executeReadOnlyCall(readOnlyParams);\n } catch (error) {\n throw new Error(`Smart contract read failed: ${error.message}`);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const deployParams: MMDeploySCParams = {\n bytecode: Array.from(params.byteCode),\n };\n if (params.parameter) {\n deployParams.args = Array.from(\n params.parameter instanceof Uint8Array\n ? params.parameter\n : params.parameter.serialize(),\n );\n }\n if (params.coins) {\n deployParams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n deployParams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n deployParams.fee = params.fee.toString();\n }\n if (params.maxCoins) {\n deployParams.maxCoins = params.maxCoins.toString();\n }\n\n const { operationId } = await deploySC(this.provider, deployParams);\n const op = new Operation(this, operationId);\n const deployedAddress = await op.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw errorHandler(operationType.DeploySC, error);\n }\n }\n\n async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient(this.provider);\n return client.getOperationStatus(opId);\n }\n\n async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient(this.provider);\n return client.getEvents(filter);\n }\n\n async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient(this.provider);\n const status = await client.status();\n return formatNodeStatusObject(status);\n }\n\n async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const client = await getClient(this.provider);\n const filterBytes =\n typeof filter === 'string' ? strToBytes(filter) : filter;\n return client.getDataStoreKeys(address, filterBytes, final);\n }\n\n async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n const client = await getClient(this.provider);\n const entries: DatastoreEntry[] = keys.map((key) => ({\n key,\n address,\n }));\n return client.getDatastoreEntries(entries, final);\n }\n\n async executeSC(params: ExecuteScParams): Promise<Operation> {\n try {\n const executeParams: MMExecuteSCParams = {\n bytecode: Array.from(params.byteCode),\n };\n if (params.datastore) {\n executeParams.datastore = Array.from(params.datastore.entries()).map(\n ([key, value]) => ({\n key: Array.from(key),\n value: Array.from(value),\n }),\n );\n }\n\n if (params.maxGas) {\n executeParams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n executeParams.fee = params.fee.toString();\n }\n if (params.maxCoins) {\n executeParams.maxCoins = params.maxCoins.toString();\n }\n\n const { operationId } = await executeSC(this.provider, executeParams);\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.ExecuteSC, error);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MetamaskAccount.js","sourceRoot":"","sources":["../../../src/metamaskSnap/MetamaskAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import { MetaMaskInpageProvider } from '@metamask/providers';\nimport {\n Address,\n CallSCParams,\n DeploySCParams,\n EventFilter,\n Network,\n NodeStatusInfo,\n Operation,\n OperationOptions,\n OperationStatus,\n Provider,\n ReadSCData,\n ReadSCParams,\n SignedData,\n SmartContract,\n rpcTypes,\n ExecuteScParams,\n ExecuteSCReadOnlyParams,\n ExecuteSCReadOnlyResult,\n} from '@massalabs/massa-web3';\nimport { WalletName } from '../wallet';\nimport { errorHandler } from '../errors/utils/errorHandler';\nimport { operationType } from '../utils/constants';\nimport { networkInfos, getClient } from './utils/network';\nimport {\n buyRolls,\n callSC,\n deploySC,\n executeSC,\n getBalance,\n sellRolls,\n signMessage,\n transfer,\n} from './services';\nimport type {\n BuyRollsParams,\n SellRollsParams,\n TransferParams,\n CallSCParams as MMCallSCParams,\n DeploySCParams as MMDeploySCParams,\n ExecuteSCParams as MMExecuteSCParams,\n} from '@massalabs/metamask-snap';\n\nexport class MetamaskAccount implements Provider {\n constructor(\n public readonly address: string,\n private readonly provider: MetaMaskInpageProvider,\n ) {}\n\n get accountName(): string {\n return this.address;\n }\n\n get providerName(): string {\n return WalletName.Metamask;\n }\n\n async balance(final = false): Promise<bigint> {\n const { finalBalance, candidateBalance } = await getBalance(this.provider, {\n address: this.address,\n });\n return BigInt(final ? finalBalance : candidateBalance);\n }\n\n async balanceOf(\n addresses: string[],\n final = false,\n ): Promise<{ address: string; balance: bigint }[]> {\n const client = await getClient(this.provider);\n return client.balanceOf(addresses, final);\n }\n\n async networkInfos(): Promise<Network> {\n return networkInfos(this.provider);\n }\n\n async sign(inData: Uint8Array | string): Promise<SignedData> {\n try {\n const data = typeof inData === 'string' ? inData : Array.from(inData);\n const { publicKey, signature } = await signMessage(this.provider, {\n data,\n });\n\n return {\n publicKey,\n signature,\n };\n } catch (error) {\n throw errorHandler(operationType.Sign, error);\n }\n }\n\n private async handleRollOperation(\n operation: 'buy' | 'sell',\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: BuyRollsParams | SellRollsParams = {\n amount: amount.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n\n const { operationId } = await (operation === 'buy'\n ? buyRolls(this.provider, params)\n : sellRolls(this.provider, params));\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(\n operation === 'buy' ? operationType.BuyRolls : operationType.SellRolls,\n error,\n );\n }\n }\n\n async buyRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('buy', amount, opts);\n }\n\n async sellRolls(amount: bigint, opts?: OperationOptions): Promise<Operation> {\n return this.handleRollOperation('sell', amount, opts);\n }\n\n async transfer(\n to: Address | string,\n amount: bigint,\n opts?: OperationOptions,\n ): Promise<Operation> {\n try {\n const params: TransferParams = {\n amount: amount.toString(),\n recipientAddress: to.toString(),\n };\n if (opts?.fee) {\n params.fee = opts?.fee.toString();\n }\n const { operationId } = await transfer(this.provider, params);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.SendTransaction, error);\n }\n }\n\n async callSC(params: CallSCParams): Promise<Operation> {\n try {\n const callSCparams: MMCallSCParams = {\n functionName: params.func,\n at: params.target,\n };\n if (params.parameter) {\n callSCparams.args =\n params.parameter instanceof Uint8Array\n ? Array.from(params.parameter)\n : Array.from(params.parameter.serialize());\n }\n if (params.coins) {\n callSCparams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n callSCparams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n callSCparams.fee = params.fee.toString();\n }\n\n const { operationId } = await callSC(this.provider, callSCparams);\n\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.CallSC, error);\n }\n }\n\n async readSC(params: ReadSCParams): Promise<ReadSCData> {\n try {\n const client = await getClient(this.provider);\n const readOnlyParams = {\n ...params,\n caller: params.caller ?? this.address,\n };\n return client.readSC(readOnlyParams);\n } catch (error) {\n throw new Error(`Smart contract read failed: ${error.message}`);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async deploySC(params: DeploySCParams): Promise<SmartContract> {\n try {\n const deployParams: MMDeploySCParams = {\n bytecode: Array.from(params.byteCode),\n };\n if (params.parameter) {\n deployParams.args = Array.from(\n params.parameter instanceof Uint8Array\n ? params.parameter\n : params.parameter.serialize(),\n );\n }\n if (params.coins) {\n deployParams.coins = params.coins.toString();\n }\n if (params.maxGas) {\n deployParams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n deployParams.fee = params.fee.toString();\n }\n if (params.maxCoins) {\n deployParams.maxCoins = params.maxCoins.toString();\n }\n\n const { operationId } = await deploySC(this.provider, deployParams);\n const op = new Operation(this, operationId);\n const deployedAddress = await op.getDeployedAddress(\n params.waitFinalExecution,\n );\n\n return new SmartContract(this, deployedAddress);\n } catch (error) {\n throw errorHandler(operationType.DeploySC, error);\n }\n }\n\n async getOperationStatus(opId: string): Promise<OperationStatus> {\n const client = await getClient(this.provider);\n return client.getOperationStatus(opId);\n }\n\n async getEvents(filter: EventFilter): Promise<rpcTypes.OutputEvents> {\n const client = await getClient(this.provider);\n return client.getEvents(filter);\n }\n\n async getNodeStatus(): Promise<NodeStatusInfo> {\n const client = await getClient(this.provider);\n return client.getNodeStatus();\n }\n\n async getStorageKeys(\n address: string,\n filter: Uint8Array | string = new Uint8Array(),\n final = true,\n ): Promise<Uint8Array[]> {\n const client = await getClient(this.provider);\n return client.getStorageKeys(address, filter, final);\n }\n\n async readStorage(\n address: string,\n keys: Uint8Array[] | string[],\n final = true,\n ): Promise<(Uint8Array | null)[]> {\n const client = await getClient(this.provider);\n return client.readStorage(address, keys, final);\n }\n\n async executeSC(params: ExecuteScParams): Promise<Operation> {\n try {\n const executeParams: MMExecuteSCParams = {\n bytecode: Array.from(params.byteCode),\n };\n if (params.datastore) {\n executeParams.datastore = Array.from(params.datastore.entries()).map(\n ([key, value]) => ({\n key: Array.from(key),\n value: Array.from(value),\n }),\n );\n }\n\n if (params.maxGas) {\n executeParams.maxGas = params.maxGas.toString();\n }\n if (params.fee) {\n executeParams.fee = params.fee.toString();\n }\n if (params.maxCoins) {\n executeParams.maxCoins = params.maxCoins.toString();\n }\n\n const { operationId } = await executeSC(this.provider, executeParams);\n return new Operation(this, operationId);\n } catch (error) {\n throw errorHandler(operationType.ExecuteSC, error);\n }\n }\n\n async executeSCReadOnly(\n params: ExecuteSCReadOnlyParams,\n ): Promise<ExecuteSCReadOnlyResult> {\n try {\n const readOnlyParams = {\n ...params,\n caller: params.caller ?? this.address,\n };\n\n const client = await getClient(this.provider);\n return client.executeSCReadOnly(readOnlyParams);\n } catch (error) {\n throw new Error(\n `Error during readonly smart contract bytecode execution: ${error}`,\n );\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JsonRpcPublicProvider, Network } from '@massalabs/massa-web3';
|
|
2
2
|
import { MetaMaskInpageProvider } from '@metamask/providers';
|
|
3
3
|
export declare function networkInfos(metaMaskProvider: MetaMaskInpageProvider): Promise<Network>;
|
|
4
|
-
export declare function getClient(metaMaskProvider: MetaMaskInpageProvider): Promise<
|
|
4
|
+
export declare function getClient(metaMaskProvider: MetaMaskInpageProvider): Promise<JsonRpcPublicProvider>;
|
|
5
5
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/metamaskSnap/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/metamaskSnap/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,OAAO,EAER,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAO7D,wBAAsB,YAAY,CAChC,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,SAAS,CAC7B,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,qBAAqB,CAAC,CAMhC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JsonRpcPublicProvider, getNetworkNameByChainId, } from '@massalabs/massa-web3';
|
|
2
2
|
import { getNetwork } from '../services/getNetwork';
|
|
3
3
|
// Use client singleton to benefit from caching
|
|
4
4
|
let client;
|
|
@@ -8,7 +8,7 @@ export async function networkInfos(metaMaskProvider) {
|
|
|
8
8
|
const res = await getNetwork(metaMaskProvider);
|
|
9
9
|
const url = res.rpcUrl;
|
|
10
10
|
if (!client || rpcUrl !== url) {
|
|
11
|
-
client =
|
|
11
|
+
client = JsonRpcPublicProvider.fromRPCUrl(url);
|
|
12
12
|
rpcUrl = url;
|
|
13
13
|
}
|
|
14
14
|
const networkName = getNetworkNameByChainId(BigInt(res.chainId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/metamaskSnap/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/metamaskSnap/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,+CAA+C;AAC/C,IAAI,MAA6B,CAAC;AAClC,0CAA0C;AAC1C,IAAI,MAAc,CAAC;AAEnB,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,gBAAwC;IAExC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAEvB,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE;QAC7B,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAA0B,CAAC;QACxE,MAAM,GAAG,GAAG,CAAC;KACd;IAED,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QACpC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC5B,GAAG;QACH,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,gBAAwC;IAExC,IAAI,CAAC,MAAM,EAAE;QACX,yBAAyB;QACzB,MAAM,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACtC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import {\n JsonRpcPublicProvider,\n Network,\n getNetworkNameByChainId,\n} from '@massalabs/massa-web3';\n\nimport { getNetwork } from '../services/getNetwork';\nimport { MetaMaskInpageProvider } from '@metamask/providers';\n\n// Use client singleton to benefit from caching\nlet client: JsonRpcPublicProvider;\n// Use rpcUrl to check if node has changed\nlet rpcUrl: string;\n\nexport async function networkInfos(\n metaMaskProvider: MetaMaskInpageProvider,\n): Promise<Network> {\n const res = await getNetwork(metaMaskProvider);\n const url = res.rpcUrl;\n\n if (!client || rpcUrl !== url) {\n client = JsonRpcPublicProvider.fromRPCUrl(url) as JsonRpcPublicProvider;\n rpcUrl = url;\n }\n\n const networkName = getNetworkNameByChainId(BigInt(res.chainId));\n return {\n name: networkName ? networkName : '',\n chainId: BigInt(res.chainId),\n url,\n minimalFee: BigInt(res.minimalFees),\n };\n}\n\nexport async function getClient(\n metaMaskProvider: MetaMaskInpageProvider,\n): Promise<JsonRpcPublicProvider> {\n if (!client) {\n // this initialize client\n await networkInfos(metaMaskProvider);\n }\n return client;\n}\n"]}
|