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

    Interface IContractManager

    Contract lifecycle and VTXO orchestration API.

    Responsibilities:

    • Create and persist contracts
    • Query stored contracts (optionally with their VTXOs)
    • Provide spendable path selection for a contract
    • Emit contract-related events (VTXO received/spent, expiry, connection reset)

    Notes:

    • Implementations typically start watching automatically during initialization (so onContractEvent() is just for subscribing).
    const manager = await ContractManager.create({
    indexerProvider,
    contractRepository,
    walletRepository,
    getDefaultAddress,
    });

    const unsubscribe = manager.onContractEvent((event) => {
    console.log(event.type, event.timestamp);
    });

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

    // Later:
    unsubscribe();
    manager.dispose();
    interface IContractManager {
        createContract(params: CreateContractParams): Promise<Contract>;
        deleteContract(script: string): Promise<void>;
        dispose(): void;
        getAllSpendingPaths(
            options: GetAllSpendingPathsOptions,
        ): Promise<PathSelection[]>;
        getContracts(filter?: ContractFilter): Promise<Contract[]>;
        getContractsWithVtxos(
            filter?: ContractFilter,
        ): Promise<ContractWithVtxos[]>;
        getSpendablePaths(
            options: GetSpendablePathsOptions,
        ): Promise<PathSelection[]>;
        isWatching(): Promise<boolean>;
        onContractEvent(callback: ContractEventCallback): () => void;
        setContractState(script: string, state: ContractState): Promise<void>;
        updateContract(
            script: string,
            updates: Partial<Omit<Contract, "script" | "createdAt">>,
        ): Promise<Contract>;
    }

    Hierarchy

    • Disposable
      • IContractManager

    Implemented by

    Index

    Methods

    • Delete a contract by script and stop watching it (if applicable).

      Parameters

      • script: string

      Returns Promise<void>

    • Get all possible spending paths for a contract.

      Returns an empty array if the contract or its handler cannot be found.

      Parameters

      • options: GetAllSpendingPathsOptions

      Returns Promise<PathSelection[]>

    • List contracts with optional filters.

      Parameters

      • Optionalfilter: ContractFilter

      Returns Promise<Contract[]>

      const vhtlcs = await manager.getContracts({ type: "vhtlc" });
      const active = await manager.getContracts({ state: "active" });
    • Get all currently spendable paths for a contract.

      Returns an empty array if the contract or its handler cannot be found.

      Parameters

      • options: GetSpendablePathsOptions

      Returns Promise<PathSelection[]>

    • Update mutable contract fields.

      script and createdAt are immutable.

      Parameters

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

      Returns Promise<Contract>