@arkade-os/sdk Documentation - v0.4.0-next.8
    Preparing search index...

    Class ContractManager

    Central manager for contract lifecycle and operations.

    The ContractManager orchestrates:

    • Contract registration and persistence
    • Multi-contract watching via ContractWatcher
    • VTXO queries across contracts
    const manager = new ContractManager({
    indexerProvider: wallet.indexerProvider,
    contractRepository: wallet.contractRepository,
    getDefaultAddress: () => wallet.getAddress(),
    });

    // Initialize (loads persisted contracts)
    await manager.initialize();

    // Create a new VHTLC contract
    const contract = await manager.createContract({
    label: "Lightning Receive",
    type: "vhtlc",
    params: { sender: "ab12...", receiver: "cd34...", ... },
    script: "5120...",
    address: "tark1...",
    });

    // Start watching for events
    const stop = await manager.startWatching((event) => {
    console.log(`${event.type} on ${event.contractScript}`);
    });

    // Get balance across all contracts
    const balances = await manager.getAllBalances();

    Implements

    Index

    Methods

    • Symbol.dispose implementation for using with using keyword.

      Returns void

      {
      using manager = await wallet.getContractManager();
      // ... use manager
      } // automatically disposed
    • Dispose of the ContractManager and release all resources.

      Stops the watcher, clears callbacks, and marks the manager as uninitialized.

      Implements the disposable pattern for cleanup.

      Returns void

    • Get contracts with optional filters.

      Parameters

      • Optionalfilter: ContractFilter

        Optional filter criteria

      Returns Promise<Contract[]>

      Filtered contracts TODO: filter spent/unspent

      // Get all VHTLC contracts
      const vhtlcs = await manager.getContracts({ type: 'vhtlc' });

      // Get all active contracts
      const active = await manager.getContracts({ state: 'active' });
    • Register a callback for contract events.

      The manager automatically watches after initialize(). This method allows registering callbacks to receive events.

      Parameters

      Returns () => void

      Unsubscribe function to remove this callback

      const unsubscribe = manager.onContractEvent((event) => {
      console.log(`${event.type} on ${event.contractScript}`);
      });

      // Later: stop receiving events
      unsubscribe();
    • Update a contract. Nested fields like params and metadata are replaced with the provided values. If you need to preserve existing fields, merge them manually.

      Parameters

      • script: string

        Contract script

      • updates: Partial<Omit<Contract, "script" | "createdAt">>

        Fields to update

      Returns Promise<Contract>

    • Update a contract's params. This method preserves existing params by merging the provided values.

      Parameters

      • script: string

        Contract script

      • updates: Record<string, string>

        The new values to merge with existing params

      Returns Promise<Contract>