fix: add api for getMinimumBalanceForRentExemption
This commit is contained in:
committed by
Michael Vines
parent
432345b4d4
commit
4ae90c2944
@ -294,6 +294,11 @@ const GetTransactionCountRpcResult = jsonRpcResult('number');
|
|||||||
*/
|
*/
|
||||||
const GetTotalSupplyRpcResult = 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
|
* Expected JSON RPC response for the "getRecentBlockhash" message
|
||||||
*/
|
*/
|
||||||
@ -683,6 +688,23 @@ export class Connection {
|
|||||||
return GetInflationResult(res.result);
|
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
|
* Fetch a recent blockhash from the cluster
|
||||||
*/
|
*/
|
||||||
|
@ -330,6 +330,25 @@ test('get total supply', async () => {
|
|||||||
expect(count).toBeGreaterThanOrEqual(0);
|
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 () => {
|
test('get recent blockhash', async () => {
|
||||||
const connection = new Connection(url);
|
const connection = new Connection(url);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user