{"version":3,"sources":["../src/types/igs.ts","../src/types/input-intent-classification.ts","../src/schemas/igs-intent-schema.json","../src/validation/igs-validator.ts","../src/utils/env.ts","../src/constants.ts","../src/schemas/core-schema.json","../src/schemas/igs-solution-schema.json","../src/schemas/dataset-schema.json","../src/builders/intent-builder.ts","../src/builders/solution-builder.ts"],"names":["z","TimeInForce","OptimizationGoal","AssetType","Ajv","addFormats","validateIGSIntent","Transaction"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Intenus General Standard (IGS) v1.0.0\n * Zod schemas for IGS Intent and Solution with full JSON Schema draft-07 compliance\n *\n * IGS Intent: Full intent specification stored in Walrus\n * IGS Solution: Minimal solver submission (solver_address + tx_bytes)\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// IGS Object Schema (On-chain Sui object that references Walrus blob)\n// ============================================================================\n\nconst IGSAccessConditionSchema = z.object({\n  requires_solver_registration: z.boolean(),\n  min_solver_stake: z.string().regex(/^[0-9]+$/),\n  requires_tee_attestation: z.boolean(),\n  min_solver_reputation_score: z.number().min(0).max(100),\n});\n\nconst IGSSolverAccessWindowSchema = z.object({\n  start_ms: z.number().min(0),\n  end_ms: z.number().min(0),\n});\n\nconst IGSPolicySchema = z.object({\n  solver_access_window: IGSSolverAccessWindowSchema,\n  auto_revoke_time: z.number().min(0),\n  access_condition: IGSAccessConditionSchema,\n});\n\nconst IGSObjectSchema = z.object({\n  user_address: z.string().regex(/^0x[a-fA-F0-9]{1,64}$/),\n  created_ts: z.number().min(0),\n  policy: IGSPolicySchema,\n});\n\n// ============================================================================\n// IGS Amount Types (exact, range, all)\n// ============================================================================\n\nconst IGSAmountExactSchema = z.object({\n  type: z.literal('exact'),\n  value: z.string().regex(/^[0-9]+$/),\n});\n\nconst IGSAmountRangeSchema = z.object({\n  type: z.literal('range'),\n  min: z.string().regex(/^[0-9]+$/),\n  max: z.string().regex(/^[0-9]+$/),\n});\n\nconst IGSAmountAllSchema = z.object({\n  type: z.literal('all'),\n});\n\nconst IGSAmountSchema = z.union([\n  IGSAmountExactSchema,\n  IGSAmountRangeSchema,\n  IGSAmountAllSchema,\n]);\n\n// ============================================================================\n// IGS Asset Flow (inputs/outputs)\n// ============================================================================\n\nconst IGSAssetInfoSchema = z.object({\n  symbol: z.string().min(1).max(20).regex(/^[A-Z0-9]+$/),\n  decimals: z.number().min(0).max(18),\n  name: z.string().max(100).optional(),\n});\n\nconst IGSAssetFlowSchema = z.object({\n  asset_id: z.string().regex(/^(0x[a-fA-F0-9]{1,64}::[a-zA-Z0-9_]+::[a-zA-Z0-9_]+|native)$/),\n  asset_info: IGSAssetInfoSchema.optional(),\n  amount: IGSAmountSchema,\n});\n\n// ============================================================================\n// IGS Expected Outcome\n// ============================================================================\n\nconst IGSExpectedOutputSchema = z.object({\n  asset_id: z.string(),\n  amount: z.string().regex(/^[0-9]+$/),\n});\n\nconst IGSExpectedCostsSchema = z.object({\n  gas_estimate: z.string().regex(/^[0-9]+(\\.[0-9]+)?$/).optional(),\n  protocol_fees: z.string().regex(/^[0-9]+(\\.[0-9]+)?$/).optional(),\n  slippage_estimate: z.string().regex(/^[0-9]+(\\.[0-9]+)?$/).optional(),\n});\n\nconst IGSMarketPriceSchema = z.object({\n  price: z.string().regex(/^[0-9]+(\\.[0-9]+)?$/),\n  price_asset: z.string(),\n});\n\nconst IGSExpectedOutcomeSchema = z.object({\n  expected_outputs: z.array(IGSExpectedOutputSchema).min(1),\n  expected_costs: IGSExpectedCostsSchema.optional(),\n  market_price: IGSMarketPriceSchema.optional(),\n});\n\n// ============================================================================\n// IGS Operation\n// ============================================================================\n\nconst IGSOperationSchema = z.object({\n  mode: z.enum(['exact_input', 'exact_output', 'limit_order']),\n  inputs: z.array(IGSAssetFlowSchema).min(1).max(10),\n  outputs: z.array(IGSAssetFlowSchema).min(1).max(10),\n  expected_outcome: IGSExpectedOutcomeSchema.optional(),\n});\n\n// ============================================================================\n// IGS Constraints\n// ============================================================================\n\nconst IGSMaxInputSchema = z.object({\n  asset_id: z.string(),\n  amount: z.string().regex(/^[0-9]+$/),\n});\n\nconst IGSMinOutputSchema = z.object({\n  asset_id: z.string(),\n  amount: z.string().regex(/^[0-9]+$/),\n});\n\nconst IGSMaxGasCostSchema = z.object({\n  asset_id: z.string(),\n  amount: z.string().regex(/^[0-9]+$/),\n});\n\nconst IGSRoutingSchema = z.object({\n  max_hops: z.number().min(1).max(10).optional(),\n  blacklist_protocols: z.array(z.string()).optional(),\n  whitelist_protocols: z.array(z.string()).optional(),\n});\n\nconst IGSLimitPriceSchema = z.object({\n  price: z.string().regex(/^[0-9]+(\\.[0-9]+)?$/),\n  comparison: z.enum(['gte', 'lte']),\n  price_asset: z.string(),\n});\n\nconst IGSConstraintsSchema = z.object({\n  max_slippage_bps: z.number().min(0).max(10000).optional(),\n  deadline_ms: z.number().min(0).optional(),\n  max_inputs: z.array(IGSMaxInputSchema).optional(),\n  min_outputs: z.array(IGSMinOutputSchema).optional(),\n  max_gas_cost: IGSMaxGasCostSchema.optional(),\n  routing: IGSRoutingSchema.optional(),\n  limit_price: IGSLimitPriceSchema.optional(),\n});\n\n// ============================================================================\n// IGS Preferences\n// ============================================================================\n\nconst IGSRankingWeightsSchema = z.object({\n  surplus_weight: z.number().min(0).max(100).default(60),\n  gas_cost_weight: z.number().min(0).max(100).default(20),\n  execution_speed_weight: z.number().min(0).max(100).default(10),\n  reputation_weight: z.number().min(0).max(100).default(10),\n});\n\nconst IGSExecutionPreferencesSchema = z.object({\n  mode: z.enum(['best_solution', 'top_n_with_best_incentive']).default('best_solution').optional(),\n  show_top_n: z.number().min(1).max(10).default(3).optional(),\n});\n\nconst IGSPrivacyPreferencesSchema = z.object({\n  encrypt_intent: z.boolean().default(false).optional(),\n  anonymous_execution: z.boolean().default(false).optional(),\n});\n\nconst IGSPreferencesSchema = z.object({\n  optimization_goal: z.enum(['maximize_output', 'minimize_gas', 'fastest_execution', 'balanced']).default('balanced').optional(),\n  ranking_weights: IGSRankingWeightsSchema.optional(),\n  execution: IGSExecutionPreferencesSchema.optional(),\n  privacy: IGSPrivacyPreferencesSchema.optional(),\n});\n\n// ============================================================================\n// IGS Metadata\n// ============================================================================\n\nconst IGSOriginalInputSchema = z.object({\n  text: z.string().max(1000),\n  language: z.string().regex(/^[a-z]{2}$/),\n  confidence: z.number().min(0).max(1),\n});\n\nconst IGSClientSchema = z.object({\n  name: z.string(),\n  version: z.string(),\n  platform: z.string(),\n});\n\nconst IGSMetadataSchema = z.object({\n  original_input: IGSOriginalInputSchema.optional(),\n  client: IGSClientSchema.optional(),\n  warnings: z.array(z.string()).optional(),\n  clarifications: z.array(z.string()).optional(),\n  tags: z.array(z.string()).optional(),\n});\n\n// ============================================================================\n// IGS Intent Type\n// ============================================================================\n\nexport const IGSIntentTypeSchema = z.enum([\n  'swap.exact_input',\n  'swap.exact_output',\n  'limit.sell',\n  'limit.buy',\n]);\n\n// ============================================================================\n// FULL IGS INTENT SCHEMA\n// ============================================================================\n\nexport const IGSIntentSchema = z.object({\n  // Core required fields\n  igs_version: z.literal('1.0.0'),\n  object: IGSObjectSchema,\n  user_address: z.string().regex(/^0x[a-fA-F0-9]{1,64}$/),\n  intent_type: IGSIntentTypeSchema,\n  operation: IGSOperationSchema,\n\n  // Optional fields\n  description: z.string().min(1).max(500).optional(),\n  constraints: IGSConstraintsSchema.optional(),\n  preferences: IGSPreferencesSchema.optional(),\n  metadata: IGSMetadataSchema.optional(),\n});\n\n// ============================================================================\n// IGS SOLUTION SCHEMA (Minimal solver submission)\n// ============================================================================\n\nexport const IGSSolutionSchema = z.object({\n  solver_address: z.string().regex(/^0x[a-fA-F0-9]{1,64}$/),\n  tx_bytes: z.string().min(1),\n});\n\n// ============================================================================\n// INFERRED TYPES\n// ============================================================================\n\nexport type IGSIntent = z.infer<typeof IGSIntentSchema>;\nexport type IGSSolution = z.infer<typeof IGSSolutionSchema>;\nexport type IGSIntentType = z.infer<typeof IGSIntentTypeSchema>;\n\n// Component types (exported for use in builders and other SDKs)\nexport type IGSObject = z.infer<typeof IGSObjectSchema>;\nexport type IGSOperation = z.infer<typeof IGSOperationSchema>;\nexport type IGSConstraints = z.infer<typeof IGSConstraintsSchema>;\nexport type IGSPreferences = z.infer<typeof IGSPreferencesSchema>;\nexport type IGSMetadata = z.infer<typeof IGSMetadataSchema>;\nexport type IGSAssetFlow = z.infer<typeof IGSAssetFlowSchema>;\nexport type IGSAmount = z.infer<typeof IGSAmountSchema>;\nexport type IGSExpectedOutcome = z.infer<typeof IGSExpectedOutcomeSchema>;\nexport type IGSRankingWeights = z.infer<typeof IGSRankingWeightsSchema>;\nexport type IGSExecutionPreferences = z.infer<typeof IGSExecutionPreferencesSchema>;\nexport type IGSPrivacyPreferences = z.infer<typeof IGSPrivacyPreferencesSchema>;\nexport type IGSRouting = z.infer<typeof IGSRoutingSchema>;\nexport type IGSLimitPrice = z.infer<typeof IGSLimitPriceSchema>;\nexport type IGSPolicy = z.infer<typeof IGSPolicySchema>;\n\n// ============================================================================\n// VALIDATION HELPERS\n// ============================================================================\n\n/**\n * Validate an IGS intent against the schema\n */\nexport function validateIGSIntent(data: unknown): { success: true; data: IGSIntent } | { success: false; errors: z.ZodError } {\n  const result = IGSIntentSchema.safeParse(data);\n  if (result.success) {\n    return { success: true, data: result.data };\n  }\n  return { success: false, errors: result.error };\n}\n\n/**\n * Validate an IGS solution against the schema\n */\nexport function validateIGSSolution(data: unknown): { success: true; data: IGSSolution } | { success: false; errors: z.ZodError } {\n  const result = IGSSolutionSchema.safeParse(data);\n  if (result.success) {\n    return { success: true, data: result.data };\n  }\n  return { success: false, errors: result.error };\n}\n\n// ============================================================================\n// BACKWARD COMPATIBILITY TYPES\n// ============================================================================\n\n/**\n * Validation error structure (for AJV validator compatibility)\n */\nexport interface IGSValidationError {\n  code: string;\n  field: string;\n  message: string;\n  severity: 'error' | 'warning';\n}\n\n/**\n * Validation result structure (for AJV validator compatibility)\n */\nexport interface IGSValidationResult {\n  valid: boolean;\n  errors: IGSValidationError[];\n  warnings: string[];\n  compliance_score?: number;\n}\n\n// Placeholder types for backward compatibility (will be removed after full migration)\nexport type IGSRankedSolution = any;\nexport type IGSSolutionSubmission = any;\n","/**\n * Input Intent Classification Schema\n * Types and Zod schemas for intent classification features\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// ENUMS\n// ============================================================================\n\nexport enum TimeInForce {\n  immediate = \"immediate\",\n  good_til_cancel = \"good_til_cancel\",\n  fill_or_kill = \"fill_or_kill\"\n}\n\nexport enum OptimizationGoal {\n  maximize_output = \"maximize_output\",\n  minimize_gas = \"minimize_gas\",\n  fastest_execution = \"fastest_execution\",\n  balanced = \"balanced\"\n}\n\nexport enum AssetType {\n  native = \"native\",\n  stable = \"stable\",\n  volatile = \"volatile\"\n}\n\nexport enum BenchmarkSource {\n  coingecko = \"coingecko\",\n  dexscreener = \"dexscreener\",\n  internal = \"internal\"\n}\n\n// ============================================================================\n// ZOD SCHEMAS FOR ENUMS\n// ============================================================================\n\nexport const TimeInForceSchema = z.enum([\n  \"immediate\",\n  \"good_til_cancel\",\n  \"fill_or_kill\"\n]);\n\nexport const OptimizationGoalSchema = z.enum([\n  \"maximize_output\",\n  \"minimize_gas\",\n  \"fastest_execution\",\n  \"balanced\"\n]);\n\nexport const AssetTypeSchema = z.enum([\n  \"native\",\n  \"stable\",\n  \"volatile\"\n]);\n\nexport const BenchmarkSourceSchema = z.enum([\n  \"coingecko\",\n  \"dexscreener\",\n  \"internal\"\n]);\n\n// ============================================================================\n// INPUT INTENT CLASSIFICATION SCHEMA\n// ============================================================================\n\nexport const InputIntentClassificationSchema = z.object({\n  // Numerical features\n  solver_window_ms: z.number().int().min(0),\n  user_decision_timeout_ms: z.number().int().min(0),\n  time_to_deadline_ms: z.number().int().min(0),\n  max_slippage_bps: z.number().int().min(0).max(10000),\n  max_gas_cost_usd: z.number().min(0),\n  max_hops: z.number().int().min(1).max(10),\n  surplus_weight: z.number().int().min(0).max(100),\n  gas_cost_weight: z.number().int().min(0).max(100),\n  execution_speed_weight: z.number().int().min(0).max(100),\n  reputation_weight: z.number().int().min(0).max(100),\n  input_count: z.number().int().min(1),\n  output_count: z.number().int().min(1),\n  input_value_usd: z.number().min(0),\n  expected_output_value_usd: z.number().min(0),\n  benchmark_confidence: z.number().min(0).max(1),\n  expected_gas_usd: z.number().min(0),\n  expected_slippage_bps: z.number().int().min(0).max(10000),\n  nlp_confidence: z.number().min(0).max(1),\n  tag_count: z.number().int().min(0),\n\n  // Categorical features (enums)\n  time_in_force: TimeInForceSchema,\n  optimization_goal: OptimizationGoalSchema,\n  benchmark_source: BenchmarkSourceSchema,\n  client_platform: z.string().min(1).max(100), // web, mobile, api, bot\n\n  // Array features\n  input_asset_types: z.array(AssetTypeSchema).min(1),\n  output_asset_types: z.array(AssetTypeSchema).min(1),\n\n  // Boolean features\n  has_whitelist: z.boolean(),\n  has_blacklist: z.boolean(),\n  has_limit_price: z.boolean(),\n  require_simulation: z.boolean(),\n  has_nlp_input: z.boolean(),\n});\n\n// ============================================================================\n// TYPESCRIPT TYPES (INFERRED FROM ZOD)\n// ============================================================================\n\nexport type InputIntentClassification = z.infer<typeof InputIntentClassificationSchema>;\nexport type TimeInForceType = z.infer<typeof TimeInForceSchema>;\nexport type OptimizationGoalType = z.infer<typeof OptimizationGoalSchema>;\nexport type AssetTypeType = z.infer<typeof AssetTypeSchema>;\nexport type BenchmarkSourceType = z.infer<typeof BenchmarkSourceSchema>;\n\n// ============================================================================\n// VALIDATION HELPERS\n// ============================================================================\n\n/**\n * Validate an InputIntentClassification against the schema\n */\nexport function validateInputIntentClassification(\n  data: unknown\n): { success: true; data: InputIntentClassification } | { success: false; errors: z.ZodError } {\n  const result = InputIntentClassificationSchema.safeParse(data);\n  if (result.success) {\n    return { success: true, data: result.data };\n  }\n  return { success: false, errors: result.error };\n}\n\n/**\n * Check if data is a valid InputIntentClassification\n */\nexport function isValidInputIntentClassification(data: unknown): data is InputIntentClassification {\n  return InputIntentClassificationSchema.safeParse(data).success;\n}\n\n/**\n * Assert that data is a valid InputIntentClassification (throws on error)\n */\nexport function assertValidInputIntentClassification(data: unknown): asserts data is InputIntentClassification {\n  const result = InputIntentClassificationSchema.safeParse(data);\n  if (!result.success) {\n    throw new Error(`Invalid InputIntentClassification: ${result.error.message}`);\n  }\n}\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://intenus.org/schemas/igs/intent/v1.0.0\",\n  \"title\": \"Intenus General Standard (IGS) Intent v1.0\",\n  \"description\": \"Universal, protocol-agnostic standard for DeFi intents with measurable surplus and AI ranking.\",\n  \"type\": \"object\",\n  \"required\": [\n    \"igs_version\",\n    \"object\",\n    \"user_address\",\n    \"intent_type\",\n    \"operation\"\n  ],\n  \"properties\": {\n    \"igs_version\": {\n      \"type\": \"string\",\n      \"const\": \"1.0.0\",\n      \"description\": \"IGS version\"\n    },\n    \"object\": {\n      \"$ref\": \"#/$defs/IGSObject\"\n    },\n    \"user_address\": {\n      \"type\": \"string\",\n      \"pattern\": \"^0x[a-fA-F0-9]{1,64}$\",\n      \"description\": \"User address\"\n    },\n    \"intent_type\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"swap.exact_input\",\n        \"swap.exact_output\",\n        \"limit.sell\",\n        \"limit.buy\"\n      ],\n      \"description\": \"Intent type\"\n    },\n    \"description\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 500,\n      \"description\": \"Human-readable description\"\n    },\n    \"operation\": {\n      \"$ref\": \"#/$defs/IGSOperation\"\n    },\n    \"constraints\": {\n      \"$ref\": \"#/$defs/IGSConstraints\"\n    },\n    \"preferences\": {\n      \"$ref\": \"#/$defs/IGSPreferences\"\n    },\n    \"metadata\": {\n      \"$ref\": \"#/$defs/IGSMetadata\"\n    }\n  },\n  \"additionalProperties\": true,\n\n  \"$defs\": {\n    \"IGSObject\": {\n      \"type\": \"object\",\n      \"description\": \"On-chain Sui object that references the full IGS intent stored in Walrus\",\n      \"required\": [\"user_address\", \"created_ts\", \"policy\"],\n      \"properties\": {\n        \"user_address\": {\n          \"type\": \"string\",\n          \"pattern\": \"^0x[a-fA-F0-9]{1,64}$\",\n          \"description\": \"Sui object owner address\"\n        },\n        \"created_ts\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"description\": \"Timestamp (ms) when the object was created\"\n        },\n        \"policy\": {\n          \"type\": \"object\",\n          \"required\": [\n            \"solver_access_window\",\n            \"auto_revoke_time\",\n            \"access_condition\"\n          ],\n          \"properties\": {\n            \"solver_access_window\": {\n              \"type\": \"object\",\n              \"required\": [\"start_ms\", \"end_ms\"],\n              \"properties\": {\n                \"start_ms\": {\n                  \"type\": \"number\",\n                  \"minimum\": 0\n                },\n                \"end_ms\": {\n                  \"type\": \"number\",\n                  \"minimum\": 0\n                }\n              },\n              \"additionalProperties\": false\n            },\n            \"auto_revoke_time\": {\n              \"type\": \"number\",\n              \"minimum\": 0\n            },\n            \"access_condition\": {\n              \"type\": \"object\",\n              \"required\": [\n                \"requires_solver_registration\",\n                \"min_solver_stake\",\n                \"requires_tee_attestation\",\n                \"min_solver_reputation_score\"\n              ],\n              \"properties\": {\n                \"requires_solver_registration\": {\n                  \"type\": \"boolean\"\n                },\n                \"min_solver_stake\": {\n                  \"type\": \"string\",\n                  \"pattern\": \"^[0-9]+$\"\n                },\n                \"requires_tee_attestation\": {\n                  \"type\": \"boolean\"\n                },\n                \"min_solver_reputation_score\": {\n                  \"type\": \"number\",\n                  \"minimum\": 0,\n                  \"maximum\": 100\n                }\n              },\n              \"additionalProperties\": false\n            }\n          },\n          \"additionalProperties\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"IGSOperation\": {\n      \"type\": \"object\",\n      \"required\": [\"mode\", \"inputs\", \"outputs\"],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"string\",\n          \"enum\": [\"exact_input\", \"exact_output\", \"limit_order\"],\n          \"description\": \"Operation mode\"\n        },\n        \"inputs\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 10,\n          \"items\": {\n            \"$ref\": \"#/$defs/IGSAssetFlow\"\n          },\n          \"description\": \"Input assets\"\n        },\n        \"outputs\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"maxItems\": 10,\n          \"items\": {\n            \"$ref\": \"#/$defs/IGSAssetFlow\"\n          },\n          \"description\": \"Output assets\"\n        },\n        \"expected_outcome\": {\n          \"$ref\": \"#/$defs/IGSExpectedOutcome\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n\n    \"IGSAssetFlow\": {\n      \"type\": \"object\",\n      \"required\": [\"asset_id\", \"amount\"],\n      \"properties\": {\n        \"asset_id\": {\n          \"type\": \"string\",\n          \"pattern\": \"^(0x[a-fA-F0-9]{1,64}::[a-zA-Z0-9_]+::[a-zA-Z0-9_]+|native)$\",\n          \"description\": \"Asset identifier\"\n        },\n        \"asset_info\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"symbol\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 20,\n              \"pattern\": \"^[A-Z0-9]+$\"\n            },\n            \"decimals\": {\n              \"type\": \"number\",\n              \"minimum\": 0,\n              \"maximum\": 18\n            },\n            \"name\": {\n              \"type\": \"string\",\n              \"maxLength\": 100\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"amount\": {\n          \"$ref\": \"#/$defs/IGSAmount\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n\n    \"IGSAmount\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\"type\", \"value\"],\n          \"properties\": {\n            \"type\": { \"const\": \"exact\" },\n            \"value\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+$\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"type\", \"min\", \"max\"],\n          \"properties\": {\n            \"type\": { \"const\": \"range\" },\n            \"min\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+$\"\n            },\n            \"max\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+$\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\"type\"],\n          \"properties\": {\n            \"type\": { \"const\": \"all\" }\n          },\n          \"additionalProperties\": false\n        }\n      ]\n    },\n\n    \"IGSExpectedOutcome\": {\n      \"type\": \"object\",\n      \"required\": [\"expected_outputs\"],\n      \"properties\": {\n        \"expected_outputs\": {\n          \"type\": \"array\",\n          \"minItems\": 1,\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\"asset_id\", \"amount\"],\n            \"properties\": {\n              \"asset_id\": { \"type\": \"string\" },\n              \"amount\": {\n                \"type\": \"string\",\n                \"pattern\": \"^[0-9]+$\"\n              }\n            },\n            \"additionalProperties\": false\n          }\n        },\n        \"expected_costs\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"gas_estimate\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+(\\\\.[0-9]+)?$\"\n            },\n            \"protocol_fees\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+(\\\\.[0-9]+)?$\"\n            },\n            \"slippage_estimate\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+(\\\\.[0-9]+)?$\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"market_price\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"price\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+(\\\\.[0-9]+)?$\"\n            },\n            \"price_asset\": { \"type\": \"string\" }\n          },\n          \"additionalProperties\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n\n    \"IGSConstraints\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"max_slippage_bps\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 10000,\n          \"description\": \"Maximum slippage in basis points (100 bps = 1%)\"\n        },\n        \"deadline_ms\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"description\": \"Expiration timestamp in milliseconds\"\n        },\n        \"max_inputs\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\"asset_id\", \"amount\"],\n            \"properties\": {\n              \"asset_id\": { \"type\": \"string\" },\n              \"amount\": {\n                \"type\": \"string\",\n                \"pattern\": \"^[0-9]+$\"\n              }\n            },\n            \"additionalProperties\": false\n          },\n          \"description\": \"Maximum input amounts (spending ceiling)\"\n        },\n        \"min_outputs\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\"asset_id\", \"amount\"],\n            \"properties\": {\n              \"asset_id\": { \"type\": \"string\" },\n              \"amount\": {\n                \"type\": \"string\",\n                \"pattern\": \"^[0-9]+$\"\n              }\n            },\n            \"additionalProperties\": false\n          },\n          \"description\": \"Minimum output amounts (slippage protection)\"\n        },\n        \"max_gas_cost\": {\n          \"type\": \"object\",\n          \"required\": [\"asset_id\", \"amount\"],\n          \"properties\": {\n            \"asset_id\": { \"type\": \"string\" },\n            \"amount\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+$\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"routing\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"max_hops\": {\n              \"type\": \"number\",\n              \"minimum\": 1,\n              \"maximum\": 10\n            },\n            \"blacklist_protocols\": {\n              \"type\": \"array\",\n              \"items\": { \"type\": \"string\" }\n            },\n            \"whitelist_protocols\": {\n              \"type\": \"array\",\n              \"items\": { \"type\": \"string\" }\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"limit_price\": {\n          \"type\": \"object\",\n          \"required\": [\"price\", \"comparison\", \"price_asset\"],\n          \"properties\": {\n            \"price\": {\n              \"type\": \"string\",\n              \"pattern\": \"^[0-9]+(\\\\.[0-9]+)?$\"\n            },\n            \"comparison\": {\n              \"type\": \"string\",\n              \"enum\": [\"gte\", \"lte\"]\n            },\n            \"price_asset\": { \"type\": \"string\" }\n          },\n          \"additionalProperties\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n\n    \"IGSPreferences\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"optimization_goal\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"maximize_output\",\n            \"minimize_gas\",\n            \"fastest_execution\",\n            \"balanced\"\n          ],\n          \"default\": \"balanced\"\n        },\n        \"ranking_weights\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"surplus_weight\": {\n              \"type\": \"number\",\n              \"minimum\": 0,\n              \"maximum\": 100,\n              \"default\": 60\n            },\n            \"gas_cost_weight\": {\n              \"type\": \"number\",\n              \"minimum\": 0,\n              \"maximum\": 100,\n              \"default\": 20\n            },\n            \"execution_speed_weight\": {\n              \"type\": \"number\",\n              \"minimum\": 0,\n              \"maximum\": 100,\n              \"default\": 10\n            },\n            \"reputation_weight\": {\n              \"type\": \"number\",\n              \"minimum\": 0,\n              \"maximum\": 100,\n              \"default\": 10\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"execution\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"mode\": {\n              \"type\": \"string\",\n              \"enum\": [\"best_solution\", \"top_n_with_best_incentive\"],\n              \"default\": \"best_solution\"\n            },\n            \"show_top_n\": {\n              \"type\": \"number\",\n              \"minimum\": 1,\n              \"maximum\": 10,\n              \"default\": 3\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"privacy\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"encrypt_intent\": { \"type\": \"boolean\", \"default\": false },\n            \"anonymous_execution\": { \"type\": \"boolean\", \"default\": false }\n          },\n          \"additionalProperties\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n\n    \"IGSMetadata\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"original_input\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"text\": { \"type\": \"string\", \"maxLength\": 1000 },\n            \"language\": { \"type\": \"string\", \"pattern\": \"^[a-z]{2}$\" },\n            \"confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n          },\n          \"additionalProperties\": false\n        },\n        \"client\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"name\": { \"type\": \"string\" },\n            \"version\": { \"type\": \"string\" },\n            \"platform\": { \"type\": \"string\" }\n          },\n          \"additionalProperties\": false\n        },\n        \"warnings\": {\n          \"type\": \"array\",\n          \"items\": { \"type\": \"string\" }\n        },\n        \"clarifications\": {\n          \"type\": \"array\",\n          \"items\": { \"type\": \"string\" }\n        },\n        \"tags\": {\n          \"type\": \"array\",\n          \"items\": { \"type\": \"string\" }\n        }\n      },\n      \"additionalProperties\": false\n    }\n  }\n}\n","/**\n * IGS JSON Schema Validator using AJV\n */\n\nimport Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport type { IGSIntent, IGSValidationResult, IGSValidationError } from '../types/igs.js';\nimport igsSchema from '../schemas/igs-intent-schema.json' assert { type: 'json' };\n\nconst ajv = new Ajv({ \n  allErrors: true,\n  verbose: true,\n  strict: false,\n  removeAdditional: false,\n  validateSchema: false\n});\naddFormats(ajv);\n\nconst validateIGSSchema = ajv.compile(igsSchema);\n\nexport class IGSSchemaValidator {\n  static validate(intent: any): IGSValidationResult {\n    const errors: IGSValidationError[] = [];\n    const warnings: string[] = [];\n\n    try {\n      const isValid = validateIGSSchema(intent);\n      \n      if (!isValid && validateIGSSchema.errors) {\n        for (const ajvError of validateIGSSchema.errors) {\n          errors.push({\n            code: this.mapAJVErrorCode(ajvError.keyword),\n            field: ajvError.instancePath || ajvError.schemaPath || 'root',\n            message: this.formatAJVErrorMessage(ajvError),\n            severity: 'error'\n          });\n        }\n      }\n\n      if (isValid || errors.length === 0) {\n        this.validateBusinessLogic(intent, errors, warnings);\n      }\n\n    } catch (error) {\n      errors.push({\n        code: 'VALIDATION_ERROR',\n        field: 'root',\n        message: `Validation failed: ${error}`,\n        severity: 'error'\n      });\n    }\n\n    const valid = errors.filter(e => e.severity === 'error').length === 0;\n    const compliance_score = this.calculateComplianceScore(intent, errors, warnings);\n\n    return {\n      valid,\n      compliance_score,\n      errors,\n      warnings\n    };\n  }\n\n  private static mapAJVErrorCode(keyword: string): string {\n    const errorCodeMap: Record<string, string> = {\n      'required': 'MISSING_REQUIRED_FIELD',\n      'type': 'INVALID_TYPE',\n      'enum': 'INVALID_ENUM_VALUE',\n      'const': 'INVALID_CONSTANT_VALUE',\n      'pattern': 'INVALID_PATTERN',\n      'minimum': 'VALUE_TOO_SMALL',\n      'maximum': 'VALUE_TOO_LARGE',\n      'minLength': 'STRING_TOO_SHORT',\n      'maxLength': 'STRING_TOO_LONG',\n      'minItems': 'ARRAY_TOO_SHORT',\n      'maxItems': 'ARRAY_TOO_LONG',\n      'additionalProperties': 'ADDITIONAL_PROPERTIES_NOT_ALLOWED',\n      'oneOf': 'INVALID_ONE_OF',\n      'anyOf': 'INVALID_ANY_OF'\n    };\n    \n    return errorCodeMap[keyword] || 'SCHEMA_VALIDATION_ERROR';\n  }\n\n  private static formatAJVErrorMessage(error: any): string {\n    const { keyword, message, params, data } = error;\n    \n    switch (keyword) {\n      case 'required':\n        return `Missing required field: ${params?.missingProperty}`;\n      case 'enum':\n        return `Invalid value. Must be one of: ${params?.allowedValues?.join(', ')}`;\n      case 'const':\n        return `Invalid value. Must be: ${params?.allowedValue}`;\n      case 'pattern':\n        return `Invalid format. ${message}`;\n      case 'type':\n        return `Invalid type. Expected ${params?.type}, got ${typeof data}`;\n      default:\n        return message || `Validation error: ${keyword}`;\n    }\n  }\n\n  private static validateBusinessLogic(intent: any, errors: IGSValidationError[], warnings: string[]): void {\n    this.validateTiming(intent, errors, warnings);\n    this.validateCrossFields(intent, errors, warnings);\n    this.validateBusinessRules(intent, errors, warnings);\n  }\n\n  private static validateTiming(intent: any, errors: IGSValidationError[], warnings: string[]): void {\n    const now = Date.now();\n    \n    if (intent.timing?.absolute_deadline && intent.timing.absolute_deadline <= now) {\n      errors.push({\n        code: 'EXPIRED_DEADLINE',\n        field: 'timing.absolute_deadline',\n        message: 'Intent deadline has already passed',\n        severity: 'error'\n      });\n    }\n    \n    if (intent.constraints?.deadline && intent.timing?.absolute_deadline) {\n      if (intent.constraints.deadline !== intent.timing.absolute_deadline) {\n        warnings.push('Constraint deadline and timing deadline should match');\n      }\n    }\n    \n    if (intent.timing?.solver_window_ms) {\n      if (intent.timing.solver_window_ms < 1000) {\n        warnings.push('Solver window < 1s may be too short');\n      } else if (intent.timing.solver_window_ms > 60000) {\n        warnings.push('Solver window > 60s may be too long');\n      }\n    }\n  }\n\n  private static validateCrossFields(intent: any, errors: IGSValidationError[], warnings: string[]): void {\n    const intentType = intent.intent_type;\n    const operationMode = intent.operation?.mode;\n    \n    if (intentType === 'swap.exact_input' && operationMode !== 'exact_input') {\n      warnings.push('Intent type and operation mode mismatch');\n    }\n    if (intentType === 'swap.exact_output' && operationMode !== 'exact_output') {\n      warnings.push('Intent type and operation mode mismatch');\n    }\n    if (intentType?.startsWith('limit.') && operationMode !== 'limit_order') {\n      warnings.push('Intent type and operation mode mismatch');\n    }\n\n    const weights = intent.preferences?.ranking_weights;\n    if (weights) {\n      const total = (weights.surplus_weight || 0) + \n                   (weights.gas_cost_weight || 0) + \n                   (weights.execution_speed_weight || 0) + \n                   (weights.reputation_weight || 0);\n      \n      if (Math.abs(total - 100) > 0.01) {\n        warnings.push(`Ranking weights sum to ${total}, should sum to 100`);\n      }\n    }\n\n    if (intentType?.startsWith('limit.') && !intent.constraints?.limit_price) {\n      errors.push({\n        code: 'MISSING_LIMIT_PRICE',\n        field: 'constraints.limit_price',\n        message: 'Limit price is required for limit orders',\n        severity: 'error'\n      });\n    }\n  }\n\n  private static validateBusinessRules(intent: any, errors: IGSValidationError[], warnings: string[]): void {\n    if (intent.constraints?.max_slippage_bps > 1000) {\n      warnings.push('Slippage > 10% is unusually high');\n    }\n\n    if (intent.constraints?.max_gas_cost) {\n      const gasAmount = parseFloat(intent.constraints.max_gas_cost.amount);\n      if (gasAmount > 1) {\n        warnings.push('Gas limit > 1 SUI is unusually high');\n      }\n    }\n\n    const operation = intent.operation;\n    if (operation) {\n      switch (operation.mode) {\n        case 'exact_input':\n          operation.inputs?.forEach((input: any, index: number) => {\n            if (input.amount?.type !== 'exact') {\n              warnings.push(`Input ${index}: exact_input mode typically uses exact amounts`);\n            }\n          });\n          break;\n\n        case 'exact_output':\n          operation.outputs?.forEach((output: any, index: number) => {\n            if (output.amount?.type !== 'exact') {\n              warnings.push(`Output ${index}: exact_output mode typically uses exact amounts`);\n            }\n          });\n          break;\n\n        case 'limit_order':\n          if (intent.constraints?.limit_price && operation.expected_outcome?.market_price) {\n            const limitPrice = parseFloat(intent.constraints.limit_price.price);\n            const marketPrice = parseFloat(operation.expected_outcome.market_price.price);\n            const priceDiff = Math.abs(limitPrice - marketPrice) / marketPrice;\n            \n            if (priceDiff > 0.5) {\n              warnings.push('Limit price differs > 50% from market price');\n            }\n          }\n          break;\n      }\n    }\n\n    if (operation?.expected_outcome?.benchmark?.confidence < 0.7) {\n      warnings.push('Low benchmark confidence may affect surplus calculation accuracy');\n    }\n\n    if (intent.timing?.solver_window_ms < 2000) {\n      warnings.push('Solver window < 2s may be too short for complex operations');\n    }\n\n    if (intent.timing?.user_decision_timeout_ms > 600000) {\n      warnings.push('User decision timeout > 10 minutes may be too long');\n    }\n  }\n\n  private static calculateComplianceScore(\n    intent: any, \n    errors: IGSValidationError[], \n    warnings: string[]\n  ): number {\n    let score = 100;\n\n    const criticalErrors = errors.filter(e => e.severity === 'error').length;\n    const warningErrors = errors.filter(e => e.severity === 'warning').length;\n    \n    score -= criticalErrors * 35;\n    score -= warningErrors * 20;\n    score -= warnings.length * 15;\n\n    if (intent.metadata?.original_input?.confidence > 0.9) {\n      score += 5;\n    }\n    \n    if (intent.operation?.expected_outcome?.benchmark?.confidence > 0.9) {\n      score += 5;\n    }\n\n    if (intent.preferences?.execution?.require_simulation) {\n      score += 3;\n    }\n\n    return Math.max(0, Math.min(100, score));\n  }\n}\n\nexport function validateIGSIntent(intent: IGSIntent): IGSValidationResult {\n  return IGSSchemaValidator.validate(intent);\n}\n\nexport function isValidIGSIntent(obj: any): obj is IGSIntent {\n  const result = IGSSchemaValidator.validate(obj);\n  return result.valid;\n}\n\nexport function assertValidIGSIntent(obj: any): asserts obj is IGSIntent {\n  const result = IGSSchemaValidator.validate(obj);\n  if (!result.valid) {\n    const errorMessages = result.errors\n      .filter((e: IGSValidationError) => e.severity === 'error')\n      .map((e: IGSValidationError) => `${e.field}: ${e.message}`)\n      .join(', ');\n    throw new Error(`Invalid IGS Intent: ${errorMessages}`);\n  }\n}\n\nexport function validateIGSJSON(jsonData: unknown): IGSValidationResult {\n  return IGSSchemaValidator.validate(jsonData);\n}\n\nexport function parseIGSIntent(jsonString: string): { \n  intent?: IGSIntent; \n  validation: IGSValidationResult \n} {\n  try {\n    const parsed = JSON.parse(jsonString);\n    const validation = IGSSchemaValidator.validate(parsed);\n    \n    return {\n      intent: validation.valid ? parsed as IGSIntent : undefined,\n      validation\n    };\n  } catch (error) {\n    return {\n      validation: {\n        valid: false,\n        compliance_score: 0,\n        errors: [{\n          code: 'JSON_PARSE_ERROR',\n          field: 'root',\n          message: `Failed to parse JSON: ${error}`,\n          severity: 'error'\n        }],\n        warnings: []\n      }\n    };\n  }\n}\n\nexport function getAJVValidator() {\n  return validateIGSSchema;\n}\n\nexport function getAJVInstance() {\n  return ajv;\n}\n","/**\n * Safe environment variable access utilities\n */\n\n/**\n * Get environment variable with fallback\n * Works in both Node.js and browser environments\n */\nexport const getEnv = (key: string, fallback?: string): string | undefined => {\n  // Check if we're in a Node.js environment\n  if (typeof process !== 'undefined' && process.env) {\n    const value = process.env[key];\n    return value !== undefined ? value : fallback;\n  }\n  \n  // Browser environment - return fallback\n  return fallback;\n};\n\n/**\n * Get required environment variable\n * Throws error if not found\n */\nexport const getRequiredEnv = (key: string): string => {\n  const value = getEnv(key);\n  if (value === undefined) {\n    throw new Error(`Required environment variable ${key} is not set`);\n  }\n  return value;\n};\n\n/**\n * Get environment variable as number\n */\nexport const getEnvNumber = (key: string, fallback: number): number => {\n  const value = getEnv(key);\n  if (value === undefined) return fallback;\n  \n  const parsed = parseInt(value, 10);\n  return isNaN(parsed) ? fallback : parsed;\n};\n\n/**\n * Get environment variable as boolean\n */\nexport const getEnvBoolean = (key: string, fallback: boolean): boolean => {\n  const value = getEnv(key);\n  if (value === undefined) return fallback;\n  \n  return value.toLowerCase() === 'true' || value === '1';\n};\n","import { getEnv, getEnvNumber } from './utils/env.js';\n\n/**\n * Protocol constants with environment support\n */\nexport const PROTOCOL_CONSTANTS = {\n  MIN_SOLVER_STAKE: getEnv('MIN_SOLVER_STAKE', '1000000000000'),\n  EPOCH_DURATION_MS: getEnvNumber('EPOCH_DURATION_MS', 10_000),\n  SOLVER_WINDOW_MS: getEnvNumber('SOLVER_WINDOW_MS', 5_000),\n  MAX_SLIPPAGE_BPS: getEnvNumber('MAX_SLIPPAGE_BPS', 1000),\n  DEFAULT_SLIPPAGE_BPS: getEnvNumber('DEFAULT_SLIPPAGE_BPS', 50),\n  BATCH_TIMEOUT_MS: getEnvNumber('BATCH_TIMEOUT_MS', 30000),\n  MAX_INTENTS_PER_BATCH: getEnvNumber('MAX_INTENTS_PER_BATCH', 100),\n  DEFAULT_GAS_BUDGET: getEnvNumber('DEFAULT_GAS_BUDGET', 10000000),\n} as const;\n\n/**\n * Network configuration with environment support\n */\nexport const NETWORKS = {\n  MAINNET: {\n    sui_rpc_url: getEnv('SUI_MAINNET_RPC_URL', 'https://fullnode.mainnet.sui.io:443')!,\n    walrus: {\n      publisher: getEnv('WALRUS_MAINNET_PUBLISHER_URL', 'https://publisher.walrus.space')!,\n      aggregator: getEnv('WALRUS_MAINNET_AGGREGATOR_URL', 'https://aggregator.walrus.space')!,\n      uploadRelay: getEnv('WALRUS_MAINNET_UPLOAD_RELAY_URL', 'https://upload-relay.mainnet.walrus.space')!,\n    },\n  },\n  TESTNET: {\n    sui_rpc_url: getEnv('SUI_TESTNET_RPC_URL', 'https://fullnode.testnet.sui.io:443')!,\n    walrus: {\n      publisher: getEnv('WALRUS_TESTNET_PUBLISHER_URL', 'https://publisher.walrus-testnet.walrus.space')!,\n      aggregator: getEnv('WALRUS_TESTNET_AGGREGATOR_URL', 'https://aggregator.walrus-testnet.walrus.space')!,\n      uploadRelay: getEnv('WALRUS_TESTNET_UPLOAD_RELAY_URL', 'https://upload-relay.testnet.walrus.space')!,\n    },\n  }\n} as const;\n\n/**\n * Redis configuration with environment support\n */\nexport const REDIS_CONFIG = {\n  url: getEnv('REDIS_URL', 'redis://localhost:6379')!,\n  channels: {\n    NEW_BATCHES: getEnv('REDIS_CHANNEL_NEW_BATCHES', 'intenus:batches:new')!,\n    SOLUTIONS: getEnv('REDIS_CHANNEL_SOLUTIONS', 'intenus:solutions')!,\n  },\n} as const;\n\n/**\n * Walrus storage paths for AI infrastructure standard\n */\nexport const WALRUS_PATHS = {\n  batchManifest: (epoch: number) => `/batches/${epoch}/batch_manifest.json`,\n  batchArchive: (epoch: number, batchId: string) => `/archives/${epoch}/batch_${batchId}.json`,\n  userHistory: (address: string) => `/users/${address}/history_aggregated.json`,\n  datasetMetadata: (version: string) => `/training/datasets/${version}/dataset_metadata.json`,\n  datasetFeatures: (version: string) => `/training/datasets/${version}/features.parquet`,\n  datasetLabels: (version: string) => `/training/datasets/${version}/labels.parquet`,\n  modelMetadata: (name: string, version: string) => `/training/models/${name}/${version}/model_metadata.json`,\n  modelFile: (name: string, version: string) => `/training/models/${name}/${version}/model.onnx`,\n} as const;\n\n/**\n * Legacy Walrus path types for backward compatibility\n */\nexport interface WalrusPath {\n  intents: `/intents/${number}/${string}.json`;\n  batches: `/batches/${number}/manifest.json`;\n  solutions: `/solutions/${string}/${string}.json`;\n}\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://intenus.io/schemas/core.json\",\n  \"title\": \"Intenus Core Types Schema\",\n  \"description\": \"JSON Schema for Core types (PreRanking and Ranking Engine)\",\n  \"definitions\": {\n    \"SolutionSubmission\": {\n      \"type\": \"object\",\n      \"description\": \"Solution submitted by solver (on-chain reference)\",\n      \"required\": [\n        \"solution_id\",\n        \"intent_id\",\n        \"solver_address\",\n        \"submitted_at\"\n      ],\n      \"properties\": {\n        \"solution_id\": {\n          \"type\": \"string\",\n          \"description\": \"Unique solution ID (from on-chain object)\"\n        },\n        \"intent_id\": {\n          \"type\": \"string\",\n          \"description\": \"Intent ID this solution is for\"\n        },\n        \"solver_address\": {\n          \"type\": \"string\",\n          \"description\": \"Solver's blockchain address\"\n        },\n        \"submitted_at\": {\n          \"type\": \"number\",\n          \"description\": \"Submission timestamp (Unix ms)\"\n        },\n        \"blob_id\": {\n          \"type\": \"string\",\n          \"description\": \"Tx transaction bytes reference\"\n        }\n      }\n    },\n    \"IntentClassification\": {\n      \"type\": \"object\",\n      \"description\": \"Intent classification result from ML classifier\",\n      \"required\": [\n        \"primary_category\",\n        \"primary_category_confidence\",\n        \"detected_priority\",\n        \"detected_priority_confidence\",\n        \"complexity_level\",\n        \"complexity_level_confidence\",\n        \"risk_level\",\n        \"risk_level_confidence\",\n        \"strategy\",\n        \"strategy_confidence\",\n        \"weights\"\n      ],\n      \"properties\": {\n        \"primary_category\": {\n          \"type\": \"string\",\n          \"enum\": [\"swap\", \"limit_order\", \"complex_defi\", \"arbitrage\", \"other\"],\n          \"description\": \"Primary detected intent category\"\n        },\n        \"primary_category_confidence\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 1\n        },\n\n        \"detected_priority\": {\n          \"type\": \"string\",\n          \"enum\": [\"speed\", \"cost\", \"output\", \"balanced\"],\n          \"description\": \"User priority detected from constraints\"\n        },\n        \"detected_priority_confidence\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 1\n        },\n\n        \"complexity_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"simple\", \"moderate\", \"complex\"]\n        },\n        \"complexity_level_confidence\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 1\n        },\n\n        \"risk_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"low\", \"medium\", \"high\"]\n        },\n        \"risk_level_confidence\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 1\n        },\n\n        \"strategy\": {\n          \"type\": \"string\",\n          \"description\": \"Detected optimal strategy\"\n        },\n        \"strategy_confidence\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 1\n        },\n\n        \"weights\": {\n          \"type\": \"object\",\n          \"required\": [\n            \"gt_weight_surplus_usd\",\n            \"gt_weight_surplus_percentage\",\n            \"gt_weight_gas_cost\",\n            \"gt_weight_protocol_fees\",\n            \"gt_weight_total_hops\",\n            \"gt_weight_protocols_count\",\n            \"gt_weight_estimated_execution_time\",\n            \"gt_weight_solver_reputation_score\",\n            \"gt_weight_solver_success_rate\"\n          ],\n          \"properties\": {\n            \"gt_weight_surplus_usd\": { \"type\": \"number\" },\n            \"gt_weight_surplus_percentage\": { \"type\": \"number\" },\n            \"gt_weight_gas_cost\": { \"type\": \"number\" },\n            \"gt_weight_protocol_fees\": { \"type\": \"number\" },\n            \"gt_weight_total_hops\": { \"type\": \"number\" },\n            \"gt_weight_protocols_count\": { \"type\": \"number\" },\n            \"gt_weight_estimated_execution_time\": { \"type\": \"number\" },\n            \"gt_weight_solver_reputation_score\": { \"type\": \"number\" },\n            \"gt_weight_solver_success_rate\": { \"type\": \"number\" }\n          }\n        }\n      }\n    },\n    \"PreRankingResult\": {\n      \"type\": \"object\",\n      \"description\": \"PreRanking engine result - validation, classification, and feature extraction\",\n      \"required\": [\n        \"intent_id\",\n        \"intent_classification\",\n        \"passed_solution_ids\",\n        \"failed_solution_ids\",\n        \"feature_vectors\",\n        \"dry_run_results\",\n        \"stats\",\n        \"processed_at\"\n      ],\n      \"properties\": {\n        \"intent_id\": {\n          \"type\": \"string\",\n          \"description\": \"Intent ID being processed\"\n        },\n        \"intent_classification\": {\n          \"$ref\": \"#/definitions/IntentClassification\"\n        },\n        \"passed_solution_ids\": {\n          \"type\": \"array\",\n          \"items\": { \"type\": \"string\" },\n          \"description\": \"Solution IDs that passed validation\"\n        },\n        \"failed_solution_ids\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\"solution_id\", \"failure_reason\", \"errors\"],\n            \"properties\": {\n              \"solution_id\": { \"type\": \"string\" },\n              \"failure_reason\": { \"type\": \"string\" },\n              \"errors\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } }\n            }\n          }\n        },\n        \"feature_vectors\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\"solution_id\", \"features\"],\n            \"properties\": {\n              \"solution_id\": { \"type\": \"string\" },\n              \"features\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"surplus_usd\",\n                  \"surplus_percentage\",\n                  \"gas_cost\",\n                  \"protocol_fees\",\n                  \"total_cost\",\n                  \"total_hops\",\n                  \"protocols_count\"\n                ],\n                \"properties\": {\n                  \"surplus_usd\": { \"type\": \"number\" },\n                  \"surplus_percentage\": { \"type\": \"number\" },\n                  \"gas_cost\": { \"type\": \"number\" },\n                  \"protocol_fees\": { \"type\": \"number\" },\n                  \"total_cost\": { \"type\": \"number\" },\n                  \"total_hops\": { \"type\": \"number\" },\n                  \"protocols_count\": { \"type\": \"number\" },\n                  \"estimated_execution_time\": { \"type\": \"number\" },\n                  \"solver_reputation_score\": { \"type\": \"number\" },\n                  \"solver_success_rate\": { \"type\": \"number\" }\n                }\n              }\n            }\n          }\n        },\n        \"dry_run_results\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\"solution_id\", \"result\"],\n            \"properties\": {\n              \"solution_id\": { \"type\": \"string\" },\n              \"result\": { \"description\": \"Raw simulation result from Sui\" }\n            }\n          }\n        },\n        \"stats\": {\n          \"type\": \"object\",\n          \"required\": [\n            \"total_submitted\",\n            \"passed\",\n            \"failed\",\n            \"dry_run_executed\",\n            \"dry_run_successful\"\n          ],\n          \"properties\": {\n            \"total_submitted\": { \"type\": \"number\" },\n            \"passed\": { \"type\": \"number\" },\n            \"failed\": { \"type\": \"number\" },\n            \"dry_run_executed\": { \"type\": \"number\" },\n            \"dry_run_successful\": { \"type\": \"number\" }\n          }\n        },\n        \"processed_at\": {\n          \"type\": \"number\",\n          \"description\": \"Processing timestamp (Unix ms)\"\n        }\n      }\n    },\n    \"RankedSolution\": {\n      \"type\": \"object\",\n      \"description\": \"Ranked solution with scoring and explanation\",\n      \"required\": [\n        \"rank\",\n        \"score\",\n        \"solution_id\",\n        \"solver_address\",\n        \"transaction_bytes\",\n        \"score_breakdown\",\n        \"reasoning\",\n        \"personalization_applied\",\n        \"warnings\",\n        \"expires_at\"\n      ],\n      \"properties\": {\n        \"rank\": {\n          \"type\": \"number\",\n          \"minimum\": 1,\n          \"description\": \"Ranking position (1 = best)\"\n        },\n        \"score\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 100,\n          \"description\": \"Overall score (0-100)\"\n        },\n        \"solution_id\": {\n          \"type\": \"string\",\n          \"description\": \"Solution ID reference\"\n        },\n        \"solver_address\": {\n          \"type\": \"string\",\n          \"description\": \"Solver address\"\n        },\n        \"transaction_bytes\": {\n          \"type\": \"string\",\n          \"description\": \"Transaction bytes for execution\"\n        },\n        \"score_breakdown\": {\n          \"type\": \"object\",\n          \"required\": [\n            \"surplus_score\",\n            \"cost_score\",\n            \"speed_score\",\n            \"reputation_score\"\n          ],\n          \"properties\": {\n            \"surplus_score\": { \"type\": \"number\" },\n            \"cost_score\": { \"type\": \"number\" },\n            \"speed_score\": { \"type\": \"number\" },\n            \"reputation_score\": { \"type\": \"number\" }\n          }\n        },\n        \"reasoning\": {\n          \"type\": \"object\",\n          \"required\": [\n            \"primary_reason\",\n            \"secondary_reasons\",\n            \"risk_assessment\",\n            \"confidence_level\"\n          ],\n          \"properties\": {\n            \"primary_reason\": { \"type\": \"string\" },\n            \"secondary_reasons\": {\n              \"type\": \"array\",\n              \"items\": { \"type\": \"string\" }\n            },\n            \"risk_assessment\": {\n              \"type\": \"string\",\n              \"enum\": [\"low\", \"medium\", \"high\"]\n            },\n            \"confidence_level\": {\n              \"type\": \"number\",\n              \"minimum\": 0,\n              \"maximum\": 1\n            }\n          }\n        },\n        \"personalization_applied\": {\n          \"type\": \"boolean\"\n        },\n        \"user_fit_score\": {\n          \"type\": \"number\"\n        },\n        \"warnings\": {\n          \"type\": \"array\",\n          \"items\": { \"type\": \"string\" }\n        },\n        \"expires_at\": {\n          \"type\": \"number\",\n          \"description\": \"Expiration timestamp (Unix ms)\"\n        }\n      }\n    },\n    \"RankingResult\": {\n      \"type\": \"object\",\n      \"description\": \"Ranking engine final result\",\n      \"required\": [\n        \"intent_id\",\n        \"ranked_solutions\",\n        \"best_solution\",\n        \"metadata\",\n        \"ranked_at\",\n        \"expires_at\"\n      ],\n      \"properties\": {\n        \"intent_id\": {\n          \"type\": \"string\"\n        },\n        \"ranked_solutions\": {\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/definitions/RankedSolution\" }\n        },\n        \"best_solution\": {\n          \"$ref\": \"#/definitions/RankedSolution\"\n        },\n        \"metadata\": {\n          \"type\": \"object\",\n          \"required\": [\n            \"total_solutions\",\n            \"average_score\",\n            \"strategy\",\n            \"intent_category\"\n          ],\n          \"properties\": {\n            \"total_solutions\": { \"type\": \"number\" },\n            \"average_score\": { \"type\": \"number\" },\n            \"strategy\": { \"type\": \"string\" },\n            \"intent_category\": { \"type\": \"string\" }\n          }\n        },\n        \"ranked_at\": {\n          \"type\": \"number\"\n        },\n        \"expires_at\": {\n          \"type\": \"number\"\n        }\n      }\n    }\n  }\n}\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://intenus.org/schemas/igs/solution/v1.0.0\",\n  \"title\": \"Intenus General Standard (IGS) Solution v1.0\",\n  \"description\": \"Minimal payload that solvers submit to Intenus routers. Only the solver identity and serialized Tx are required.\",\n  \"type\": \"object\",\n  \"required\": [\"solver_address\", \"tx_bytes\"],\n  \"properties\": {\n    \"solver_address\": {\n      \"type\": \"string\",\n      \"pattern\": \"^0x[a-fA-F0-9]{1,64}$\",\n      \"description\": \"Sui address of the solver submitting this Tx\"\n    },\n    \"tx_bytes\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"description\": \"Serialized Tx bytes (base64 or hex encoded string)\"\n    }\n  },\n  \"additionalProperties\": false\n}\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://intenus.io/schemas/dataset.json\",\n  \"title\": \"Intenus ML Dataset Schema\",\n  \"description\": \"JSON Schema for ML training dataset types\",\n  \"definitions\": {\n    \"RawFeatures\": {\n      \"type\": \"object\",\n      \"description\": \"Raw features extracted from IGSIntent for ML training\",\n      \"required\": [\n        \"solver_window_ms\",\n        \"user_decision_timeout_ms\",\n        \"time_to_deadline_ms\",\n        \"max_slippage_bps\",\n        \"has_whitelist\",\n        \"has_blacklist\",\n        \"has_limit_price\",\n        \"optimization_goal\",\n        \"surplus_weight\",\n        \"gas_cost_weight\",\n        \"execution_speed_weight\",\n        \"reputation_weight\",\n        \"require_simulation\",\n        \"input_count\",\n        \"output_count\",\n        \"input_asset_types\",\n        \"output_asset_types\",\n        \"input_value_usd\",\n        \"expected_output_value_usd\",\n        \"benchmark_source\",\n        \"benchmark_confidence\",\n        \"expected_gas_usd\",\n        \"has_nlp_input\",\n        \"client_platform\",\n        \"tag_count\"\n      ],\n      \"properties\": {\n        \"solver_window_ms\": { \"type\": \"number\" },\n        \"user_decision_timeout_ms\": { \"type\": \"number\" },\n        \"time_to_deadline_ms\": { \"type\": \"number\" },\n        \"time_in_force\": {\n          \"type\": \"string\",\n          \"enum\": [\"immediate\", \"good_til_cancel\", \"fill_or_kill\"]\n        },\n        \"max_slippage_bps\": { \"type\": \"number\" },\n        \"max_gas_cost_usd\": { \"type\": \"number\" },\n        \"max_hops\": { \"type\": \"number\" },\n        \"has_whitelist\": { \"type\": \"boolean\" },\n        \"has_blacklist\": { \"type\": \"boolean\" },\n        \"has_limit_price\": { \"type\": \"boolean\" },\n        \"optimization_goal\": {\n          \"type\": \"string\",\n          \"enum\": [\"maximize_output\", \"minimize_gas\", \"fastest_execution\", \"balanced\"]\n        },\n        \"surplus_weight\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 100 },\n        \"gas_cost_weight\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 100 },\n        \"execution_speed_weight\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 100 },\n        \"reputation_weight\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 100 },\n        \"require_simulation\": { \"type\": \"boolean\" },\n        \"input_count\": { \"type\": \"number\" },\n        \"output_count\": { \"type\": \"number\" },\n        \"input_asset_types\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"enum\": [\"native\", \"stable\", \"volatile\"]\n          }\n        },\n        \"output_asset_types\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"enum\": [\"native\", \"stable\", \"volatile\"]\n          }\n        },\n        \"input_value_usd\": { \"type\": \"number\" },\n        \"expected_output_value_usd\": { \"type\": \"number\" },\n        \"benchmark_source\": { \"type\": \"string\" },\n        \"benchmark_confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 },\n        \"expected_gas_usd\": { \"type\": \"number\" },\n        \"expected_slippage_bps\": { \"type\": \"number\" },\n        \"has_nlp_input\": { \"type\": \"boolean\" },\n        \"nlp_confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 },\n        \"client_platform\": { \"type\": \"string\" },\n        \"tag_count\": { \"type\": \"number\" }\n      }\n    },\n    \"GroundTruthLabel\": {\n      \"type\": \"object\",\n      \"description\": \"Ground truth classification labels\",\n      \"required\": [\"primary_category\", \"detected_priority\", \"complexity_level\", \"risk_level\"],\n      \"properties\": {\n        \"primary_category\": {\n          \"type\": \"string\",\n          \"enum\": [\"swap\", \"limit_order\", \"complex_defi\", \"arbitrage\", \"other\"]\n        },\n        \"detected_priority\": {\n          \"type\": \"string\",\n          \"enum\": [\"speed\", \"cost\", \"output\", \"balanced\"]\n        },\n        \"complexity_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"simple\", \"moderate\", \"complex\"]\n        },\n        \"risk_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"low\", \"medium\", \"high\"]\n        }\n      }\n    },\n    \"LabelingMetadata\": {\n      \"type\": \"object\",\n      \"description\": \"Labeling metadata\",\n      \"required\": [\"labeling_method\", \"labeled_by\", \"labeled_at\", \"label_confidence\"],\n      \"properties\": {\n        \"labeling_method\": {\n          \"type\": \"string\",\n          \"enum\": [\"expert_manual\", \"rule_based\", \"outcome_based\", \"user_feedback\", \"synthetic\"]\n        },\n        \"labeled_by\": { \"type\": \"string\" },\n        \"labeled_at\": { \"type\": \"number\" },\n        \"label_confidence\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 },\n        \"notes\": { \"type\": \"string\" }\n      }\n    },\n    \"ExecutionOutcome\": {\n      \"type\": \"object\",\n      \"description\": \"Execution outcome for feedback loop\",\n      \"required\": [\"executed\"],\n      \"properties\": {\n        \"executed\": { \"type\": \"boolean\" },\n        \"chosen_solution_rank\": { \"type\": \"number\" },\n        \"chosen_solution_id\": { \"type\": \"string\" },\n        \"actual_metrics\": {\n          \"type\": \"object\",\n          \"required\": [\"actual_output_usd\", \"actual_gas_cost_usd\", \"actual_execution_time_ms\", \"actual_slippage_bps\"],\n          \"properties\": {\n            \"actual_output_usd\": { \"type\": \"number\" },\n            \"actual_gas_cost_usd\": { \"type\": \"number\" },\n            \"actual_execution_time_ms\": { \"type\": \"number\" },\n            \"actual_slippage_bps\": { \"type\": \"number\" }\n          }\n        },\n        \"user_satisfaction\": {\n          \"type\": \"number\",\n          \"enum\": [1, 2, 3, 4, 5]\n        },\n        \"executed_at\": { \"type\": \"number\" }\n      }\n    },\n    \"IntentClassificationTrainingData\": {\n      \"type\": \"object\",\n      \"description\": \"Complete training sample for intent classification\",\n      \"required\": [\"sample_id\", \"intent_metadata\", \"raw_features\", \"ground_truth\", \"label_info\", \"dataset_version\", \"created_at\"],\n      \"properties\": {\n        \"sample_id\": { \"type\": \"string\" },\n        \"intent_metadata\": {\n          \"type\": \"object\",\n          \"required\": [\"intent_id\", \"intent_type\", \"created_at\"],\n          \"properties\": {\n            \"intent_id\": { \"type\": \"string\" },\n            \"intent_type\": { \"type\": \"string\" },\n            \"created_at\": { \"type\": \"number\" }\n          }\n        },\n        \"raw_features\": { \"$ref\": \"#/definitions/RawFeatures\" },\n        \"ground_truth\": { \"$ref\": \"#/definitions/GroundTruthLabel\" },\n        \"label_info\": { \"$ref\": \"#/definitions/LabelingMetadata\" },\n        \"execution_outcome\": { \"$ref\": \"#/definitions/ExecutionOutcome\" },\n        \"dataset_version\": { \"type\": \"string\" },\n        \"created_at\": { \"type\": \"number\" },\n        \"full_intent_ref\": { \"type\": \"string\" }\n      }\n    }\n  }\n}\n","import { IGSIntent, IGSIntentType, IGSIntentSchema, type IGSObject } from '../types/igs.js';\n\n/**\n * Fluent API for building IGS intents\n * Provides a convenient way to construct IGSIntent objects with proper validation\n *\n * @example\n * const intent = new IntentBuilder({\n *   user_address: '0x123...',\n *   object: {\n *     user_address: '0x123...',\n *     created_ts: Date.now(),\n *     policy: {...}\n *   }\n * })\n *   .swap('0x2::sui::SUI', '100000000', '0x...::usdc::USDC')\n *   .withSlippage(50)\n *   .build();\n */\nexport class IntentBuilder {\n  private intent: Partial<IGSIntent>;\n\n  constructor(init?: Partial<IGSIntent> & { user_address: string; object: IGSObject }) {\n    if (init) {\n      this.intent = {\n        ...init,\n        igs_version: '1.0.0',\n      };\n    } else {\n      // Minimal defaults - user must provide required fields\n      this.intent = {\n        igs_version: '1.0.0',\n      };\n    }\n  }\n\n  /**\n   * Set user address and object\n   */\n  withUser(user_address: string, object: IGSObject): this {\n    this.intent.user_address = user_address;\n    this.intent.object = object;\n    return this;\n  }\n\n  /**\n   * Set intent type\n   */\n  withType(type: IGSIntentType, description?: string): this {\n    this.intent.intent_type = type;\n    if (description) {\n      this.intent.description = description;\n    }\n    return this;\n  }\n\n  /**\n   * Build a swap intent operation\n   */\n  swap(\n    tokenIn: string,\n    amountIn: string,\n    tokenOut: string,\n    slippageBps: number = 50\n  ): this {\n    this.intent.intent_type = 'swap.exact_input';\n    this.intent.description = `Swap ${amountIn} ${tokenIn} to ${tokenOut}`;\n\n    this.intent.operation = {\n      mode: 'exact_input',\n      inputs: [{\n        asset_id: tokenIn,\n        asset_info: {\n          symbol: tokenIn.split('::').pop()?.toUpperCase() || 'UNKNOWN',\n          decimals: 9,\n        },\n        amount: { type: 'exact', value: amountIn },\n      }],\n      outputs: [{\n        asset_id: tokenOut,\n        asset_info: {\n          symbol: tokenOut.split('::').pop()?.toUpperCase() || 'UNKNOWN',\n          decimals: 6,\n        },\n        amount: { type: 'range', min: '0', max: '999999999999' },\n      }],\n      expected_outcome: {\n        expected_outputs: [{\n          asset_id: tokenOut,\n          amount: '0',\n        }],\n        expected_costs: {\n          gas_estimate: '0.01',\n        },\n      },\n    };\n\n    // Set constraints with slippage\n    this.intent.constraints = {\n      max_slippage_bps: slippageBps,\n      deadline_ms: Date.now() + 300000, // 5 minutes\n      min_outputs: [{\n        asset_id: tokenOut,\n        amount: '0',\n      }],\n    };\n\n    return this;\n  }\n\n  /**\n   * Set constraints\n   */\n  withConstraints(constraints: NonNullable<IGSIntent['constraints']>): this {\n    this.intent.constraints = { ...this.intent.constraints, ...constraints };\n    return this;\n  }\n\n  /**\n   * Set preferences\n   */\n  withPreferences(preferences: NonNullable<IGSIntent['preferences']>): this {\n    this.intent.preferences = { ...this.intent.preferences, ...preferences };\n    return this;\n  }\n\n  /**\n   * Set metadata\n   */\n  withMetadata(metadata: NonNullable<IGSIntent['metadata']>): this {\n    this.intent.metadata = { ...this.intent.metadata, ...metadata };\n    return this;\n  }\n\n  /**\n   * Set max slippage\n   */\n  withSlippage(slippageBps: number): this {\n    if (!this.intent.constraints) {\n      this.intent.constraints = {};\n    }\n    this.intent.constraints.max_slippage_bps = slippageBps;\n    return this;\n  }\n\n  /**\n   * Set optimization goal\n   */\n  withOptimization(goal: 'maximize_output' | 'minimize_gas' | 'fastest_execution' | 'balanced'): this {\n    if (!this.intent.preferences) {\n      this.intent.preferences = {};\n    }\n    this.intent.preferences.optimization_goal = goal;\n    return this;\n  }\n\n  /**\n   * Build the final IGS intent with validation\n   * @returns Complete validated IGS intent\n   */\n  build(): IGSIntent {\n    // Validate with Zod schema\n    const result = IGSIntentSchema.safeParse(this.intent);\n    if (!result.success) {\n      throw new Error(`Invalid IGS Intent: ${JSON.stringify(result.error.issues, null, 2)}`);\n    }\n    return result.data;\n  }\n}\n","import type { SolutionSubmission, IGSSolution } from '../types/index.js';\nimport { Transaction } from '@mysten/sui/transactions';\n\n/**\n * Fluent API for building IGS solutions\n * Provides a convenient way to construct Solution objects with proper validation\n *\n * @example\n * const solution = new SolutionBuilder(intentId, solverAddress)\n *   .withPromisedOutput('0x...::usdc::USDC', '300000000')\n *   .withGasEstimate('0.01')\n *   .withProtocols(['Cetus', 'Turbos'])\n *   .withSlippageEstimate(30)\n *   .withSurplus('305.50', '300.00', '5.50', '1.83')\n *   .build();\n */\nexport class SolutionBuilder {\n  private tx: Transaction;\n  private promisedOutputs: Array<{ asset_id: string; amount: string }> = [];\n  private estimatedGas: string = '0.01';\n  private estimatedSlippageBps: number = 0;\n  private protocolFees?: string;\n  private protocols: string[] = [];\n  private totalHops: number = 0;\n  private executionPath: string = '';\n  private uniqueTechniques?: string;\n  private surplusCalculation: {\n    benchmark_value_usd: string;\n    solution_value_usd: string;\n    surplus_usd: string;\n    surplus_percentage: string;\n  } = {\n    benchmark_value_usd: '0',\n    solution_value_usd: '0',\n    surplus_usd: '0',\n    surplus_percentage: '0',\n  };\n\n  constructor(\n    private intentId: string,\n    private solverAddress: string\n  ) {\n    this.tx = new Transaction();\n  }\n\n  /**\n   * Get the underlying Tx for custom modifications\n   */\n  getTx(): Transaction {\n    return this.tx;\n  }\n\n  /**\n   * Add a promised output for the solution\n   * @param assetId - Asset identifier\n   * @param amount - Promised amount in base units\n   */\n  withPromisedOutput(assetId: string, amount: string): this {\n    this.promisedOutputs.push({ asset_id: assetId, amount });\n    return this;\n  }\n\n  /**\n   * Add multiple promised outputs\n   * @param outputs - Array of promised outputs\n   */\n  withPromisedOutputs(outputs: Array<{ asset_id: string; amount: string }>): this {\n    this.promisedOutputs.push(...outputs);\n    return this;\n  }\n\n  /**\n   * Set estimated gas cost\n   * @param gasEstimate - Estimated gas cost\n   */\n  withGasEstimate(gasEstimate: string): this {\n    this.estimatedGas = gasEstimate;\n    return this;\n  }\n\n  /**\n   * Set estimated slippage\n   * @param slippageBps - Estimated slippage in basis points\n   */\n  withSlippageEstimate(slippageBps: number): this {\n    this.estimatedSlippageBps = slippageBps;\n    return this;\n  }\n\n  /**\n   * Set protocol fees\n   * @param fees - Protocol fees amount\n   */\n  withProtocolFees(fees: string): this {\n    this.protocolFees = fees;\n    return this;\n  }\n\n  /**\n   * Add protocols used in the solution\n   * @param protocols - Array of protocol names\n   */\n  withProtocols(protocols: string[]): this {\n    this.protocols = protocols;\n    return this;\n  }\n\n  /**\n   * Set total number of hops\n   * @param hops - Total number of hops in the routing path\n   */\n  withHops(hops: number): this {\n    this.totalHops = hops;\n    return this;\n  }\n\n  /**\n   * Set execution path description\n   * @param path - Human-readable execution path\n   */\n  withExecutionPath(path: string): this {\n    this.executionPath = path;\n    return this;\n  }\n\n  /**\n   * Set unique techniques or optimizations used\n   * @param techniques - Description of unique techniques\n   */\n  withUniqueTechniques(techniques: string): this {\n    this.uniqueTechniques = techniques;\n    return this;\n  }\n\n  /**\n   * Set surplus calculation\n   * @param solutionValueUsd - Actual value from this solution in USD\n   * @param benchmarkValueUsd - Expected value from intent benchmark in USD\n   * @param surplusUsd - Surplus amount (solution - benchmark) in USD\n   * @param surplusPercentage - Surplus as percentage of benchmark\n   */\n  withSurplus(\n    solutionValueUsd: string,\n    benchmarkValueUsd: string,\n    surplusUsd: string,\n    surplusPercentage: string\n  ): this {\n    this.surplusCalculation = {\n      benchmark_value_usd: benchmarkValueUsd,\n      solution_value_usd: solutionValueUsd,\n      surplus_usd: surplusUsd,\n      surplus_percentage: surplusPercentage,\n    };\n    return this;\n  }\n\n  /**\n   * Set strategy summary\n   * @param strategy - Strategy configuration\n   */\n  withStrategy(strategy: {\n    protocols: string[];\n    hops: number;\n    path: string;\n    techniques?: string;\n  }): this {\n    this.protocols = strategy.protocols;\n    this.totalHops = strategy.hops;\n    this.executionPath = strategy.path;\n    if (strategy.techniques) {\n      this.uniqueTechniques = strategy.techniques;\n    }\n    return this;\n  }\n\n  /**\n   * Build final IGS solution (minimal - for Walrus storage)\n   * @param options - Build options including SuiClient for Tx serialization\n   * @returns Minimal IGS solution ready for Walrus storage\n   */\n  async build(options?: { client?: any }): Promise<IGSSolution> {\n    // Build Tx bytes (requires SuiClient in production)\n    const txBytes = options?.client\n      ? await this.tx.build({ client: options.client })\n      : new Uint8Array(); // Placeholder - real implementation needs client\n\n    const txHex = Buffer.from(txBytes).toString('hex');\n\n    // Return minimal IGS solution (for Walrus storage)\n    const solution: IGSSolution = {\n      solver_address: this.solverAddress,\n      tx_bytes: txHex,\n    };\n\n    return solution;\n  }\n\n  /**\n   * Build solution submission (on-chain reference)\n   * @param options - Build options including SuiClient\n   * @returns Solution submission and Tx bytes\n   */\n  async buildSubmission(options?: { client?: any }): Promise<{\n    submission: SolutionSubmission;\n    txBytes: Uint8Array;\n  }> {\n    const txBytes = options?.client\n      ? await this.tx.build({ client: options.client })\n      : new Uint8Array();\n\n    const submission: SolutionSubmission = {\n      solution_id: crypto.randomUUID(),\n      intent_id: this.intentId,\n      solver_address: this.solverAddress,\n      submitted_at: Date.now(),\n      blob_id: Buffer.from(txBytes).toString('base64'),\n    };\n\n    return { submission, txBytes };\n  }\n\n  /**\n   * Get solution metadata (for internal use / analytics)\n   * @returns Solution metadata with all builder state\n   */\n  getMetadata() {\n    return {\n      intent_id: this.intentId,\n      promised_outputs: this.promisedOutputs,\n      estimated_gas: this.estimatedGas,\n      estimated_slippage_bps: this.estimatedSlippageBps,\n      protocol_fees: this.protocolFees,\n      surplus_calculation: this.surplusCalculation,\n      strategy_summary: {\n        protocols_used: this.protocols,\n        total_hops: this.totalHops,\n        execution_path: this.executionPath,\n        unique_techniques: this.uniqueTechniques,\n      },\n      compliance_score: this.calculateComplianceScore(),\n    };\n  }\n\n  /**\n   * Calculate compliance score based on solution completeness\n   * @returns Compliance score (0-100)\n   * @private\n   */\n  private calculateComplianceScore(): number {\n    let score = 100;\n\n    // Deduct points for missing required fields\n    if (this.promisedOutputs.length === 0) score -= 30;\n    if (!this.estimatedGas || this.estimatedGas === '0') score -= 10;\n    if (this.protocols.length === 0) score -= 15;\n    if (!this.executionPath) score -= 10;\n    if (this.surplusCalculation.surplus_usd === '0') score -= 10;\n\n    return Math.max(0, score);\n  }\n}\n"]}