> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hedera.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Provider

<Info>
  This feature is available in the [Hedera JavaScript SDK](https://github.com/hashgraph/hedera-sdk-js) only. (version >=2.14.0).
</Info>

`Provider` provides access to a Hedera network to which requests should be submitted to. The Hedera network can be specified to `previewnet`, `testnet`, or `mainnet`.

The most important method on the provider interface is the `call` method which allows a user to submit *any* request and get the correct response for that request. For instance,Java

```javascript theme={null}
// Balance of node account ID 0.0.3 
const balance = provider.call(new AccountBalanceQuery().setAccountId(AccountId.fromString("0.0.3")));Interface Provider
```

### **Methods**

**`getLedgerId()`->** **`LedgerId`**

Returns the ledger ID of the current network.

**`getNetwork()`->** **`Map` \< `[key: string]: (string | AccountId)`>**

Returns the entire network map for the current network.

**`getAccountBalance(accountId: AccountId | string)`->** **`Promise<AccountBalance>`**

Get the balance for the specified account ID.

**`getAccountInfo(accountId: AccountId | string)`->** **`Promise<AccountInfo>`**

Get the info for the specified account ID.

**`getAccountRecords(accountId: AccountId | string)`->** **`Promise<TransactionRecord[]>`**

Get the account record for the specified account ID.

**`getTransactionReceipt(transactionId:TransactionId)`: `TransactionReceipt`**

Get a receipt for the specified transaction ID.

**`waitForReceipt(response: TransactionResponse)`->** **`Promise<TransactionReceipt>`**

Execute multiple `TransactionReceiptQuery`'s until we get an erroring status code, or a success state code.

**`call(<RequestT, ResponseT, OutputT>(request: Executable<RequestT, ResponseT, OutputT>)`->** **`Promise <Output>`**

Responsible for serializing your request and sending it over the wire to be executed, and then deserializing the response into the appropriate type.
