fix: add api for getMinimumBalanceForRentExemption

This commit is contained in:
Tyera Eulberg 2019-09-26 14:13:57 -06:00 committed by Michael Vines
parent 432345b4d4
commit 4ae90c2944
2 changed files with 41 additions and 0 deletions

View File

@ -294,6 +294,11 @@ const GetTransactionCountRpcResult = jsonRpcResult('number');
*/
const GetTotalSupplyRpcResult = jsonRpcResult('number');
/**
* Expected JSON RPC response for the "getMinimumBalanceForRentExemption" message
*/
const GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult('number');
/**
* Expected JSON RPC response for the "getRecentBlockhash" message
*/
@ -683,6 +688,23 @@ export class Connection {
return GetInflationResult(res.result);
}
/**
* Fetch the minimum balance needed to exempt an account of `dataLength`
* size from rent
*/
async getMinimumBalanceForRentExemption(dataLength: number): Promise<number> {
const unsafeRes = await this._rpcRequest(
'getMinimumBalanceForRentExemption',
[dataLength],
);
const res = GetMinimumBalanceForRentExemptionRpcResult(unsafeRes);
if (res.error) {
throw new Error(res.error.message);
}
assert(typeof res.result !== 'undefined');
return Number(res.result);
}
/**
* Fetch a recent blockhash from the cluster
*/

View File

@ -330,6 +330,25 @@ test('get total supply', async () => {
expect(count).toBeGreaterThanOrEqual(0);
});
test('get minimum balance for rent exemption', async () => {
const connection = new Connection(url);
mockRpc.push([
url,
{
method: 'getMinimumBalanceForRentExemption',
params: [512],
},
{
error: null,
result: 1000000,
},
]);
const count = await connection.getMinimumBalanceForRentExemption(512);
expect(count).toBeGreaterThanOrEqual(0);
});
test('get recent blockhash', async () => {
const connection = new Connection(url);