{"version":3,"sources":["../src/errors.ts"],"sourcesContent":["/**\n * Base error class for all Vana SDK errors with structured error codes.\n *\n * @remarks\n * This abstract base class provides a foundation for all SDK-specific errors with\n * consistent error codes and stack trace handling. All Vana SDK errors extend this\n * class to provide structured error information that applications can handle\n * programmatically. The error code enables differentiation between error types\n * without relying on string matching.\n * @category Error Handling\n */\nexport class VanaError extends Error {\n  constructor(\n    message: string,\n    public readonly code?: string,\n  ) {\n    super(message);\n    this.name = this.constructor.name;\n\n    // Maintains proper stack trace for where our error was thrown (only available on V8)\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  }\n}\n\n/**\n * Thrown when gasless transaction submission via relayer fails.\n *\n * @remarks\n * This error occurs when the relayer service is unavailable, returns an error,\n * or fails to process a gasless transaction. It includes the HTTP status code\n * and response details when available to help with debugging relayer issues.\n * @category Error Handling\n */\nexport class RelayerError extends VanaError {\n  constructor(\n    message: string,\n    public readonly statusCode?: number,\n    public readonly response?: unknown,\n  ) {\n    super(message, \"RELAYER_ERROR\");\n  }\n}\n\n/**\n * Thrown when the user rejects a wallet signature request.\n *\n * @remarks\n * This error occurs when users decline to sign transactions or typed data through\n * their wallet interface. It's a normal part of user interaction and should be\n * handled gracefully by applications without treating it as a system error.\n * @category Error Handling\n */\nexport class UserRejectedRequestError extends VanaError {\n  constructor(message: string = \"User rejected the signature request\") {\n    super(message, \"USER_REJECTED_REQUEST\");\n  }\n}\n\n/**\n * Thrown when the SDK configuration contains invalid or missing parameters.\n *\n * @remarks\n * This error occurs during SDK initialization when required configuration\n * parameters are missing, invalid, or incompatible. Common causes include\n * missing wallet clients, invalid chain IDs, malformed storage provider\n * configurations, or incompatible parameter combinations.\n *\n * Applications should catch this error during initialization and provide\n * clear feedback to users about configuration requirements.\n *\n * @example\n * ```typescript\n * try {\n *   const vana = Vana({\n *     chainId: 999999, // Invalid chain ID\n *     account: null // Missing account\n *   });\n * } catch (error) {\n *   if (error instanceof InvalidConfigurationError) {\n *     console.error('Configuration error:', error.message);\n *     // Show user-friendly configuration help\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class InvalidConfigurationError extends VanaError {\n  constructor(message: string) {\n    super(message, \"INVALID_CONFIGURATION\");\n  }\n}\n\n/**\n * Thrown when a required Vana protocol contract is not deployed on the current chain.\n *\n * @remarks\n * This error occurs when attempting to interact with contracts that are not\n * available on the connected blockchain network. It includes the contract name\n * and chain ID to help identify deployment issues or incorrect network configuration.\n * @category Error Handling\n */\nexport class ContractNotFoundError extends VanaError {\n  constructor(contractName: string, chainId: number) {\n    super(\n      `Contract ${contractName} not found on chain ${chainId}`,\n      \"CONTRACT_NOT_FOUND\",\n    );\n  }\n}\n\n/**\n * Thrown when blockchain operations fail due to network, contract, or transaction issues.\n *\n * @remarks\n * This error encompasses various blockchain-related failures including network\n * connectivity issues, contract execution failures, insufficient gas, invalid\n * transaction parameters, or smart contract reverts. The original error is\n * preserved to provide detailed debugging information while maintaining a\n * consistent SDK error interface.\n *\n * Common causes:\n * - Network connectivity problems\n * - Insufficient gas or gas price too low\n * - Contract function reverts\n * - Invalid transaction parameters\n * - Blockchain congestion or downtime\n *\n * @example\n * ```typescript\n * try {\n *   await vana.permissions.grant({\n *     grantee: '0x742d35...',\n *     operation: 'read'\n *   });\n * } catch (error) {\n *   if (error instanceof BlockchainError) {\n *     console.error('Blockchain operation failed:', error.message);\n *\n *     // Check if it's a network issue\n *     if (error.originalError?.message.includes('network')) {\n *       // Retry with exponential backoff\n *       await retryOperation();\n *     }\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class BlockchainError extends VanaError {\n  constructor(\n    message: string,\n    public readonly originalError?: Error,\n  ) {\n    super(message, \"BLOCKCHAIN_ERROR\");\n  }\n}\n\n/**\n * Thrown when data serialization or deserialization operations fail.\n *\n * @remarks\n * This error occurs when the SDK cannot properly serialize parameters for\n * blockchain transactions, IPFS storage, or API calls. Common causes include\n * circular references in objects, unsupported data types, or malformed JSON.\n * It's typically encountered during grant file creation, storage operations,\n * or when preparing transaction data.\n *\n * @example\n * ```typescript\n * try {\n *   // Object with circular reference causes serialization error\n *   const obj = { name: 'test' };\n *   obj.self = obj; // Circular reference\n *\n *   await vana.data.upload({\n *     content: obj,\n *     filename: 'data.json'\n *   });\n * } catch (error) {\n *   if (error instanceof SerializationError) {\n *     console.error('Data serialization failed:', error.message);\n *     // Clean data before retry\n *     const cleanedData = removeCircularReferences(obj);\n *     await vana.data.upload({\n *       content: cleanedData,\n *       filename: 'data.json'\n *     });\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class SerializationError extends VanaError {\n  constructor(message: string) {\n    super(message, \"SERIALIZATION_ERROR\");\n  }\n}\n\n/**\n * Thrown when a signature operation fails or cannot be completed.\n *\n * @remarks\n * This error occurs when wallet signature operations fail due to disconnection,\n * locked accounts, or other wallet-related issues. It preserves the original\n * error for debugging while providing consistent error handling across the SDK.\n *\n * Recovery strategies:\n * - Check wallet connection and account unlock status\n * - Retry operation with explicit user interaction\n * - For gasless operations, consider switching to direct transactions\n *\n * @example\n * ```typescript\n * try {\n *   await vana.permissions.grant({ grantee: '0x...' });\n * } catch (error) {\n *   if (error instanceof SignatureError) {\n *     // Prompt user to unlock wallet\n *     await promptWalletUnlock();\n *     // Retry operation\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class SignatureError extends VanaError {\n  constructor(\n    message: string,\n    public readonly originalError?: Error,\n  ) {\n    super(message, \"SIGNATURE_ERROR\");\n  }\n}\n\n/**\n * Thrown when network communication fails during API calls or blockchain interactions.\n *\n * @remarks\n * This error encompasses network connectivity issues, API unavailability,\n * timeout errors, and CORS restrictions. It's commonly encountered during\n * IPFS operations, subgraph queries, or RPC calls.\n *\n * Recovery strategies:\n * - Check network connectivity\n * - Retry with exponential backoff\n * - Verify API endpoints are accessible\n * - Switch to alternative network providers or gateways\n *\n * @example\n * ```typescript\n * try {\n *   const files = await vana.data.getUserFiles({ owner: '0x...' });\n * } catch (error) {\n *   if (error instanceof NetworkError) {\n *     // Implement retry with exponential backoff\n *     await retryWithBackoff(() => vana.data.getUserFiles({ owner: '0x...' }));\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class NetworkError extends VanaError {\n  constructor(\n    message: string,\n    public readonly originalError?: Error,\n  ) {\n    super(message, \"NETWORK_ERROR\");\n  }\n}\n\n/**\n * Thrown when transaction nonce retrieval fails during gasless operations.\n *\n * @remarks\n * This error occurs when the SDK cannot retrieve the user's current nonce from\n * smart contracts, preventing gasless transaction submission. Nonces are critical\n * for preventing replay attacks in signed transactions.\n *\n * Recovery strategies:\n * - Retry nonce retrieval after brief delay\n * - Check wallet connection and account status\n * - Use manual nonce specification if supported by the operation\n * - Switch to direct transactions as fallback\n *\n * @example\n * ```typescript\n * try {\n *   await vana.permissions.grant({ grantee: '0x...' });\n * } catch (error) {\n *   if (error instanceof NonceError) {\n *     // Wait and retry\n *     await delay(1000);\n *     await vana.permissions.grant({ grantee: '0x...' });\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class NonceError extends VanaError {\n  constructor(message: string) {\n    super(message, \"NONCE_ERROR\");\n  }\n}\n\n/**\n * Thrown when personal server operations fail or cannot be completed.\n *\n * @remarks\n * This error occurs during interactions with personal servers for computation\n * requests, identity retrieval, or operation status checks. Common causes include\n * server unavailability, untrusted server status, or invalid permission grants.\n *\n * Recovery strategies:\n * - Verify server URL accessibility\n * - Check server trust status via `vana.permissions.getTrustedServers()`\n * - Ensure valid permissions exist for the operation\n * - Retry after server becomes available\n *\n * @example\n * ```typescript\n * try {\n *   const result = await vana.server.createOperation({ permissionId: 123 });\n * } catch (error) {\n *   if (error instanceof PersonalServerError) {\n *     // Check if server is trusted\n *     const trustedServers = await vana.permissions.getTrustedServers();\n *     if (!trustedServers.includes(serverId)) {\n *       await vana.permissions.trustServer({ serverId });\n *     }\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class PersonalServerError extends VanaError {\n  constructor(\n    message: string,\n    public readonly originalError?: Error,\n  ) {\n    super(message, \"PERSONAL_SERVER_ERROR\");\n  }\n}\n\n/**\n * Thrown when attempting to register a server with a URL different from its existing registration.\n *\n * @remarks\n * This error occurs when trying to add or trust a server that's already registered\n * on-chain with a different URL. Server URLs are immutable once registered to\n * maintain consistency and security. Applications should use the existing URL\n * or register a new server with a different ID.\n *\n * @example\n * ```typescript\n * try {\n *   await vana.permissions.addAndTrustServer({\n *     serverId: 1,\n *     serverUrl: 'https://new-url.com',\n *     publicKey: '0x...'\n *   });\n * } catch (error) {\n *   if (error instanceof ServerUrlMismatchError) {\n *     console.log(`Server already registered with: ${error.existingUrl}`);\n *     // Use existing URL or register new server\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class ServerUrlMismatchError extends VanaError {\n  constructor(existingUrl: string, providedUrl: string, serverId: string) {\n    super(\n      `Server ${serverId} is already registered with URL \"${existingUrl}\". Cannot change to \"${providedUrl}\".`,\n      \"SERVER_URL_MISMATCH\",\n    );\n    this.existingUrl = existingUrl;\n    this.providedUrl = providedUrl;\n    this.serverId = serverId;\n  }\n\n  public readonly existingUrl: string;\n  public readonly providedUrl: string;\n  public readonly serverId: string;\n}\n\n/**\n * Thrown when permission grant, revoke, or validation operations fail.\n *\n * @remarks\n * This error occurs during permission management operations including grants,\n * revocations, and permission validation checks. Common causes include invalid\n * grantee addresses, expired permissions, or insufficient privileges.\n *\n * @example\n * ```typescript\n * try {\n *   await vana.permissions.revoke({ permissionId: 999999 });\n * } catch (error) {\n *   if (error instanceof PermissionError) {\n *     console.error('Permission operation failed:', error.message);\n *     // Permission may not exist or user may not be owner\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class PermissionError extends VanaError {\n  constructor(\n    message: string,\n    public readonly originalError?: Error,\n  ) {\n    super(message, \"PERMISSION_ERROR\");\n  }\n}\n\n/**\n * Thrown when attempting to perform write operations without a wallet client.\n *\n * @remarks\n * This error occurs when trying to execute operations that require wallet\n * interaction (signing, encrypting, or submitting transactions) while the SDK\n * is initialized in read-only mode without a wallet client. To perform write\n * operations, the SDK must be initialized with a wallet client.\n *\n * Common operations that require a wallet:\n * - Signing transactions or typed data\n * - Encrypting or decrypting files\n * - Granting or revoking permissions\n * - Uploading data to IPFS\n * - Submitting blockchain transactions\n *\n * @example\n * ```typescript\n * try {\n *   // This will throw if no wallet client is provided\n *   await vana.data.decryptFile({ fileId: 'abc123' });\n * } catch (error) {\n *   if (error instanceof ReadOnlyError) {\n *     console.error(`Cannot ${error.operation}: ${error.message}`);\n *     // Initialize with wallet client to enable write operations\n *     const vanaWithWallet = Vana({\n *       walletClient: createWalletClient(...)\n *     });\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class ReadOnlyError extends VanaError {\n  constructor(\n    operation: string,\n    suggestion: string = \"Initialize the SDK with a walletClient to perform this operation\",\n  ) {\n    super(\n      `Operation '${operation}' requires a wallet client. ${suggestion}`,\n      \"READ_ONLY_ERROR\",\n    );\n    this.operation = operation;\n    this.suggestion = suggestion;\n  }\n\n  /** The operation that was attempted */\n  public readonly operation: string;\n  /** Suggested solution for fixing the error */\n  public readonly suggestion: string;\n}\n\n/**\n * Thrown when a long-running transaction operation times out or fails during polling.\n *\n * @remarks\n * This error occurs when asynchronous relayer operations exceed the configured timeout\n * or encounter non-recoverable errors during status polling. It preserves the operation ID\n * to allow recovery and status checking at a later time.\n *\n * The error includes:\n * - Operation ID for recovery and status checking\n * - Last known status before failure\n * - Original error details\n *\n * Recovery strategies:\n * - Save the operation ID for later status checking\n * - Implement manual recovery flow using the operation ID\n * - Check transaction status through alternative means\n * - Contact support if operation remains stuck\n *\n * @example\n * ```typescript\n * try {\n *   const result = await vana.permissions.grant({\n *     grantee: '0x...',\n *     files: [1, 2, 3]\n *   });\n * } catch (error) {\n *   if (error instanceof TransactionPendingError) {\n *     // Save operation ID for recovery\n *     localStorage.setItem('pending_operation', error.operationId);\n *\n *     // Show recovery UI\n *     showRecoveryDialog({\n *       operationId: error.operationId,\n *       lastStatus: error.lastKnownStatus\n *     });\n *\n *     // Attempt recovery later\n *     const status = await vana.checkOperationStatus(error.operationId);\n *   }\n * }\n * ```\n * @category Error Handling\n */\nexport class TransactionPendingError extends VanaError {\n  constructor(\n    /** The operation ID that can be used for status checking */\n    public readonly operationId: string,\n    message: string,\n    /** The last known status of the operation before failure */\n    public readonly lastKnownStatus?: unknown,\n  ) {\n    super(\n      `Transaction operation pending: ${message} (operationId: ${operationId})`,\n      \"TRANSACTION_PENDING\",\n    );\n  }\n\n  /**\n   * Converts the error to a JSON-serializable format.\n   *\n   * @remarks\n   * Useful for logging, storage, or transmission of error details.\n   *\n   * @returns JSON representation of the error\n   */\n  toJSON(): Record<string, unknown> {\n    return {\n      name: this.name,\n      code: this.code,\n      message: this.message,\n      operationId: this.operationId,\n      lastKnownStatus: this.lastKnownStatus,\n    };\n  }\n}\n\n/**\n * Personal Server error codes a Write API call can surface in\n * {@link PersonalServerWriteError.errorCode}.\n *\n * @remarks\n * The `WRITE_*` and `LINEAGE_*` codes are specific to the Write API; the\n * rest are the shared protocol codes the write policy reuses. The string\n * escape hatch keeps codes introduced by a newer Personal Server readable.\n * @category Error Handling\n */\nexport type PersonalServerWriteErrorCode =\n  | \"WRITE_SESSION_AUTH_FAILED\"\n  | \"WRITE_SESSION_PROOF_REQUIRED\"\n  | \"WRITE_SESSION_PROOF_REPLAY\"\n  | \"GRANT_ID_REQUIRED\"\n  | \"WRITE_ATTRIBUTION_REQUIRED\"\n  | \"WRITE_ATTRIBUTION_INVALID\"\n  | \"WRITE_ATTRIBUTION_SIGNER_MISMATCH\"\n  | \"WRITE_ATTRIBUTION_GRANT_MISMATCH\"\n  | \"WRITE_ATTRIBUTION_REPLAY\"\n  | \"WRITE_BODY_NOT_CANONICAL\"\n  | \"LINEAGE_INVALID\"\n  | \"LINEAGE_SCOPE_UNDER_SOURCE_PREFIX\"\n  | \"LINEAGE_SOURCE_UNKNOWN\"\n  | \"LINEAGE_SOURCE_LOOKUP_FAILED\"\n  | \"LINEAGE_FORBIDDEN\"\n  | \"LINEAGE_GATEWAY_ERROR\"\n  | \"LINEAGE_UNAVAILABLE\"\n  | \"LINEAGE_CASCADE_UNAVAILABLE\"\n  | \"LINEAGE_SIGNATURE_REQUIRED\"\n  | \"LINEAGE_SIGNATURE_INVALID\"\n  | \"INVALID_CASCADE\"\n  | \"INVALID_VERSION\"\n  | \"NOT_FOUND\"\n  | \"MISSING_AUTH\"\n  | \"INVALID_SIGNATURE\"\n  | \"UNREGISTERED_BUILDER\"\n  | \"GRANT_REQUIRED\"\n  | \"GRANT_REVOKED\"\n  | \"GRANT_EXPIRED\"\n  | \"GRANT_OWNER_MISMATCH\"\n  | \"SCOPE_MISMATCH\"\n  | \"INVALID_BODY\"\n  | \"CONTENT_TOO_LARGE\"\n  | \"PS_UNAVAILABLE\"\n  | \"SERVER_NOT_CONFIGURED\"\n  | \"INTERNAL_ERROR\"\n  | \"DERIVATIVE_QUESTION_INVALID\"\n  | \"DERIVATIVE_QUESTION_NOT_FOUND\"\n  | \"DERIVATIVE_DERIVED_SCOPE_REQUIRED\"\n  | \"DERIVATIVE_CYCLE\"\n  | \"DERIVATIVE_SOURCE_NOT_GRANTED\"\n  | \"DERIVATIVE_COMPUTE_UNAVAILABLE\"\n  | \"METHOD_NOT_ALLOWED\"\n  | (string & {});\n\n/**\n * Base class for every Personal Server Write API failure, including the\n * derivative question routes that authenticate with the same credential.\n *\n * @remarks\n * `status` is the HTTP status the Personal Server answered with (absent for\n * failures raised before a request was sent or when no response arrived),\n * `errorCode` is the Personal Server's protocol error code when the body\n * carried one, and `details` is the server-supplied detail object.\n * @category Error Handling\n */\nexport class PersonalServerWriteError extends VanaError {\n  constructor(\n    message: string,\n    code: string,\n    public readonly status?: number,\n    public readonly errorCode: PersonalServerWriteErrorCode | null = null,\n    public readonly details?: Record<string, unknown>,\n  ) {\n    super(message, code);\n  }\n}\n\n/**\n * Thrown before any request is sent when the write input is invalid: no\n * payload, a payload that is not a JSON object, a reserved `$writtenBy` /\n * `$lineage` key, a malformed lineage source id, or an unusable signer.\n * @category Error Handling\n */\nexport class WriteRequestError extends PersonalServerWriteError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"WRITE_INVALID_REQUEST\", undefined, null, details);\n  }\n}\n\n/**\n * Thrown when the transport failed (fetch threw) on every attempt.\n *\n * @remarks\n * A write whose response was lost may still have been stored: the Personal\n * Server commits before answering. Check the scope before re-sending the\n * same record.\n * @category Error Handling\n */\nexport class WriteTransportError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    public readonly attempts: number,\n    cause?: unknown,\n  ) {\n    super(message, \"WRITE_TRANSPORT_ERROR\", undefined, null, { attempts });\n    this.cause = cause;\n  }\n}\n\n/**\n * Thrown when `POST /v1/write/session` refused the handshake (any non-2xx),\n * or answered with a body the SDK cannot read.\n * @category Error Handling\n */\nexport class WriteSessionError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    status?: number,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"WRITE_SESSION_REJECTED\", status, errorCode, details);\n  }\n}\n\n/**\n * Thrown by {@link writeData} when the session's bearer token has passed its\n * `expires_in` lifetime. Open a new session; nothing was sent.\n * @category Error Handling\n */\nexport class WriteSessionExpiredError extends PersonalServerWriteError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"WRITE_SESSION_EXPIRED\", undefined, null, details);\n  }\n}\n\n/**\n * Thrown when a write answered 401.\n *\n * @remarks\n * `WRITE_ATTRIBUTION_*` codes describe the per-write proof. A plain\n * `INVALID_SIGNATURE` or `MISSING_AUTH` on a write usually means the session\n * token is no longer known to the Personal Server (expired, or the server\n * restarted and dropped its in-memory sessions): open a new session.\n * @category Error Handling\n */\nexport class WriteUnauthorizedError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"WRITE_UNAUTHORIZED\", 401, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a write answered 403: the live grant no longer authorizes it\n * (revoked, expired, wrong owner) or the scope is outside its write patterns.\n * @category Error Handling\n */\nexport class WriteForbiddenError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"WRITE_FORBIDDEN\", 403, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a write answered 409 (the record conflicts with server state).\n * @category Error Handling\n */\nexport class WriteConflictError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"WRITE_CONFLICT\", 409, errorCode, details);\n  }\n}\n\n/**\n * Thrown when the Personal Server rejected the write's lineage: 422\n * `LINEAGE_SOURCE_UNKNOWN` (`details.unknown` lists the offending ids), 400\n * `LINEAGE_INVALID` / `LINEAGE_SCOPE_UNDER_SOURCE_PREFIX`, or 502\n * `LINEAGE_SOURCE_LOOKUP_FAILED`.\n * @category Error Handling\n */\nexport class WriteLineageError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    status = 422,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"WRITE_LINEAGE_REJECTED\", status, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a write answered any other non-2xx status (400 for a body the\n * server cannot store, 413 for an oversized payload, 5xx).\n * @category Error Handling\n */\nexport class WriteRejectedError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    status: number,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"WRITE_REJECTED\", status, errorCode, details);\n  }\n}\n\n/** Gateway error codes surfaced by the builder jobs client. */\nexport type JobGatewayErrorCode =\n  | \"INVALID_WAIT\"\n  | \"INVALID_BODY\"\n  | \"BUILDER_UNKNOWN\"\n  | \"GRANT_INVALID\"\n  | \"OWNER_NOT_READY\"\n  | \"BODY_TOO_LARGE\"\n  | \"JOB_ID_MISMATCH\"\n  | \"JOB_ID_TAKEN\"\n  | \"JOB_NOT_FOUND\"\n  | (string & {});\n\n/**\n * Base class for failures raised by the builder jobs client.\n *\n * @remarks\n * `status` is the Gateway HTTP status when a response arrived, `errorCode`\n * is the Gateway protocol code when one was supplied, and `details` retains\n * structured response or client context for diagnostics.\n *\n * @param message - Human-readable failure description.\n * @param code - Stable SDK error code.\n * @param status - Gateway HTTP status, when available.\n * @param errorCode - Gateway protocol error code, when available.\n * @param details - Additional structured context.\n * @category Error Handling\n */\nexport class JobsClientError extends VanaError {\n  constructor(\n    message: string,\n    code: string,\n    public readonly status?: number,\n    public readonly errorCode: JobGatewayErrorCode | null = null,\n    public readonly details?: Record<string, unknown>,\n  ) {\n    super(message, code);\n  }\n}\n\n/**\n * Thrown when the Gateway does not recognize the signing builder (403\n * `BUILDER_UNKNOWN`).\n *\n * @param message - Gateway failure description.\n * @param details - Additional structured Gateway context.\n * @category Error Handling\n */\nexport class BuilderUnknownError extends JobsClientError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"JOB_BUILDER_UNKNOWN\", 403, \"BUILDER_UNKNOWN\", details);\n  }\n}\n\n/**\n * Thrown when the supplied grant does not authorize the requested raw read\n * (403 `GRANT_INVALID`).\n *\n * @param message - Gateway failure description.\n * @param details - Additional structured Gateway context.\n * @category Error Handling\n */\nexport class GrantInvalidError extends JobsClientError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"JOB_GRANT_INVALID\", 403, \"GRANT_INVALID\", details);\n  }\n}\n\n/**\n * Thrown when the owner's enclave identity is not ready to accept encrypted\n * jobs, either locally after the identity lookup or as a 403 Gateway answer.\n *\n * @param message - Identity readiness failure description.\n * @param details - Additional identity or Gateway context.\n * @category Error Handling\n */\nexport class OwnerNotReadyError extends JobsClientError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"JOB_OWNER_NOT_READY\", 403, \"OWNER_NOT_READY\", details);\n  }\n}\n\n/**\n * Thrown when a freshly generated job id already exists at the Gateway (409\n * `JOB_ID_TAKEN`).\n *\n * @param message - Gateway conflict description.\n * @param details - Additional structured Gateway context.\n * @category Error Handling\n */\nexport class JobIdTakenError extends JobsClientError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"JOB_ID_TAKEN\", 409, \"JOB_ID_TAKEN\", details);\n  }\n}\n\n/**\n * Thrown when a job is unknown or belongs to another builder (404\n * `JOB_NOT_FOUND`).\n *\n * @param message - Gateway not-found description.\n * @param details - Additional structured Gateway context.\n * @category Error Handling\n */\nexport class JobNotFoundError extends JobsClientError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"JOB_NOT_FOUND\", 404, \"JOB_NOT_FOUND\", details);\n  }\n}\n\n/**\n * Thrown when a job submission exceeds the Gateway request limit (413).\n *\n * @param message - Gateway size-limit description.\n * @param errorCode - Gateway protocol error code.\n * @param details - Additional structured Gateway context.\n * @category Error Handling\n */\nexport class JobRequestTooLargeError extends JobsClientError {\n  constructor(\n    message: string,\n    errorCode: JobGatewayErrorCode | null = \"BODY_TOO_LARGE\",\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"JOB_REQUEST_TOO_LARGE\", 413, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a job does not reach a terminal state within the caller's wait\n * budget or before the job's own deadline.\n *\n * @param message - Timeout description.\n * @param details - Last known job state and timing context.\n * @category Error Handling\n */\nexport class JobTimeoutError extends JobsClientError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"JOB_TIMEOUT\", undefined, null, details);\n  }\n}\n\n/**\n * Thrown when fetched job-result bytes do not match their object handle.\n *\n * @param message - Integrity failure description.\n * @param details - Expected and actual result metadata.\n * @category Error Handling\n */\nexport class JobResultIntegrityError extends JobsClientError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"JOB_RESULT_INTEGRITY\", undefined, null, details);\n  }\n}\n\n/**\n * Thrown when the Gateway rejects a jobs request, returns an undocumented\n * response, or client input cannot form a valid jobs request.\n *\n * @param message - Rejection description.\n * @param status - Gateway HTTP status, when available.\n * @param errorCode - Gateway protocol error code, when available.\n * @param details - Additional structured context.\n * @category Error Handling\n */\nexport class JobRejectedError extends JobsClientError {\n  constructor(\n    message: string,\n    status?: number,\n    errorCode: JobGatewayErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"JOB_REJECTED\", status, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a jobs client HTTP request fails before a response arrives.\n *\n * @param message - Human-readable transport failure.\n * @param cause - Original value thrown by `fetch`.\n * @category Error Handling\n */\nexport class JobTransportError extends JobsClientError {\n  constructor(\n    message: string,\n    cause?: unknown,\n    /**\n     * The job id and idempotency key of the submission that failed mid-flight.\n     * A charged read reserves escrow the moment the Gateway accepts the job, so\n     * a lost response is ambiguous: resubmit these ids rather than fresh ones.\n     */\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"JOB_TRANSPORT_ERROR\", undefined, null, details);\n    this.cause = cause;\n  }\n}\n\n/**\n * Thrown when a lineage read (Personal Server or gateway) fails: a non-2xx\n * answer, a body that is not a lineage graph, a malformed data point id, or\n * a transport failure.\n * @category Error Handling\n */\nexport class LineageReadError extends VanaError {\n  constructor(\n    message: string,\n    public readonly status?: number,\n    public readonly errorCode: PersonalServerWriteErrorCode | null = null,\n    public readonly details?: Record<string, unknown>,\n  ) {\n    super(message, \"LINEAGE_READ_ERROR\");\n  }\n}\n\n/**\n * Thrown when the Personal Server rejected a derivative question with a\n * status the more specific errors do not claim (405, 413\n * `CONTENT_TOO_LARGE`, 5xx), or answered a body the SDK cannot read.\n *\n * @remarks\n * The question routes share the Write API's credential, so their\n * authentication failures are the write errors: {@link WriteUnauthorizedError}\n * (401), {@link WriteForbiddenError} (403 on the derived scope),\n * {@link WriteConflictError} (409 that is not a cycle),\n * {@link WriteRequestError} (refused before sending),\n * {@link WriteTransportError} (`fetch` threw).\n * @category Error Handling\n */\nexport class DerivativeQuestionRejectedError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    status: number,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"DERIVATIVE_QUESTION_REJECTED\", status, errorCode, details);\n  }\n}\n\n/**\n * Thrown when the Personal Server refused a question registration as\n * invalid: 400 `DERIVATIVE_QUESTION_INVALID` (body shape, the scope grammar,\n * 1 to 16 distinct source scopes, an 8000 character question, a model id) or\n * 400 `LINEAGE_SCOPE_UNDER_SOURCE_PREFIX` (the derived scope shares its first\n * dot-segment with a source scope). `details.field` names the offending\n * field when the server sent one.\n * @category Error Handling\n */\nexport class DerivativeQuestionInvalidError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    status = 400,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"DERIVATIVE_QUESTION_INVALID\", status, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a question id is unknown (404\n * `DERIVATIVE_QUESTION_NOT_FOUND`).\n *\n * @remarks\n * A builder only ever sees the questions it registered itself, so a question\n * another builder (or the owner) registered on the same derived scope is a\n * 404 too, not a 403. An id no Personal Server ever held is a 404 as well\n * for any authenticated caller (`personal-server-ts` d91124d and later),\n * where it used to fall through to the owner gate's 401.\n * @category Error Handling\n */\nexport class DerivativeQuestionNotFoundError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"DERIVATIVE_QUESTION_NOT_FOUND\", 404, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a builder listed questions without naming a derived scope (400\n * `DERIVATIVE_DERIVED_SCOPE_REQUIRED`).\n *\n * @remarks\n * The unfiltered list is the owner's; a builder may only see its own\n * questions on a scope it may write, so `?derivedScope=` is what the call is\n * authorized against. The SDK refuses an empty `derivedScope` before\n * signing anything ({@link WriteRequestError}), so this is what a hand-built\n * request gets. It is a 400, not the 401 older servers answered, so a client\n * with a re-handshake-on-401 policy does not go through a pointless\n * handshake and then report an authentication problem it does not have.\n * @category Error Handling\n */\nexport class DerivativeDerivedScopeRequiredError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(\n      message,\n      \"DERIVATIVE_DERIVED_SCOPE_REQUIRED\",\n      400,\n      errorCode,\n      details,\n    );\n  }\n}\n\n/**\n * Thrown when a source scope of the question is not read-granted to the\n * builder (403 `DERIVATIVE_SOURCE_NOT_GRANTED`).\n *\n * @remarks\n * The answer exposes the sources to whoever may read the derived scope, so\n * the grant must carry a **bare** read entry for every source scope;\n * `write:` entries confer nothing. `details.scopes` lists the uncovered\n * ones.\n * @category Error Handling\n */\nexport class DerivativeSourceNotGrantedError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"DERIVATIVE_SOURCE_NOT_GRANTED\", 403, errorCode, details);\n  }\n}\n\n/**\n * Thrown when the registration would make the derived scope a transitive\n * source of itself through other registrations (409 `DERIVATIVE_CYCLE`), so\n * recompute would never settle. `details.path` is the offending chain.\n * @category Error Handling\n */\nexport class DerivativeCycleError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"DERIVATIVE_CYCLE\", 409, errorCode, details);\n  }\n}\n\n/**\n * Thrown when the Personal Server has no compute layer wired (503\n * `DERIVATIVE_COMPUTE_UNAVAILABLE`): it cannot answer questions at all.\n * @category Error Handling\n */\nexport class DerivativeComputeUnavailableError extends PersonalServerWriteError {\n  constructor(\n    message: string,\n    errorCode: PersonalServerWriteErrorCode | null = null,\n    details?: Record<string, unknown>,\n  ) {\n    super(message, \"DERIVATIVE_COMPUTE_UNAVAILABLE\", 503, errorCode, details);\n  }\n}\n\n/**\n * Thrown when a question did not reach `ready` or `failed` within the\n * caller's budget. The question keeps computing on the server; poll it\n * again. `details.status` is the last status seen.\n * @category Error Handling\n */\nexport class DerivativeQuestionTimeoutError extends PersonalServerWriteError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"DERIVATIVE_QUESTION_TIMEOUT\", undefined, null, details);\n  }\n}\n\n/**\n * Thrown when a question settled as `failed`.\n *\n * @remarks\n * `details.error` is the Personal Server's short failure reason (a status\n * code, a scope name, an error class); the prompt and the data are never\n * part of it. A failed question is recomputed on the next source change or\n * an explicit recompute.\n * @category Error Handling\n */\nexport class DerivativeQuestionFailedError extends PersonalServerWriteError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super(message, \"DERIVATIVE_QUESTION_FAILED\", undefined, null, details);\n  }\n}\n\n/**\n * Thrown when a DataRegistryV2 data point has been deleted (tombstoned).\n *\n * @remarks\n * Raised by gateway reads that hit HTTP 410, by Personal Server reads of a\n * deleted scope, and by any SDK read helper that would otherwise hand a\n * tombstone back to the caller as if it were data. Pass\n * `includeDeleted: true` to the gateway read helpers to opt in to seeing the\n * tombstone row (with its `deletedAt`) instead of this error.\n * @category Error Handling\n */\nexport class DataPointDeletedError extends VanaError {\n  constructor(\n    message: string,\n    public readonly details: {\n      dataPointId?: string;\n      scope?: string;\n      ownerAddress?: string;\n      deletedAt?: string | null;\n    } = {},\n  ) {\n    super(message, \"DATA_POINT_DELETED\");\n  }\n}\n\n/**\n * Thrown when a data point operation targets a (owner, scope) the gateway\n * has no record of.\n * @category Error Handling\n */\nexport class DataPointNotFoundError extends VanaError {\n  constructor(\n    message: string,\n    public readonly details: {\n      dataPointId?: string;\n      scope?: string;\n      ownerAddress?: string;\n    } = {},\n  ) {\n    super(message, \"DATA_POINT_NOT_FOUND\");\n  }\n}\n\n/**\n * Thrown when the gateway rejects a data point write with HTTP 409 because\n * the signed `expectedVersion` is stale.\n *\n * @remarks\n * `currentExpectedVersion` is the version the gateway currently holds (when\n * the gateway surfaced it); re-sign against `currentExpectedVersion + 1`.\n * @category Error Handling\n */\nexport class DataPointVersionConflictError extends VanaError {\n  constructor(\n    message: string,\n    public readonly details: {\n      dataPointId?: string;\n      scope?: string;\n      ownerAddress?: string;\n      expectedVersion?: string;\n      currentExpectedVersion?: string;\n    } = {},\n  ) {\n    super(message, \"DATA_POINT_VERSION_CONFLICT\");\n  }\n}\n"],"mappings":"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","names":[]}