feat: add Connection.getFeeForMessage (#22128)

* web3.js: add Connection.getFeeForMessage

* throw if value is null

* fix null value

* fix types
This commit is contained in:
Kirill Fomichev
2022-01-11 12:49:28 +03:00
committed by GitHub
parent d064c40617
commit 3c44d405c7
2 changed files with 53 additions and 0 deletions

View File

@@ -3023,6 +3023,27 @@ export class Connection {
};
}
/**
* Fetch the fee for a message from the cluster, return with context
*/
async getFeeForMessage(
message: Message,
commitment?: Commitment,
): Promise<RpcResponseAndContext<number>> {
const wireMessage = message.serialize().toString('base64');
const args = this._buildArgs([wireMessage], commitment);
const unsafeRes = await this._rpcRequest('getFeeForMessage', args);
const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));
if ('error' in res) {
throw new Error('failed to get slot: ' + res.error.message);
}
if (res.result === null) {
throw new Error('invalid blockhash');
}
return res.result as unknown as RpcResponseAndContext<number>;
}
/**
* Fetch a recent blockhash from the cluster
* @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}