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

# EndstateWallet

> A mounted wallet returned by createWallet(). Setup starts at creation, so by the time a user acts the cost of loading the frame and provisioning has already been paid.

```ts theme={null}
interface EndstateWallet {
  ready(): Promise<WalletAccount>;
  account(): WalletAccount | null;
  sessionExpiresAt(): Date | null;
  refreshSession(): Promise<WalletAccount>;
  destroy(): Promise<void>;
}
```

## Example

```ts theme={null}
const wallet = createWallet({ publishableKey, getIdentityToken });

const account = await wallet.ready();
account.address; // same value as wallet.account()
wallet.sessionExpiresAt(); // Date the current session lapses

// Later, when a call fails with wallet.session_expired:
await wallet.refreshSession();

// On teardown:
await wallet.destroy();
```

## Methods

Each method has its own reference page:

* [`ready()`](/sdks/web/reference/wallet/ready) - resolve once the account exists and the session is established.
* [`account()`](/sdks/web/reference/wallet/account) - the provisioned account, or `null` until `ready()` resolves.
* [`sessionExpiresAt()`](/sdks/web/reference/wallet/sessionExpiresAt) - when the current session lapses.
* [`refreshSession()`](/sdks/web/reference/wallet/refreshSession) - start a fresh session; the remedy for `wallet.session_expired`.
* [`destroy()`](/sdks/web/reference/wallet/destroy) - end the session and remove the frame.

<Note>
  This version provisions and reports the account; it deliberately exposes no
  signing surface. Signing arrives in a later minor release.
</Note>
