Skip to content

createSdk

The main factory function that creates an SDK instance.

Signature

ts
function createSdk(config: OCashSdkConfig): OCashSdk

Parameters

OCashSdkConfig

ts
interface OCashSdkConfig {
  chains: ChainConfigInput[];
  assetsOverride?: AssetsOverride;
  cacheDir?: string;
  runtime?: 'auto' | 'browser' | 'node' | 'hybrid';
  storage?: StorageAdapter;
  merkle?: {
    mode?: 'remote' | 'local' | 'hybrid';
    treeDepth?: number;
  };
  sync?: {
    pageSize?: number;
    pollMs?: number;
    requestTimeoutMs?: number;
    retry?: {
      attempts?: number;
      baseDelayMs?: number;
      maxDelayMs?: number;
    };
  };
  onEvent?: (event: SdkEvent) => void;
}

Returns

OCashSdk

An object with the following modules:

ModuleTypeDescription
coreCoreApiWASM bridge, circuit loading
keysKeyManagerKey derivation, address conversion
cryptoCryptoToolkitCommitments, nullifiers, memos
assetsAssetsApiChain/token/relayer configuration
storageStorageAdapterPersistence layer
walletWalletApiSession, UTXOs, balance
syncSyncApiEntry/Merkle sync
merkleMerkleApiMerkle proofs, witnesses
plannerPlannerApiCoin selection, fee estimation
zkpZkpApiWitness/proof generation
txTxBuilderApiTransaction builder
opsOpsApiEnd-to-end orchestration

Example

ts
import { createSdk } from '@ocash/sdk';

const sdk = createSdk({
  chains: [{
    chainId: 11155111,
    entryUrl: 'https://entry.example.com',
    ocashContractAddress: '0x...',
    relayerUrl: 'https://relayer.example.com',
    tokens: [],
  }],
  onEvent: console.log,
});

// Access modules
await sdk.core.ready();
await sdk.wallet.open({ seed: '...' });
const balance = await sdk.wallet.getBalance({ chainId: 11155111 });

Default Export

The createSdk function is also available as the default export:

ts
import createSdk from '@ocash/sdk';