npm package: @leapwallet/cosmos-social-login-capsule-provider
Description: ## Overview
Latest version: 0.0.44

# CapsuleProvider

## Overview

The `CapsuleProvider` is a JavaScript class that provides a convenient interface for integrating the Capsule authentication and signing functionality into your application. Capsule is a secure and user-friendly platform that facilitates social login and transaction signing for Cosmos blockchain-based applications.

## Installation

To use the `CapsuleProvider` in your project, you need to install the required dependencies. Run the following command:

```bash
npm install @leapwallet/cosmos-social-login-capsule-provider
```

## Usage

### Importing the CapsuleProvider

```javascript
import { CapsuleProvider } from '@leapwallet/cosmos-social-login-capsule-provider'; 
```

### Initializing the CapsuleProvider

```javascript
const capsuleProvider = new CapsuleProvider({ apiKey: 'YOUR_API_KEY', env: Environment.BETA });
```

- `apiKey`: (Optional) Your Capsule API key.
- `env`: (Optional) The environment for Capsule (default is `Environment.BETA`).

### Getting the Capsule Client

```javascript
const capsuleClient = capsuleProvider.getClient();
```

### Enabling Capsule

```javascript
await capsuleProvider.enable();
```

This method triggers the connection process to Capsule.

### Disconnecting from Capsule

```javascript
await capsuleProvider.disconnect();
```

This method disconnects the user from Capsule.

### Getting a Simple Account

```javascript
const simpleAccount = await capsuleProvider.getSimpleAccount('cosmos');
```

This method retrieves a simple account object with `namespace`, `chainId`, `address`, and `username` properties.

### Handling Connection

```javascript
await capsuleProvider.handleConnect();
```

This method handles the Capsule connection process.

### Connecting to Capsule

```javascript
await capsuleProvider.connect();
```

This method initiates the connection to Capsule.

### Getting an Account

```javascript
const account = await capsuleProvider.getAccount('cosmos');
```

This method retrieves detailed account information, including `username`, `address`, `algo`, and `pubkey`.

### Getting an Offline Signer

```javascript
const offlineSigner = capsuleProvider.getOfflineSigner('cosmos', 'amino');
```

This method returns an offline signer based on the preferred signing type (`amino` or `direct`).

### Signing Amino Transactions

```javascript
const signature = await capsuleProvider.signAmino('cosmos', 'signerAddress', signDoc, signOptions);
```

This method requests an Amino signature for a given transaction.

### Signing Direct Transactions

```javascript
const signature = await capsuleProvider.signDirect('cosmos', 'signerAddress', signDoc);
```

This method requests a direct signature for a given transaction.


## Example

```javascript
import { CapsuleProvider } from '@leapwallet/cosmos-social-login-capsule-provider';

const capsuleProvider = new CapsuleProvider({ apiKey: 'YOUR_API_KEY', env: Environment.BETA });

async function main() {
  await capsuleProvider.enable();
  const account = await capsuleProvider.getAccount('cosmos');
  console.log('Account:', account);
}

main();
```