{"version":3,"sources":["../../src/operator/tree-manager.ts","../../src/operator/root-publisher.ts"],"names":["ASP_REGISTRY_HUB_ABI"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Tree Manager\n *\n * Server-side tree management for ASP operators.\n * Wraps a provider with batch operations and tree statistics.\n */\n\nimport type { IASPProvider, MerkleProof } from '../core/types.js'\n\nexport class TreeManager {\n  constructor(private readonly provider: IASPProvider) {}\n\n  /**\n   * Add a single member\n   */\n  async addMember(identity: bigint): Promise<void> {\n    await this.provider.addMember(identity)\n  }\n\n  /**\n   * Add multiple members in batch\n   */\n  async addMembers(identities: bigint[]): Promise<void> {\n    for (const identity of identities) {\n      await this.provider.addMember(identity)\n    }\n  }\n\n  /**\n   * Remove a single member\n   */\n  async removeMember(identity: bigint): Promise<void> {\n    await this.provider.removeMember(identity)\n  }\n\n  /**\n   * Get all current members\n   */\n  async getMembers(): Promise<bigint[]> {\n    return this.provider.getMembers()\n  }\n\n  /**\n   * Get tree statistics\n   */\n  async getStats(): Promise<{\n    memberCount: number\n    treeDepth: number\n    maxMembers: number\n    root: bigint\n  }> {\n    const members = await this.provider.getMembers()\n    const root = await this.provider.getRoot()\n    return {\n      memberCount: members.length,\n      treeDepth: this.provider.treeDepth,\n      maxMembers: 2 ** this.provider.treeDepth,\n      root,\n    }\n  }\n\n  /**\n   * Get the current root\n   */\n  async getRoot(): Promise<bigint> {\n    return this.provider.getRoot()\n  }\n\n  /**\n   * Get a proof for a specific identity\n   */\n  async getProof(identity: bigint): Promise<MerkleProof> {\n    return this.provider.getMerkleProof(identity)\n  }\n\n  /**\n   * Check if an identity is a member\n   */\n  async hasMember(identity: bigint): Promise<boolean> {\n    return this.provider.hasMember(identity)\n  }\n}\n","/**\n * Root Publisher\n *\n * Publishes Merkle roots on-chain via the ASP Registry Hub.\n * Used by ASP operators to keep the on-chain root up to date.\n */\n\nimport { ASP_REGISTRY_HUB_ABI } from '../contracts/abi/ASPRegistryHub.js'\nimport type { RootPublisherConfig } from './types.js'\n\nexport class RootPublisher {\n  private readonly registryAddress: `0x${string}`\n  private readonly aspId: bigint\n\n  constructor(config: RootPublisherConfig) {\n    this.registryAddress = config.registryAddress\n    this.aspId = config.aspId\n  }\n\n  /**\n   * Publish a new root on-chain\n   */\n  async publishRoot(root: bigint, walletClient: any): Promise<`0x${string}`> {\n    const hash = await walletClient.writeContract({\n      address: this.registryAddress,\n      abi: ASP_REGISTRY_HUB_ABI,\n      functionName: 'updateRoot',\n      args: [this.aspId, root],\n    })\n    return hash as `0x${string}`\n  }\n\n  /**\n   * Get the current on-chain root\n   */\n  async getCurrentRoot(publicClient: any): Promise<bigint> {\n    return publicClient.readContract({\n      address: this.registryAddress,\n      abi: ASP_REGISTRY_HUB_ABI,\n      functionName: 'getCurrentRoot',\n      args: [this.aspId],\n    }) as Promise<bigint>\n  }\n\n  /**\n   * Check if a root is valid on-chain\n   */\n  async isValidRoot(root: bigint, publicClient: any): Promise<boolean> {\n    return publicClient.readContract({\n      address: this.registryAddress,\n      abi: ASP_REGISTRY_HUB_ABI,\n      functionName: 'isValidASPRoot',\n      args: [this.aspId, root],\n    }) as Promise<boolean>\n  }\n}\n"]}