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

# Class: CulturaSDK

Main SDK client for interacting with the Cultura ecosystem.

The SDK provides a comprehensive set of tools for interacting with the Cultura ecosystem,
including Digital Asset management, attestations, and licensing.

## Example

```typescript theme={null}
// Create SDK instance with default configuration (testnet)
const sdk = CulturaSDK.create();

// Create SDK instance with custom chain configuration
const sdk = CulturaSDK.create({ chain: 'devnet' });

// Create SDK instance with wallet connection
const sdk = CulturaSDK.createWithWallet(window.ethereum);

// Create SDK instance with wallet connection and specific chain
const sdk = CulturaSDK.createWithWallet(window.ethereum, { chain: 'devnet' });

// Create SDK instance with custom account
const sdk = CulturaSDK.createWithAccount('0x123...', { chain: 'local' });
```

## Accessors

### chain

#### Get Signature

> **get** **chain**(): `undefined` | `Chain`

Get the current chain configuration

##### Returns

`undefined` | `Chain`

### attestationService

#### Get Signature

> **get** **attestationService**(): [`AttestationServiceClient`](./resources/attestation-service)

Access the Attestation Service client for creating and verifying attestations.

The Attestation Service manages the creation and verification of attestations
that prove Digital Asset ownership and rights.

##### Example

```typescript theme={null}
// Create a attestation
const attestationUID = await sdk.attestationService.attest(
  attestationRequest,
  rightsBoundAccountAddress,
  tokenId,
  assetClass,
  bondAmount
);
```

##### Returns

[`AttestationServiceClient`](./resources/attestation-service)

The Attestation Service client instance

### schemaRegistry

#### Get Signature

> **get** **schemaRegistry**(): [`SchemaRegistryClient`](./resources/schema-registry)

Get the SchemaRegistry client instance

##### Returns

[`SchemaRegistryClient`](./resources/schema-registry)

### culturaDigitalAsset

#### Get Signature

> **get** **culturaDigitalAsset**(): [`CulturaDigitalAssetClient`](./resources/cultura-digital-asset)

Get the CulturaDigitalAsset client instance

##### Returns

[`CulturaDigitalAssetClient`](./resources/cultura-digital-asset)

### digitalAsset

#### Get Signature

> **get** **digitalAsset**(): [`CulturaDigitalAssetClient`](./resources/cultura-digital-asset)

Get the culturaDigitalAsset client instance (alias for culturaDigitalAsset for backward compatibility)

##### Deprecated

Use culturaDigitalAsset instead

##### Returns

[`CulturaDigitalAssetClient`](./resources/cultura-digital-asset)

### rightsBoundAccount

#### Get Signature

> **get** **rightsBoundAccount**(): [`RightsBoundAccountClient`](./resources/rights-bound-account)

Get the Rights Bound Account client instance
This needs to be set manually using setRightsBoundAccount before use

##### Returns

[`RightsBoundAccountClient`](./resources/rights-bound-account)

### royalty

#### Get Signature

> **get** **royalty**(): [`RoyaltyClient`](./resources/royalty)

Get the Royalty client instance

##### Returns

[`RoyaltyClient`](./resources/royalty)

### signatureUtils

#### Get Signature

> **get** **signatureUtils**(): [`SignatureUtilsClient`](./resources/signature-utils)

Get the Signature Utils client instance

##### Returns

[`SignatureUtilsClient`](./resources/signature-utils)

### verifierModule

#### Get Signature

> **get** **verifierModule**(): [`VerifierModuleClient`](./resources/verifier-module)

Get the Verifier Module client instance

##### Returns

[`VerifierModuleClient`](./resources/verifier-module)

### query

#### Get Signature

> **get** **query**(): [`QueryClient`](./query/query)

Get the Query client instance for querying indexed blockchain data

##### Returns

[`QueryClient`](./query/query)

### bondToken

#### Get Signature

> **get** **bondToken**(): [`BondTokenClient`](./resources/bond-token)

Get the Bond Token client instance

##### Returns

[`BondTokenClient`](./resources/bond-token)

### mockLicensingProtocol

#### Get Signature

> **get** **mockLicensingProtocol**(): [`MockLicensingProtocolClient`](./mocks/mock-licensing-protocol)

Get the Mock Licensing Protocol client instance

##### Returns

[`MockLicensingProtocolClient`](./mocks/mock-licensing-protocol)

### pop

#### Get Signature

> **get** **pop**(): `POPModuleClient`

Get the POP Module client instance

##### Returns

`POPModuleClient`

## Methods

### setRightsBoundAccount()

> **setRightsBoundAccount**(`rightsBoundAccountAddress`): `void`

Set the rights bound account address for the rightsBoundAccount client
This is needed when working with licensedAssets created via mockLicenseRight

#### Parameters

##### rightsBoundAccountAddress

`` `0x${string}` ``

The address of the Rights Bound Account

#### Returns

`void`

### create()

> `static` **create**(`config`): [`CulturaSDK`](./cultura-sdk)

Create a new SDK instance

#### Parameters

##### config

[`CulturaConfig`](./types/cultura-config) = `{}`

SDK configuration

#### Returns

[`CulturaSDK`](./cultura-sdk)

### createWithWallet()

> `static` **createWithWallet**(`ethereum`, `config`): [`CulturaSDK`](./cultura-sdk)

Create a new SDK instance with a wallet

#### Parameters

##### ethereum

`any`

Ethereum provider (e.g., window\.ethereum)

##### config

`Omit`\<[`CulturaConfig`](./types/cultura-config), `"wallet"`> = `{}`

Additional SDK configuration

#### Returns

[`CulturaSDK`](./cultura-sdk)

### createWithAccount()

> `static` **createWithAccount**(`account`, `config`): [`CulturaSDK`](./cultura-sdk)

Create a new SDK instance with a specific account

#### Parameters

##### account

Ethereum account address or Viem Account object created with privateKeyToAccount()

`undefined` | `` `0x${string}` `` | `Account`

##### config

`Omit`\<[`CulturaConfig`](./types/cultura-config), `"account"`> = `{}`

Additional SDK configuration

#### Returns

[`CulturaSDK`](./cultura-sdk)

#### Example

```typescript theme={null}
// With an address (limited signing capability)
const sdk = CulturaSDK.createWithAccount('0x123...');

// With a private key (full signing capability)
import { privateKeyToAccount } from 'viem/accounts';
const account = privateKeyToAccount('0xYourPrivateKeyHere');
const sdk = CulturaSDK.createWithAccount(account);
```

### createWithSmartWalletClient()

> `static` **createWithSmartWalletClient**(`privyClient`, `config`): [`CulturaSDK`](./cultura-sdk)

Create a new SDK instance with a Privy Smart Wallet Client

#### Parameters

##### privyClient

`any`

The Privy SmartWalletClientType instance

##### config

`Omit`\<[`CulturaConfig`](./types/cultura-config), `"account"` | `"wallet"`> = `{}`

Additional SDK configuration

#### Returns

[`CulturaSDK`](./cultura-sdk)

### getWalletBalance()

> **getWalletBalance**(): `Promise`\<`bigint`>

Get the balance of the connected wallet

#### Returns

`Promise`\<`bigint`>

### getBalance()

> **getBalance**(`address`): `Promise`\<`bigint`>

Get the balance of any address

#### Parameters

##### address

`string`

Ethereum address

#### Returns

`Promise`\<`bigint`>

## Properties

### config

> `readonly` **config**: [`CulturaConfig`](./types/cultura-config)

### publicClient

> `readonly` **publicClient**: `object`

### walletClient?

> `readonly` `optional` **walletClient**: `object`
