{"version":3,"sources":["../src/constants.ts","../src/services/solver-registry.ts","../src/services/seal-policy-coordinator.ts","../src/services/slash-manager.ts","../src/services/registry.ts","../src/client.ts","../src/types.ts","../src/executor.ts"],"names":["Transaction","NETWORKS","SuiClient","SolverStatus","SlashSeverity","AppealStatus"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Constants for Intenus Protocol\n */\n\n/**\n * Package IDs for different networks\n */\nexport const INTENUS_PACKAGE_ID = {\n  mainnet: '',\n  testnet: '0x993c7635b44582e9c47c589c759239d3e1ce787811af5bfa0056aa253caa394a',\n  devnet: ''\n} as const;\n\n/**\n * Shared object IDs for protocol contracts\n */\nexport const SHARED_OBJECTS = {\n  mainnet: {\n    solverRegistry: '',\n    slashManager: '',\n    teeVerifier: '',\n    enclaveConfig: '',\n    treasury: '',\n    clock: '0x6'\n  },\n  testnet: {\n    solverRegistry: '0xf71c16414b66054dfe9ebca5f22f8076a8294715d5a3e4ae4b2b4e0cd5d7e64a',\n    slashManager: '0x1d023609156241468439e933c094dba4982d35292b0dd21c66cf85cc8f53b283',\n    teeVerifier: '0xf0867b65374e34905b7737432e93d53722b08bc39cd621740b685a366272f857',\n    enclaveConfig: '0xe525e478d2448b4e895d744b31f9fa7cab599f6ce5c36b6b24dab2f9c54ad0fd',\n    treasury: '0x1aa5d3878fac1e2b10bf471bd1cbef6868ca1d04643c24c3d3b358d762f34f53',\n    clock: '0x6'\n  },\n  devnet: {\n    solverRegistry: '',\n    slashManager: '',\n    teeVerifier: '',\n    enclaveConfig: '',\n    treasury: '',\n    clock: '0x6'\n  }\n} as const;\n\n/**\n * Admin capabilities and package-level objects\n */\nexport const ADMIN_CAPS = {\n  mainnet: {\n    solverRegistryAdminCap: '',\n    slashManagerAdminCap: '',\n    teeVerifierAdminCap: '',\n    packageUpgradeCap: '',\n    packagePublisher: ''\n  },\n  testnet: {\n    solverRegistryAdminCap: '0xaf69f4d0fa49c43bfa9bfe382467eacd33ead8e2bb36aeb6fcb8f1df36d60909',\n    slashManagerAdminCap: '0xbe3b9146c100a38b106161c2d03e91432e8a608e1873ce1f894e576c63e70ea0',\n    teeVerifierAdminCap: '0x392ea4b56d73d59cb32e132fa7f610a7fb5f1e97d0983af6bfced645bea59e9f',\n    packageUpgradeCap: '0xa25adda6a6965df626313123b48c067a342c21127932b4c2f7ba83dcfb71c288',\n    packagePublisher: '0x01741371472c4a88b2a8670c72f4ad96285eb13ddfa51c1b8abe3a76dd128014'\n  },\n  devnet: {\n    solverRegistryAdminCap: '',\n    slashManagerAdminCap: '',\n    teeVerifierAdminCap: '',\n    packageUpgradeCap: '',\n    packagePublisher: ''\n  }\n} as const;\n\n/**\n * Module names within the package\n */\nexport const MODULES = {\n  SOLVER_REGISTRY: 'solver_registry',\n  SLASH_MANAGER: 'slash_manager',\n  TEE_VERIFIER: 'tee_verifier',\n  SEAL_POLICY_COORDINATOR: 'seal_policy_coordinator',\n  REGISTRY: 'registry'\n} as const;\n\n/**\n * Registry constants\n */\nexport const REGISTRY_CONSTANTS = {\n  MIN_INTENT_FEE: '1000000', // 0.001 SUI minimum fee\n  PLATFORM_FEE_BPS: 1000, // 10% platform fee (in basis points)\n} as const;\n\n/**\n * Solver registry constants\n */\nexport const SOLVER_CONSTANTS = {\n  MIN_STAKE_AMOUNT: '1000000000', // 1 SUI\n  WITHDRAWAL_COOLDOWN_MS: 604800000, // 7 days\n  SLASH_PERCENTAGE: 20, // 20%\n  REWARD_PERCENTAGE: 10, // 10%\n  MAX_REPUTATION: 10000\n} as const;\n\n/**\n * Slash severity constants\n */\nexport const SLASH_CONSTANTS = {\n  MINOR_SLASH_BPS: 500,     // 5%\n  SIGNIFICANT_SLASH_BPS: 2000, // 20%\n  MALICIOUS_SLASH_BPS: 10000,  // 100%\n  APPEAL_WINDOW_MS: 86400000   // 24 hours\n} as const;\n\n/**\n * TEE verifier constants\n */\nexport const TEE_CONSTANTS = {\n  MAX_TIMESTAMP_DRIFT_MS: 300000 // 5 minutes\n} as const;\n\n/**\n * Error codes mapping\n */\nexport const ERROR_CODES = {\n  // Solver Registry (1xxx)\n  E_INSUFFICIENT_STAKE: 1001,\n  E_SOLVER_NOT_REGISTERED: 1002,\n  E_SOLVER_ALREADY_REGISTERED: 1003,\n  E_COOLDOWN_NOT_COMPLETE: 1007,\n  E_INVALID_STATUS: 1009,\n  E_INSUFFICIENT_BALANCE: 1011,\n  E_NO_PENDING_WITHDRAWAL: 1012,\n\n  // Seal Policy Coordinator (3xxx)\n  E_INTENT_REVOKED: 3001,\n  E_SPC_UNAUTHORIZED: 3002,\n  E_OUTSIDE_TIME_WINDOW: 3003,\n  E_SPC_SOLVER_NOT_REGISTERED: 3004,\n  E_SPC_INSUFFICIENT_STAKE: 3005,\n  E_SPC_ATTESTATION_REQUIRED: 3006,\n  E_NO_ENCLAVE_PK: 3007,\n\n  // TEE Verifier (4xxx)\n  E_NOT_CONFIGURED: 4001,\n  E_INVALID_ATTESTATION: 4002,\n  E_MEASUREMENT_MISMATCH: 4003,\n  E_STALE_TIMESTAMP: 4004,\n  E_DUPLICATE_RECORD: 4005,\n\n  // Registry (6xxx)\n  E_INVALID_BLOB_ID: 6001,\n  E_UNAUTHORIZED_SOLVER: 6002,\n  E_POLICY_VALIDATION_FAILED: 6003,\n  E_REG_INTENT_REVOKED: 6004,\n  E_REG_UNAUTHORIZED: 6005,\n  E_INVALID_TIME_WINDOW: 6006,\n  E_SOLUTION_ALREADY_SELECTED: 6007,\n  E_INVALID_STATUS_TRANSITION: 6008,\n  E_REG_ATTESTATION_REQUIRED: 6009,\n  E_INSUFFICIENT_FEE: 6010,\n  E_NO_FEE_TO_REFUND: 6011,\n\n  // Slash Manager (6xxx) - Note: contracts use same range as registry\n  E_SLASH_UNAUTHORIZED: 6001,\n  E_INVALID_SEVERITY: 6003,\n  E_APPEAL_ALREADY_FILED: 6004,\n  E_APPEAL_NOT_FOUND: 6005,\n  E_APPEAL_WINDOW_EXPIRED: 6006,\n  E_INVALID_TEE_ATTESTATION: 6009,\n  E_TRANSFER_REJECTED: 6010\n} as const;\n\n/**\n * Default configuration values\n */\nexport const DEFAULT_CONFIG = {\n  GAS_BUDGET: '10000000', // 0.01 SUI\n  TIMEOUT_MS: 30000,\n  MAX_RETRIES: 3\n} as const;\n","/**\n * Solver Registry Service - Manage solver registration and staking\n */\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport type { SuiClient } from '@mysten/sui/client';\nimport type { Signer } from '@mysten/sui/cryptography';\nimport { INTENUS_PACKAGE_ID, SHARED_OBJECTS, MODULES } from '../constants.js';\nimport type { \n  IntenusClientConfig, \n  SolverProfile, \n  RegistryStats, \n  TransactionResult,\n  IntenusClientError\n} from '../types.js';\n\nexport class SolverRegistryService {\n  constructor(\n    private suiClient: SuiClient,\n    private config: IntenusClientConfig\n  ) {}\n\n  /**\n   * Register as a solver with minimum stake requirement.\n   * \n   * @param stake - SUI coin object for staking\n   * @param signer - Solver's keypair\n   * @returns Transaction for registration\n   */\n  createRegisterTransaction(stake: string): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n    \n    const tx = new Transaction();\n    \n    tx.moveCall({\n      target: `${packageId}::${MODULES.SOLVER_REGISTRY}::register_solver`,\n      arguments: [\n        tx.object(sharedObjects.solverRegistry),\n        tx.object(stake),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Execute solver registration\n   * \n   * @param stake - SUI coin object ID for staking\n   * @param signer - Solver's keypair\n   * @returns Transaction result\n   */\n  async registerSolver(\n    stake: string, \n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.createRegisterTransaction(stake);\n      \n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true,\n          showBalanceChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Registration failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges,\n        balanceChanges: result.balanceChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to register solver: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to increase stake for existing solver\n   * \n   * @param additionalStake - Additional SUI coin object ID\n   * @returns Transaction for stake increase\n   */\n  createIncreaseStakeTransaction(additionalStake: string): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n    \n    const tx = new Transaction();\n    \n    tx.moveCall({\n      target: `${packageId}::${MODULES.SOLVER_REGISTRY}::increase_stake`,\n      arguments: [\n        tx.object(sharedObjects.solverRegistry),\n        tx.object(additionalStake)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Increase stake for existing solver\n   * \n   * @param additionalStake - Additional SUI coin object ID\n   * @param signer - Solver's keypair\n   * @returns Transaction result\n   */\n  async increaseStake(\n    additionalStake: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.createIncreaseStakeTransaction(additionalStake);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true,\n          showBalanceChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Stake increase failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges,\n        balanceChanges: result.balanceChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to increase stake: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to initiate withdrawal process with cooldown\n   * \n   * @param amount - Amount to withdraw in MIST\n   * @returns Transaction for withdrawal initiation\n   */\n  createInitiateWithdrawalTransaction(amount: string): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n    \n    const tx = new Transaction();\n    \n    tx.moveCall({\n      target: `${packageId}::${MODULES.SOLVER_REGISTRY}::initiate_withdrawal`,\n      arguments: [\n        tx.object(sharedObjects.solverRegistry),\n        tx.pure.u64(amount),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Initiate withdrawal process with cooldown\n   * \n   * @param amount - Amount to withdraw in MIST\n   * @param signer - Solver's keypair\n   * @returns Transaction result\n   */\n  async initiateWithdrawal(\n    amount: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.createInitiateWithdrawalTransaction(amount);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Withdrawal initiation failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to initiate withdrawal: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to complete withdrawal after cooldown period\n   * \n   * @param amount - Amount to withdraw in MIST\n   * @returns Transaction for withdrawal completion\n   */\n  createCompleteWithdrawalTransaction(amount: string): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n    \n    const tx = new Transaction();\n    \n    tx.moveCall({\n      target: `${packageId}::${MODULES.SOLVER_REGISTRY}::complete_withdrawal`,\n      arguments: [\n        tx.object(sharedObjects.solverRegistry),\n        tx.object(sharedObjects.slashManager),\n        tx.pure.u64(amount),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Complete withdrawal after cooldown period\n   * \n   * @param amount - Amount to withdraw in MIST\n   * @param signer - Solver's keypair\n   * @returns Transaction result with returned coin\n   */\n  async completeWithdrawal(\n    amount: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.createCompleteWithdrawalTransaction(amount);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true,\n          showBalanceChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Withdrawal completion failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges,\n        balanceChanges: result.balanceChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to complete withdrawal: ${error.message}`);\n    }\n  }\n\n  /**\n   * Get solver profile information\n   * \n   * @param solverAddress - Solver's address\n   * @returns Solver profile or null if not found\n   */\n  async getSolverProfile(solverAddress: string): Promise<SolverProfile | null> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SOLVER_REGISTRY}::get_solver_profile`,\n            arguments: [\n              tx.object(sharedObjects.solverRegistry),\n              tx.pure.address(solverAddress)\n            ]\n          });\n          return tx;\n        })(),\n        sender: solverAddress\n      });\n\n      if (result.results?.[0]?.returnValues?.[0]) {\n        const [profileData] = result.results[0].returnValues;\n        // Parse the returned profile data\n        // This would need proper BCS deserialization in practice\n        return this.parseProfileData(profileData);\n      }\n\n      return null;\n    } catch (error: any) {\n      console.warn(`Failed to get solver profile: ${error.message}`);\n      return null;\n    }\n  }\n\n  /**\n   * Get solver stake amount\n   * \n   * @param solverAddress - Solver's address\n   * @returns Stake amount in MIST\n   */\n  async getSolverStake(solverAddress: string): Promise<string> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SOLVER_REGISTRY}::get_solver_stake`,\n            arguments: [\n              tx.object(sharedObjects.solverRegistry),\n              tx.pure.address(solverAddress)\n            ]\n          });\n          return tx;\n        })(),\n        sender: solverAddress\n      });\n\n      if (result.results?.[0]?.returnValues?.[0]) {\n        const [stakeData] = result.results[0].returnValues;\n        // Parse u64 from BCS\n        return this.parseU64(stakeData);\n      }\n\n      return '0';\n    } catch (error: any) {\n      console.warn(`Failed to get solver stake: ${error.message}`);\n      return '0';\n    }\n  }\n\n  /**\n   * Check if solver is active\n   * \n   * @param solverAddress - Solver's address\n   * @returns True if solver is active\n   */\n  async isSolverActive(solverAddress: string): Promise<boolean> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SOLVER_REGISTRY}::is_solver_active`,\n            arguments: [\n              tx.object(sharedObjects.solverRegistry),\n              tx.pure.address(solverAddress)\n            ]\n          });\n          return tx;\n        })(),\n        sender: solverAddress\n      });\n\n      if (result.results?.[0]?.returnValues?.[0]) {\n        const [activeData] = result.results[0].returnValues;\n        // Parse boolean from BCS\n        return this.parseBoolean(activeData);\n      }\n\n      return false;\n    } catch (error: any) {\n      console.warn(`Failed to check solver status: ${error.message}`);\n      return false;\n    }\n  }\n\n  /**\n   * Get registry statistics\n   * \n   * @returns Registry stats (total solvers, min stake, cooldown)\n   */\n  async getRegistryStats(): Promise<RegistryStats> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SOLVER_REGISTRY}::get_registry_stats`,\n            arguments: [\n              tx.object(sharedObjects.solverRegistry)\n            ]\n          });\n          return tx;\n        })(),\n        sender: '0x0' // Use dummy address for view functions\n      });\n\n      if (result.results?.[0]?.returnValues) {\n        const [totalSolvers, minStake, cooldown] = result.results[0].returnValues;\n        return {\n          total_solvers: parseInt(this.parseU64(totalSolvers)),\n          min_stake: this.parseU64(minStake),\n          withdrawal_cooldown: parseInt(this.parseU64(cooldown))\n        };\n      }\n\n      throw new Error('Failed to parse registry stats');\n    } catch (error: any) {\n      throw new Error(`Failed to get registry stats: ${error.message}`);\n    }\n  }\n\n  // Helper methods for parsing BCS data\n  private parseProfileData(data: any): SolverProfile {\n    // This would need proper BCS deserialization\n    // For now, return a mock structure\n    return {\n      solver_address: '0x0',\n      stake_amount: '0',\n      reputation_score: 0,\n      total_batches_participated: 0,\n      batches_won: 0,\n      total_surplus_generated: '0',\n      accuracy_score: 0,\n      last_submission_epoch: 0,\n      registration_timestamp: 0,\n      status: 0,\n      pending_withdrawal: undefined\n    };\n  }\n\n  private parseU64(data: any): string {\n    // Parse u64 from BCS bytes\n    // This is a simplified implementation\n    return '0';\n  }\n\n  private parseBoolean(data: any): boolean {\n    // Parse boolean from BCS bytes\n    return false;\n  }\n}\n","/**\n * Seal Policy Coordinator Service - Simplified seal approval system\n * Manages access control for Intent and Solution decryption via Seal\n */\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport type { SuiClient } from '@mysten/sui/client';\nimport type { Signer } from '@mysten/sui/cryptography';\nimport { INTENUS_PACKAGE_ID, SHARED_OBJECTS, MODULES } from '../constants.js';\nimport type { IntenusClientConfig, TransactionResult } from '../types.js';\n\nexport class SealPolicyCoordinatorService {\n  constructor(\n    private suiClient: SuiClient,\n    private config: IntenusClientConfig\n  ) {}\n\n  /**\n   * Create transaction to approve intent access for Seal decryption.\n   * This transaction is used by Seal SDK to authorize decryption.\n   * Following Nautilus pattern: enclave has blanket access.\n   *\n   * @param intentObjectId - Intent object ID\n   * @returns Transaction for approval\n   */\n  createIntentApprovalTransaction(intentObjectId: string): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.SEAL_POLICY_COORDINATOR}::seal_approve_intent`,\n      arguments: [\n        tx.object(intentObjectId),\n        tx.object(sharedObjects.enclaveConfig),\n        tx.object(sharedObjects.solverRegistry),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Create transaction to approve solution access for Seal decryption.\n   * This transaction is used by Seal SDK to authorize decryption.\n   *\n   * @param solutionObjectId - Solution object ID\n   * @returns Transaction for approval\n   */\n  createSolutionApprovalTransaction(solutionObjectId: string): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.SEAL_POLICY_COORDINATOR}::seal_approve_solution`,\n      arguments: [\n        tx.object(solutionObjectId),\n        tx.object(sharedObjects.enclaveConfig),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Create transaction to update enclave public key (admin only).\n   * The enclave public key is used to verify that calls come from the trusted enclave.\n   *\n   * @param newEnclavePk - New enclave public key (ed25519)\n   * @returns Transaction for enclave PK update\n   */\n  updateEnclavePkTransaction(newEnclavePk: Uint8Array): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.SEAL_POLICY_COORDINATOR}::update_enclave_pk`,\n      arguments: [\n        tx.object(sharedObjects.enclaveConfig),\n        tx.pure.vector('u8', Array.from(newEnclavePk)),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Update enclave public key (admin only).\n   * The enclave public key is used to verify that calls come from the trusted enclave.\n   *\n   * @param newEnclavePk - New enclave public key (ed25519)\n   * @param signer - Admin's keypair\n   * @returns Transaction result\n   */\n  async updateEnclavePk(\n    newEnclavePk: Uint8Array,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.updateEnclavePkTransaction(newEnclavePk);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Enclave PK update failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to update enclave PK: ${error.message}`);\n    }\n  }\n\n  /**\n   * Get enclave configuration.\n   *\n   * @returns Enclave config object data\n   */\n  async getEnclaveConfig(): Promise<any> {\n    try {\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      if (!sharedObjects.enclaveConfig) {\n        throw new Error('Enclave config not set for this network');\n      }\n\n      const result = await this.suiClient.getObject({\n        id: sharedObjects.enclaveConfig,\n        options: {\n          showContent: true,\n          showType: true\n        }\n      });\n\n      return result.data;\n    } catch (error: any) {\n      throw new Error(`Failed to get enclave config: ${error.message}`);\n    }\n  }\n}\n","/**\n * Slash Manager Service - Handle slashing and appeals\n */\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport type { SuiClient } from '@mysten/sui/client';\nimport type { Signer } from '@mysten/sui/cryptography';\nimport { INTENUS_PACKAGE_ID, SHARED_OBJECTS, MODULES } from '../constants.js';\nimport type { \n  IntenusClientConfig, \n  SlashEvidence,\n  SlashRecord,\n  Appeal,\n  TransactionResult\n} from '../types.js';\n\nexport class SlashManagerService {\n  constructor(\n    private suiClient: SuiClient,\n    private config: IntenusClientConfig\n  ) {}\n\n  /**\n   * Create transaction to submit slash with TEE evidence.\n   * Creates a soulbound NFT slash record for the solver.\n   * \n   * @param evidence - Slash evidence with TEE attestation\n   * @returns Transaction for slash submission\n   */\n  submitSlashTransaction(evidence: SlashEvidence): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n    \n    const tx = new Transaction();\n    \n    // Create SlashEvidence struct - this would need proper struct construction\n    // For now, pass individual fields as the Move function expects\n    tx.moveCall({\n      target: `${packageId}::${MODULES.SLASH_MANAGER}::submit_slash`,\n      arguments: [\n        tx.object(sharedObjects.slashManager),\n        tx.object(sharedObjects.teeVerifier),\n        // Pass SlashEvidence fields individually\n        tx.pure.u64(evidence.batch_id),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(evidence.solution_id))),\n        tx.pure.address(evidence.solver_address),\n        tx.pure.u8(evidence.severity),\n        tx.pure.u8(evidence.reason_code),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(evidence.reason_message))),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(evidence.failure_context))),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(evidence.attestation))),\n        tx.pure.u64(evidence.attestation_timestamp),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(evidence.tee_measurement))),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Submit slash with TEE evidence.\n   * Creates a soulbound NFT slash record for the solver.\n   * \n   * @param evidence - Slash evidence with TEE attestation\n   * @param signer - Submitter's keypair (usually TEE service)\n   * @returns Transaction result with slash record\n   */\n  async submitSlash(\n    evidence: SlashEvidence,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.submitSlashTransaction(evidence);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Slash submission failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to submit slash: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to file an appeal against a slash (within 24 hours).\n   * \n   * @param slashRecordId - Slash record object ID\n   * @param appealReason - Reason for the appeal\n   * @param counterEvidence - Counter-evidence to dispute the slash\n   * @returns Transaction for appeal filing\n   */\n  fileAppealTransaction(\n    slashRecordId: string,\n    appealReason: string,\n    counterEvidence: string\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n    \n    const tx = new Transaction();\n    \n    tx.moveCall({\n      target: `${packageId}::${MODULES.SLASH_MANAGER}::file_appeal`,\n      arguments: [\n        tx.object(sharedObjects.slashManager),\n        tx.object(slashRecordId),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(appealReason))),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(counterEvidence))),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * File an appeal against a slash (within 24 hours).\n   * \n   * @param slashRecordId - Slash record object ID\n   * @param appealReason - Reason for the appeal\n   * @param counterEvidence - Counter-evidence to dispute the slash\n   * @param signer - Slashed solver's keypair\n   * @returns Transaction result with appeal object\n   */\n  async fileAppeal(\n    slashRecordId: string,\n    appealReason: string,\n    counterEvidence: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.fileAppealTransaction(slashRecordId, appealReason, counterEvidence);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Appeal filing failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to file appeal: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to resolve an appeal (admin only).\n   * \n   * @param slashRecordId - Slash record object ID\n   * @param appealId - Appeal object ID\n   * @param approved - Whether to approve or reject the appeal\n   * @param adminCap - Admin capability object ID\n   * @returns Transaction for appeal resolution\n   */\n  resolveAppealTransaction(\n    slashRecordId: string,\n    appealId: string,\n    approved: boolean,\n    adminCap: string\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n    \n    const tx = new Transaction();\n    \n    tx.moveCall({\n      target: `${packageId}::${MODULES.SLASH_MANAGER}::resolve_appeal`,\n      arguments: [\n        tx.object(adminCap),\n        tx.object(sharedObjects.slashManager),\n        tx.object(slashRecordId),\n        tx.object(appealId),\n        tx.pure.bool(approved),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Resolve an appeal (admin only).\n   * \n   * @param slashRecordId - Slash record object ID\n   * @param appealId - Appeal object ID\n   * @param approved - Whether to approve or reject the appeal\n   * @param adminCap - Admin capability object ID\n   * @param signer - Admin's keypair\n   * @returns Transaction result\n   */\n  async resolveAppeal(\n    slashRecordId: string,\n    appealId: string,\n    approved: boolean,\n    adminCap: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.resolveAppealTransaction(slashRecordId, appealId, approved, adminCap);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Appeal resolution failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to resolve appeal: ${error.message}`);\n    }\n  }\n\n  /**\n   * Get all slashes for a solver.\n   * \n   * @param solverAddress - Solver's address\n   * @returns Map of slash ID to severity\n   */\n  async getSolverSlashes(solverAddress: string): Promise<Map<string, number>> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SLASH_MANAGER}::get_solver_slashes`,\n            arguments: [\n              tx.object(sharedObjects.slashManager),\n              tx.pure.address(solverAddress)\n            ]\n          });\n          return tx;\n        })(),\n        sender: solverAddress\n      });\n\n      if (result.results?.[0]?.returnValues?.[0]) {\n        const [slashData] = result.results[0].returnValues;\n        return this.parseSlashMap(slashData);\n      }\n\n      return new Map();\n    } catch (error: any) {\n      console.warn(`Failed to get solver slashes: ${error.message}`);\n      return new Map();\n    }\n  }\n\n  /**\n   * Calculate total slash percentage for a solver.\n   * \n   * @param solverAddress - Solver's address\n   * @returns Total slash percentage in basis points (max 10000 = 100%)\n   */\n  async calculateTotalSlashPercentage(solverAddress: string): Promise<number> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SLASH_MANAGER}::calculate_total_slash_percentage`,\n            arguments: [\n              tx.object(sharedObjects.slashManager),\n              tx.pure.address(solverAddress)\n            ]\n          });\n          return tx;\n        })(),\n        sender: solverAddress\n      });\n\n      if (result.results?.[0]?.returnValues?.[0]) {\n        const [percentageData] = result.results[0].returnValues;\n        return parseInt(this.parseU64(percentageData));\n      }\n\n      return 0;\n    } catch (error: any) {\n      console.warn(`Failed to calculate slash percentage: ${error.message}`);\n      return 0;\n    }\n  }\n\n  /**\n   * Check if a slash has been appealed and approved.\n   * \n   * @param slashId - Slash record ID\n   * @returns True if appealed and approved\n   */\n  async isSlashAppealedAndApproved(slashId: string): Promise<boolean> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SLASH_MANAGER}::is_slash_appealed_and_approved`,\n            arguments: [\n              tx.object(sharedObjects.slashManager),\n              tx.pure.id(slashId)\n            ]\n          });\n          return tx;\n        })(),\n        sender: '0x0'\n      });\n\n      if (result.results?.[0]?.returnValues?.[0]) {\n        const [approvedData] = result.results[0].returnValues;\n        return this.parseBoolean(approvedData);\n      }\n\n      return false;\n    } catch (error: any) {\n      console.warn(`Failed to check appeal status: ${error.message}`);\n      return false;\n    }\n  }\n\n  /**\n   * Check if solver has active slashes.\n   * \n   * @param solverAddress - Solver's address\n   * @returns True if solver has active slashes\n   */\n  async hasActiveSlashes(solverAddress: string): Promise<boolean> {\n    try {\n      const packageId = INTENUS_PACKAGE_ID[this.config.network];\n      const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n      const result = await this.suiClient.devInspectTransactionBlock({\n        transactionBlock: (() => {\n          const tx = new Transaction();\n          tx.moveCall({\n            target: `${packageId}::${MODULES.SLASH_MANAGER}::has_active_slashes`,\n            arguments: [\n              tx.object(sharedObjects.slashManager),\n              tx.pure.address(solverAddress)\n            ]\n          });\n          return tx;\n        })(),\n        sender: solverAddress\n      });\n\n      if (result.results?.[0]?.returnValues?.[0]) {\n        const [activeData] = result.results[0].returnValues;\n        return this.parseBoolean(activeData);\n      }\n\n      return false;\n    } catch (error: any) {\n      console.warn(`Failed to check active slashes: ${error.message}`);\n      return false;\n    }\n  }\n\n  /**\n   * Get slash records owned by a solver (soulbound NFTs).\n   * \n   * @param solverAddress - Solver's address\n   * @returns Array of slash records\n   */\n  async getSlashRecords(solverAddress: string): Promise<SlashRecord[]> {\n    try {\n      // Query owned objects of SlashRecord type\n      const objects = await this.suiClient.getOwnedObjects({\n        owner: solverAddress,\n        filter: {\n          StructType: `${INTENUS_PACKAGE_ID[this.config.network]}::${MODULES.SLASH_MANAGER}::SlashRecord`\n        },\n        options: {\n          showContent: true,\n          showType: true\n        }\n      });\n\n      const records: SlashRecord[] = [];\n      \n      for (const obj of objects.data) {\n        if (obj.data?.content && 'fields' in obj.data.content) {\n          const fields = obj.data.content.fields as any;\n          records.push({\n            id: obj.data.objectId,\n            solver_address: fields.solver_address,\n            batch_id: parseInt(fields.batch_id),\n            solution_id: new TextDecoder().decode(new Uint8Array(fields.solution_id)),\n            severity: parseInt(fields.severity),\n            reason: new TextDecoder().decode(new Uint8Array(fields.reason)),\n            slash_percentage_bps: parseInt(fields.slash_percentage_bps),\n            created_at: parseInt(fields.created_at),\n            appealed: fields.appealed,\n            appeal_approved: fields.appeal_approved\n          });\n        }\n      }\n\n      return records;\n    } catch (error: any) {\n      console.warn(`Failed to get slash records: ${error.message}`);\n      return [];\n    }\n  }\n\n  // Helper methods for parsing BCS data\n  private parseSlashMap(data: any): Map<string, number> {\n    // This would need proper BCS deserialization for VecMap\n    return new Map();\n  }\n\n  private parseU64(data: any): string {\n    // Parse u64 from BCS bytes\n    return '0';\n  }\n\n  private parseBoolean(data: any): boolean {\n    // Parse boolean from BCS bytes\n    return false;\n  }\n}\n","/**\n * Registry Service - Manage Intent and Solution lifecycle\n * This is the core service for submitting intents and solutions\n */\n\nimport { Transaction, type TransactionArgument } from '@mysten/sui/transactions';\nimport type { SuiClient } from '@mysten/sui/client';\nimport type { Signer } from '@mysten/sui/cryptography';\nimport { INTENUS_PACKAGE_ID, SHARED_OBJECTS, MODULES, REGISTRY_CONSTANTS } from '../constants.js';\nimport type { IntenusClientConfig, TransactionResult } from '../types.js';\n\n/**\n * Intent policy configuration (embedded in Intent)\n */\nexport interface IntentPolicyParams {\n  solver_access_start_ms: number;\n  solver_access_end_ms: number;\n  auto_revoke_ms: number;\n  requires_solver_registration: boolean;\n  min_solver_stake: string;\n  requires_attestation: boolean;\n  min_solver_reputation_score: number;\n}\n\n/**\n * Intent status constants\n */\nexport const INTENT_STATUS = {\n  PENDING: 0,\n  BEST_SOLUTION_SELECTED: 1,\n  EXECUTED: 2,\n  REVOKED: 3,\n} as const;\n\n/**\n * Solution status constants\n */\nexport const SOLUTION_STATUS = {\n  PENDING: 0,\n  ATTESTED: 1,\n  SELECTED: 2,\n  EXECUTED: 3,\n  REJECTED: 4,\n} as const;\n\nexport class RegistryService {\n  constructor(\n    private suiClient: SuiClient,\n    private config: IntenusClientConfig\n  ) {}\n\n  /**\n   * Create transaction to submit a new intent with embedded policy parameters.\n   * The actual intent content (operation, constraints) is stored in Walrus.\n   *\n   * @param blobId - Walrus blob ID containing the IGS intent\n   * @param policy - Policy parameters for access control\n   * @param options - Optional parameters\n   * @param options.fee - Pre-split fee coin (TransactionArgument). If not provided, will split from gas\n   * @param options.feeAmount - Amount to split from gas coin in MIST (default: MIN_INTENT_FEE)\n   * @returns Transaction for intent submission\n   */\n  submitIntentTransaction(\n    blobId: string,\n    policy: IntentPolicyParams,\n    options?: {\n      fee?: TransactionArgument;\n      feeAmount?: number | string;\n    }\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    // Split fee from gas coin if not provided\n    const feeCoin = options?.fee || (() => {\n      const amount = options?.feeAmount || REGISTRY_CONSTANTS.MIN_INTENT_FEE;\n      const [coin] = tx.splitCoins(tx.gas, [tx.pure.u64(amount)]);\n      return coin;\n    })();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.REGISTRY}::submit_intent`,\n      arguments: [\n        tx.pure.string(blobId),\n        tx.pure.u64(policy.solver_access_start_ms),\n        tx.pure.u64(policy.solver_access_end_ms),\n        tx.pure.u64(policy.auto_revoke_ms),\n        tx.pure.bool(policy.requires_solver_registration),\n        tx.pure.u64(policy.min_solver_stake),\n        tx.pure.bool(policy.requires_attestation),\n        tx.pure.u64(policy.min_solver_reputation_score),\n        feeCoin,\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Submit a new intent with embedded policy parameters.\n   * The actual intent content (operation, constraints) is stored in Walrus.\n   *\n   * @param blobId - Walrus blob ID containing the IGS intent\n   * @param policy - Policy parameters for access control\n   * @param options - Optional parameters\n   * @param options.fee - Pre-split fee coin (TransactionArgument). If not provided, will split from gas\n   * @param options.feeAmount - Amount to split from gas coin in MIST (default: MIN_INTENT_FEE)\n   * @param signer - User's keypair\n   * @returns Transaction result with created Intent object\n   */\n  async submitIntent(\n    blobId: string,\n    policy: IntentPolicyParams,\n    options: {\n      fee?: TransactionArgument;\n      feeAmount?: number | string;\n    } | undefined,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.submitIntentTransaction(blobId, policy, options);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Intent submission failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to submit intent: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to submit a solution for an intent.\n   * The actual solution content (PTB, surplus calculation) is stored in Walrus.\n   *\n   * @param intentObjectId - Intent object ID\n   * @param blobId - Walrus blob ID containing the IGS solution\n   * @returns Transaction for solution submission\n   */\n  submitSolutionTransaction(\n    intentObjectId: string,\n    blobId: string\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.REGISTRY}::submit_solution`,\n      arguments: [\n        tx.object(intentObjectId),\n        tx.object(sharedObjects.solverRegistry),\n        tx.pure.string(blobId),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Submit a solution for an intent.\n   * The actual solution content (PTB, surplus calculation) is stored in Walrus.\n   *\n   * @param intentObjectId - Intent object ID\n   * @param blobId - Walrus blob ID containing the IGS solution\n   * @param signer - Solver's keypair\n   * @returns Transaction result with created Solution object\n   */\n  async submitSolution(\n    intentObjectId: string,\n    blobId: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.submitSolutionTransaction(intentObjectId, blobId);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Solution submission failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to submit solution: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to attest a solution with enclave signature.\n   * Called by enclave after validating the solution off-chain.\n   *\n   * @param solutionObjectId - Solution object ID\n   * @param intentObjectId - Intent object ID\n   * @param inputHash - Hash of input data (intent + constraints)\n   * @param outputHash - Hash of output data (solution + surplus)\n   * @param measurement - Enclave measurement (PCR values)\n   * @param signature - Signature from enclave\n   * @param timestampMs - Attestation timestamp\n   * @returns Transaction for solution attestation\n   */\n  attestSolutionTransaction(\n    solutionObjectId: string,\n    intentObjectId: string,\n    inputHash: Uint8Array,\n    outputHash: Uint8Array,\n    measurement: Uint8Array,\n    signature: Uint8Array,\n    timestampMs: number\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.REGISTRY}::attest_solution`,\n      arguments: [\n        tx.object(solutionObjectId),\n        tx.object(intentObjectId),\n        tx.pure.vector('u8', Array.from(inputHash)),\n        tx.pure.vector('u8', Array.from(outputHash)),\n        tx.pure.vector('u8', Array.from(measurement)),\n        tx.pure.vector('u8', Array.from(signature)),\n        tx.pure.u64(timestampMs),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Attest a solution with enclave signature.\n   * Called by enclave after validating the solution off-chain.\n   *\n   * @param solutionObjectId - Solution object ID\n   * @param intentObjectId - Intent object ID\n   * @param inputHash - Hash of input data (intent + constraints)\n   * @param outputHash - Hash of output data (solution + surplus)\n   * @param measurement - Enclave measurement (PCR values)\n   * @param signature - Signature from enclave\n   * @param timestampMs - Attestation timestamp\n   * @param signer - Enclave's keypair\n   * @returns Transaction result\n   */\n  async attestSolution(\n    solutionObjectId: string,\n    intentObjectId: string,\n    inputHash: Uint8Array,\n    outputHash: Uint8Array,\n    measurement: Uint8Array,\n    signature: Uint8Array,\n    timestampMs: number,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.attestSolutionTransaction(\n        solutionObjectId,\n        intentObjectId,\n        inputHash,\n        outputHash,\n        measurement,\n        signature,\n        timestampMs\n      );\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Solution attestation failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to attest solution: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to select the best solution for an intent.\n   * User selects from attested solutions (typically ranked by AI off-chain).\n   *\n   * @param intentObjectId - Intent object ID\n   * @param solutionId - ID of the selected solution\n   * @returns Transaction for solution selection\n   */\n  selectBestSolutionTransaction(\n    intentObjectId: string,\n    solutionId: string\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.REGISTRY}::select_best_solution`,\n      arguments: [\n        tx.object(intentObjectId),\n        tx.pure.id(solutionId),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Select the best solution for an intent.\n   * User selects from attested solutions (typically ranked by AI off-chain).\n   *\n   * @param intentObjectId - Intent object ID\n   * @param solutionId - ID of the selected solution\n   * @param signer - User's keypair (intent owner)\n   * @returns Transaction result\n   */\n  async selectBestSolution(\n    intentObjectId: string,\n    solutionId: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.selectBestSolutionTransaction(intentObjectId, solutionId);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Solution selection failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to select solution: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to execute the selected solution.\n   * User executes the best solution after selection.\n   *\n   * @param intentObjectId - Intent object ID\n   * @param solutionObjectId - Solution object ID\n   * @returns Transaction for solution execution\n   */\n  executeSolutionTransaction(\n    intentObjectId: string,\n    solutionObjectId: string\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.REGISTRY}::execute_solution`,\n      arguments: [\n        tx.object(intentObjectId),\n        tx.object(solutionObjectId),\n        tx.object(sharedObjects.treasury),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Execute the selected solution.\n   * User executes the best solution after selection.\n   *\n   * @param intentObjectId - Intent object ID\n   * @param solutionObjectId - Solution object ID\n   * @param signer - User's keypair (intent owner)\n   * @returns Transaction result\n   */\n  async executeSolution(\n    intentObjectId: string,\n    solutionObjectId: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.executeSolutionTransaction(intentObjectId, solutionObjectId);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Solution execution failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to execute solution: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to reject a solution with reason (for slashing mechanism).\n   * Called when attestation fails or solution violates constraints.\n   *\n   * @param solutionObjectId - Solution object ID\n   * @param reason - Rejection reason\n   * @returns Transaction for solution rejection\n   */\n  rejectSolutionTransaction(\n    solutionObjectId: string,\n    reason: string\n  ): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.REGISTRY}::reject_solution`,\n      arguments: [\n        tx.object(solutionObjectId),\n        tx.object(sharedObjects.solverRegistry),\n        tx.pure.vector('u8', Array.from(new TextEncoder().encode(reason))),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Reject a solution with reason (for slashing mechanism).\n   * Called when attestation fails or solution violates constraints.\n   *\n   * @param solutionObjectId - Solution object ID\n   * @param reason - Rejection reason\n   * @param signer - Authorized keypair\n   * @returns Transaction result\n   */\n  async rejectSolution(\n    solutionObjectId: string,\n    reason: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.rejectSolutionTransaction(solutionObjectId, reason);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Solution rejection failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to reject solution: ${error.message}`);\n    }\n  }\n\n  /**\n   * Create transaction to revoke an intent (only owner can revoke).\n   *\n   * @param intentObjectId - Intent object ID\n   * @returns Transaction for intent revocation\n   */\n  revokeIntentTransaction(intentObjectId: string): Transaction {\n    const packageId = INTENUS_PACKAGE_ID[this.config.network];\n    const sharedObjects = SHARED_OBJECTS[this.config.network];\n\n    const tx = new Transaction();\n\n    tx.moveCall({\n      target: `${packageId}::${MODULES.REGISTRY}::revoke_intent`,\n      arguments: [\n        tx.object(intentObjectId),\n        tx.object(sharedObjects.clock)\n      ]\n    });\n\n    return tx;\n  }\n\n  /**\n   * Revoke an intent (only owner can revoke).\n   *\n   * @param intentObjectId - Intent object ID\n   * @param signer - User's keypair (intent owner)\n   * @returns Transaction result\n   */\n  async revokeIntent(\n    intentObjectId: string,\n    signer: Signer\n  ): Promise<TransactionResult> {\n    try {\n      const tx = this.revokeIntentTransaction(intentObjectId);\n\n      const result = await this.suiClient.signAndExecuteTransaction({\n        transaction: tx,\n        signer,\n        options: {\n          showEffects: true,\n          showObjectChanges: true\n        }\n      });\n\n      if (result.effects?.status?.status !== 'success') {\n        throw new Error(`Intent revocation failed: ${result.effects?.status?.error}`);\n      }\n\n      return {\n        digest: result.digest,\n        effects: result.effects,\n        objectChanges: result.objectChanges\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to revoke intent: ${error.message}`);\n    }\n  }\n\n  /**\n   * Get intent object data.\n   *\n   * @param intentObjectId - Intent object ID\n   * @returns Intent object data\n   */\n  async getIntent(intentObjectId: string): Promise<any> {\n    try {\n      const result = await this.suiClient.getObject({\n        id: intentObjectId,\n        options: {\n          showContent: true,\n          showOwner: true,\n          showType: true\n        }\n      });\n\n      return result.data;\n    } catch (error: any) {\n      throw new Error(`Failed to get intent: ${error.message}`);\n    }\n  }\n\n  /**\n   * Get solution object data.\n   *\n   * @param solutionObjectId - Solution object ID\n   * @returns Solution object data\n   */\n  async getSolution(solutionObjectId: string): Promise<any> {\n    try {\n      const result = await this.suiClient.getObject({\n        id: solutionObjectId,\n        options: {\n          showContent: true,\n          showOwner: true,\n          showType: true\n        }\n      });\n\n      return result.data;\n    } catch (error: any) {\n      throw new Error(`Failed to get solution: ${error.message}`);\n    }\n  }\n}\n","/**\n * Main Intenus Protocol Client\n * Provides unified access to all protocol services\n */\n\nimport { SuiClient } from '@mysten/sui/client';\nimport { INTENUS_PACKAGE_ID } from './constants.js';\nimport {\n  SolverRegistryService,\n  SealPolicyCoordinatorService,\n  SlashManagerService,\n  RegistryService\n} from './services/index.js';\nimport type { IntenusClientConfig, IntenusClientError } from './types.js';\nimport { NETWORKS } from '@intenus/common';\nexport class IntenusProtocolClient {\n  public readonly suiClient: SuiClient;\n  private config: IntenusClientConfig;\n\n  // Service instances\n  public readonly solvers: SolverRegistryService;\n  public readonly sealPolicy: SealPolicyCoordinatorService;\n  public readonly slashing: SlashManagerService;\n  public readonly registry: RegistryService;\n\n  constructor(config: IntenusClientConfig) {\n    // Validate network\n    const networkConfig = NETWORKS[config.network.toUpperCase() as keyof typeof NETWORKS];\n    if (!networkConfig) {\n      throw new Error(`Unknown network: ${config.network}`);\n    }\n\n    // Initialize Sui client\n    this.suiClient = config.suiClient || new SuiClient({\n      url: networkConfig.sui_rpc_url,\n      network: config.network\n    });\n\n    // Store configuration\n    this.config = {\n      network: config.network,\n      suiClient: this.suiClient,\n      packageId: config.packageId || INTENUS_PACKAGE_ID[config.network]\n    };\n\n    // Validate package ID\n    if (!this.config.packageId) {\n      throw new Error(`Package ID not configured for network: ${config.network}`);\n    }\n\n    // Initialize services\n    this.solvers = new SolverRegistryService(this.suiClient, this.config);\n    this.sealPolicy = new SealPolicyCoordinatorService(this.suiClient, this.config);\n    this.slashing = new SlashManagerService(this.suiClient, this.config);\n    this.registry = new RegistryService(this.suiClient, this.config);\n  }\n\n  /**\n   * Get current configuration\n   */\n  getConfig(): IntenusClientConfig {\n    return { ...this.config };\n  }\n\n  /**\n   * Get package ID for current network\n   */\n  getPackageId(): string {\n    return this.config.packageId!;\n  }\n\n  /**\n   * Get network name\n   */\n  getNetwork(): string {\n    return this.config.network;\n  }\n\n  /**\n   * Check if client is connected to the network\n   */\n  async isConnected(): Promise<boolean> {\n    try {\n      await this.suiClient.getLatestSuiSystemState();\n      return true;\n    } catch {\n      return false;\n    }\n  }\n\n  /**\n   * Get current epoch information\n   */\n  async getCurrentEpoch(): Promise<{\n    epoch: string;\n    epochStartTimestamp: string;\n    epochDurationMs: string;\n  }> {\n    try {\n      const systemState = await this.suiClient.getLatestSuiSystemState();\n      return {\n        epoch: systemState.epoch,\n        epochStartTimestamp: systemState.epochStartTimestampMs,\n        epochDurationMs: systemState.epochDurationMs\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to get epoch info: ${error.message}`);\n    }\n  }\n\n  /**\n   * Get protocol statistics across all services\n   */\n  async getProtocolStats(): Promise<{\n    registry: {\n      total_solvers: number;\n      min_stake: string;\n      withdrawal_cooldown: number;\n    };\n    current_batch?: {\n      batch_id: string;\n      intent_count: number;\n      solver_count: number;\n      status: number;\n    };\n    network: {\n      epoch: string;\n      timestamp: string;\n    };\n  }> {\n    try {\n      const [registryStats, epochInfo] = await Promise.all([\n        this.solvers.getRegistryStats(),\n        // this.batches.getCurrentBatch(), // Removed - batch concept deprecated\n        this.getCurrentEpoch()\n      ]);\n\n      return {\n        registry: registryStats,\n        current_batch: undefined, // Removed - batch concept deprecated\n        network: {\n          epoch: epochInfo.epoch,\n          timestamp: epochInfo.epochStartTimestamp\n        }\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to get protocol stats: ${error.message}`);\n    }\n  }\n\n  /**\n   * Validate solver eligibility for participation\n   */\n  async validateSolverEligibility(solverAddress: string): Promise<{\n    is_registered: boolean;\n    is_active: boolean;\n    stake_amount: string;\n    has_slashes: boolean;\n    total_slash_percentage: number;\n    can_participate: boolean;\n    reasons?: string[];\n  }> {\n    try {\n      const [profile, isActive, hasSlashes, slashPercentage] = await Promise.all([\n        this.solvers.getSolverProfile(solverAddress),\n        this.solvers.isSolverActive(solverAddress),\n        this.slashing.hasActiveSlashes(solverAddress),\n        this.slashing.calculateTotalSlashPercentage(solverAddress)\n      ]);\n\n      const reasons: string[] = [];\n      let canParticipate = true;\n\n      if (!profile) {\n        reasons.push('Solver not registered');\n        canParticipate = false;\n      }\n\n      if (!isActive) {\n        reasons.push('Solver not active');\n        canParticipate = false;\n      }\n\n      if (hasSlashes) {\n        reasons.push('Solver has active slashes');\n        canParticipate = false;\n      }\n\n      if (slashPercentage >= 5000) { // 50% or more slashed\n        reasons.push('Solver heavily slashed (≥50%)');\n        canParticipate = false;\n      }\n\n      return {\n        is_registered: !!profile,\n        is_active: isActive,\n        stake_amount: profile?.stake_amount || '0',\n        has_slashes: hasSlashes,\n        total_slash_percentage: slashPercentage,\n        can_participate: canParticipate,\n        reasons: reasons.length > 0 ? reasons : undefined\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to validate solver eligibility: ${error.message}`);\n    }\n  }\n\n  /**\n   * Get comprehensive solver dashboard data\n   */\n  async getSolverDashboard(solverAddress: string): Promise<{\n    profile: any;\n    eligibility: any;\n    slash_records: any[];\n    recent_batches: any[];\n  }> {\n    try {\n      const [profile, eligibility, slashRecords] = await Promise.all([\n        this.solvers.getSolverProfile(solverAddress),\n        this.validateSolverEligibility(solverAddress),\n        this.slashing.getSlashRecords(solverAddress)\n      ]);\n\n      // Get recent batch history - Removed: batch concept deprecated\n      // const currentEpoch = parseInt((await this.getCurrentEpoch()).epoch);\n      // const recentBatches = await this.batches.getBatchHistory(\n      //   Math.max(0, currentEpoch - 10),\n      //   currentEpoch\n      // );\n\n      return {\n        profile,\n        eligibility,\n        slash_records: slashRecords,\n        recent_batches: [] // Removed - batch concept deprecated\n      };\n    } catch (error: any) {\n      throw new Error(`Failed to get solver dashboard: ${error.message}`);\n    }\n  }\n}\n","/**\n * Type definitions for Intenus Protocol Client SDK\n */\n\nimport type { SuiClient } from '@mysten/sui/client';\nimport type { Signer } from '@mysten/sui/cryptography';\nimport type { Transaction } from '@mysten/sui/transactions';\n\n/**\n * Configuration for Intenus Protocol client\n */\nexport interface IntenusClientConfig {\n  network: 'mainnet' | 'testnet' | 'devnet';\n  suiClient?: SuiClient;\n  packageId?: string;\n}\n\n/**\n * Solver profile information\n */\nexport interface SolverProfile {\n  solver_address: string;\n  stake_amount: string;\n  reputation_score: number;\n  total_batches_participated: number;\n  batches_won: number;\n  total_surplus_generated: string;\n  accuracy_score: number;\n  last_submission_epoch: number;\n  registration_timestamp: number;\n  status: SolverStatus;\n  pending_withdrawal?: string;\n}\n\n/**\n * Solver status enumeration\n */\nexport enum SolverStatus {\n  ACTIVE = 0,\n  SLASHED = 1,\n  UNSTAKING = 3\n}\n\n/**\n * Ranked Programmable Transaction Block\n */\nexport interface RankedTx {\n  tx_bytes: string; // Base64 encoded Tx\n  rank: number;\n  solver_address: string;\n  solution_id: string;\n  estimated_surplus: string;\n  gas_budget: string;\n}\n\n/**\n * Batch summary information\n */\nexport interface BatchSummary {\n  batch_id: string;\n  epoch: number;\n  intent_count: number;\n  total_value_usd: string;\n  solver_count: number;\n  winning_solver?: string;\n  winning_solution_id?: string;\n  total_surplus_generated: string;\n  status: BatchStatus;\n  created_at: number;\n  executed_at?: number;\n}\n\n/**\n * Batch status enumeration\n */\nexport enum BatchStatus {\n  OPEN = 0,\n  SOLVING = 1,\n  RANKING = 2,\n  EXECUTED = 3\n}\n\n/**\n * Slash evidence structure\n */\nexport interface SlashEvidence {\n  batch_id: number;\n  solution_id: string;\n  solver_address: string;\n  severity: SlashSeverity;\n  reason_code: number;\n  reason_message: string;\n  failure_context: string;\n  attestation: string;\n  attestation_timestamp: number;\n  tee_measurement: string;\n}\n\n/**\n * Slash severity levels\n */\nexport enum SlashSeverity {\n  MINOR = 1,      // 5% slash\n  SIGNIFICANT = 2, // 20% slash\n  MALICIOUS = 3   // 100% slash\n}\n\n/**\n * Slash record (soulbound NFT)\n */\nexport interface SlashRecord {\n  id: string;\n  solver_address: string;\n  batch_id: number;\n  solution_id: string;\n  severity: SlashSeverity;\n  reason: string;\n  slash_percentage_bps: number;\n  created_at: number;\n  appealed: boolean;\n  appeal_approved: boolean;\n}\n\n/**\n * Appeal information\n */\nexport interface Appeal {\n  id: string;\n  slash_id: string;\n  solver_address: string;\n  reason: string;\n  counter_evidence: string;\n  created_at: number;\n  status: AppealStatus;\n}\n\n/**\n * Appeal status enumeration\n */\nexport enum AppealStatus {\n  PENDING = 0,\n  APPROVED = 1,\n  REJECTED = 2\n}\n\n/**\n * Policy types\n */\nexport enum PolicyType {\n  INTENT = 0,\n  STRATEGY = 1,\n  USER_HISTORY = 2\n}\n\n/**\n * Registry statistics\n */\nexport interface RegistryStats {\n  total_solvers: number;\n  min_stake: string;\n  withdrawal_cooldown: number;\n}\n\n/**\n * Transaction result with object changes\n */\nexport interface TransactionResult {\n  digest: string;\n  effects: any;\n  objectChanges?: any[] | null;\n  balanceChanges?: any[] | null;\n}\n\n/**\n * Error class for Intenus client operations\n */\nexport class IntenusClientError extends Error {\n  constructor(\n    message: string,\n    public code: string,\n    public details?: any\n  ) {\n    super(message);\n    this.name = 'IntenusClientError';\n  }\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { SuiClient } from '@mysten/sui/client';\nimport type { RankedTx } from './types.js';\n\n/**\n * OPTIONAL: Helper for executing ranked Txs\n * Clients can use Sui SDK directly if preferred\n */\nexport class TxExecutor {\n  constructor(private suiClient: SuiClient) {}\n  \n  /**\n   * Execute a ranked Tx\n   */\n  async execute(\n    rankedTx: RankedTx,\n    signer: any // Wallet signer\n  ): Promise<string> {\n    // Deserialize Tx\n    const txBytes = Buffer.from(rankedTx.tx_bytes, 'base64');\n    const txb = Transaction.from(txBytes);\n    \n    // Sign transaction\n    const { signature } = await signer.signTransactionBlock({\n      transactionBlock: txb,\n    });\n    \n    // Execute on Sui\n    const result = await this.suiClient.executeTransactionBlock({\n      transactionBlock: await txb.build(),\n      signature,\n      options: {\n        showEffects: true,\n        showEvents: true,\n      },\n    });\n    \n    if (result.effects?.status?.status !== 'success') {\n      throw new Error(`Transaction failed: ${result.effects?.status?.error}`);\n    }\n    \n    return result.digest;\n  }\n  \n  /**\n   * Simulate Tx execution (dry run)\n   */\n  async simulate(rankedTx: RankedTx): Promise<any> {\n    const txBytes = Buffer.from(rankedTx.tx_bytes, 'base64');\n    const txb = Transaction.from(txBytes);\n    \n    return await this.suiClient.dryRunTransactionBlock({\n      transactionBlock: await txb.build(),\n    });\n  }\n  \n  /**\n   * Get gas estimation for Tx\n   */\n  async estimateGas(rankedTx: RankedTx): Promise<string> {\n    const simulation = await this.simulate(rankedTx);\n    return simulation.effects.gasUsed.computationCost.toString();\n  }\n}\n"]}