From 186d9b9b2eba9a7b686779fb65b2919b3d4d27f5 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Thu, 3 Oct 2024 16:17:47 +0530 Subject: [PATCH] Add method to parse gas and fees --- src/index.ts | 1 + src/util.ts | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/index.ts b/src/index.ts index 29c9721..de885fd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -588,3 +588,4 @@ export { LaconicClient }; export * from './constants'; export * from './types/cerc/bond/message'; export * from './types/cerc/onboarding/message'; +export * from './util'; diff --git a/src/util.ts b/src/util.ts index 809337e..b555938 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,6 +1,8 @@ import * as Block from 'multiformats/block'; import { sha256 as hasher } from 'multiformats/hashes/sha2'; +import assert from 'assert'; +import { StdFee, parseCoins } from '@cosmjs/stargate'; import * as dagCBOR from '@ipld/dag-cbor'; import * as dagJSON from '@ipld/dag-json'; @@ -118,4 +120,27 @@ export class Util { return block.cid.toString(); } + + /** + * Get gas in proper format + */ + static parseGasAndFees (gas?: string, fees?: string): StdFee | undefined | number { + // If fees is not given or a number, treat it as a gas estimation multiplier + if (fees === null || fees === undefined) { + return undefined; + } + + const isFeesANumber = !isNaN(Number(fees)); + if (isFeesANumber) { + return Number(fees); + } + + // If fees is not a gas estimation multiplier, gas is required + assert(gas, 'Invalid gas.'); + + return { + amount: parseCoins(String(fees)), + gas: String(gas) + }; + } }