@sly_ai/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -0
- package/dist/a2a.d.mts +108 -0
- package/dist/a2a.d.ts +108 -0
- package/dist/a2a.js +173 -0
- package/dist/a2a.js.map +1 -0
- package/dist/a2a.mjs +171 -0
- package/dist/a2a.mjs.map +1 -0
- package/dist/acp.d.mts +201 -0
- package/dist/acp.d.ts +201 -0
- package/dist/acp.js +143 -0
- package/dist/acp.js.map +1 -0
- package/dist/acp.mjs +141 -0
- package/dist/acp.mjs.map +1 -0
- package/dist/ap2.d.mts +188 -0
- package/dist/ap2.d.ts +188 -0
- package/dist/ap2.js +135 -0
- package/dist/ap2.js.map +1 -0
- package/dist/ap2.mjs +133 -0
- package/dist/ap2.mjs.map +1 -0
- package/dist/cards.d.mts +750 -0
- package/dist/cards.d.ts +750 -0
- package/dist/cards.js +373 -0
- package/dist/cards.js.map +1 -0
- package/dist/cards.mjs +369 -0
- package/dist/cards.mjs.map +1 -0
- package/dist/client-Cwe2CLU7.d.mts +41 -0
- package/dist/client-CyJe3uWO.d.ts +41 -0
- package/dist/index.d.mts +662 -0
- package/dist/index.d.ts +662 -0
- package/dist/index.js +2709 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2700 -0
- package/dist/index.mjs.map +1 -0
- package/dist/langchain.d.mts +11 -0
- package/dist/langchain.d.ts +11 -0
- package/dist/langchain.js +25 -0
- package/dist/langchain.js.map +1 -0
- package/dist/langchain.mjs +23 -0
- package/dist/langchain.mjs.map +1 -0
- package/dist/types-df1EICn_.d.mts +165 -0
- package/dist/types-df1EICn_.d.ts +165 -0
- package/dist/ucp.d.mts +844 -0
- package/dist/ucp.d.ts +844 -0
- package/dist/ucp.js +616 -0
- package/dist/ucp.js.map +1 -0
- package/dist/ucp.mjs +614 -0
- package/dist/ucp.mjs.map +1 -0
- package/dist/vercel.d.mts +178 -0
- package/dist/vercel.d.ts +178 -0
- package/dist/vercel.js +143 -0
- package/dist/vercel.js.map +1 -0
- package/dist/vercel.mjs +138 -0
- package/dist/vercel.mjs.map +1 -0
- package/dist/x402.d.mts +209 -0
- package/dist/x402.d.ts +209 -0
- package/dist/x402.js +476 -0
- package/dist/x402.js.map +1 -0
- package/dist/x402.mjs +471 -0
- package/dist/x402.mjs.map +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/client.ts","../src/facilitator/sandbox-facilitator.ts","../src/protocols/x402/client.ts","../src/protocols/x402/provider.ts","../src/protocols/ap2/client.ts","../src/protocols/acp/client.ts","../src/protocols/ucp/client.ts","../src/capabilities/formatters.ts","../src/capabilities/client.ts","../src/capabilities/types.ts","../src/capabilities/index.ts","../src/langchain/tools.ts","../src/cards/types.ts","../src/cards/index.ts","../src/protocols/a2a/client.ts","../src/protocols/agent-wallets/client.ts","../src/protocols/mpp/client.ts","../src/types.ts","../src/auth.ts","../src/index.ts"],"names":["init_client","toOpenAIFunctions","getOpenAISystemMessage","toClaudeTools","getClaudeSystemMessage","toLangChainTools","init_types"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { PayOSEnvironment, EnvironmentConfig } from './types';\n\n/**\n * Environment-specific configuration\n */\nexport const ENVIRONMENT_CONFIGS: Record<PayOSEnvironment, EnvironmentConfig> = {\n sandbox: {\n apiUrl: 'https://sandbox.getsly.ai',\n facilitatorUrl: 'https://facilitator.x402.org', // x402.org Base Sepolia\n },\n testnet: {\n apiUrl: 'https://sandbox.getsly.ai',\n facilitatorUrl: 'https://facilitator.x402.org', // x402.org Base Sepolia\n },\n production: {\n apiUrl: 'https://api.getsly.ai',\n facilitatorUrl: 'https://facilitator.coinbase.com', // Coinbase CDP Base mainnet\n },\n};\n\n/**\n * Infer environment from API key prefix\n * - pk_test_* or pk_sandbox_* → sandbox\n * - pk_live_* → production\n */\nexport function inferEnvironmentFromKey(apiKey: string): PayOSEnvironment | undefined {\n if (apiKey.startsWith('pk_test_') || apiKey.startsWith('pk_sandbox_')) {\n return 'sandbox';\n }\n if (apiKey.startsWith('pk_live_')) {\n return 'production';\n }\n return undefined;\n}\n\n/**\n * Get configuration for an environment\n */\nexport function getEnvironmentConfig(environment: PayOSEnvironment): EnvironmentConfig {\n return ENVIRONMENT_CONFIGS[environment];\n}\n\n/**\n * Validate environment configuration\n */\nexport function validateEnvironment(\n environment: PayOSEnvironment,\n evmPrivateKey?: string\n): void {\n if (environment !== 'sandbox' && !evmPrivateKey) {\n throw new Error(\n `EVM private key is required for ${environment} environment. ` +\n 'Use sandbox mode for local development without blockchain.'\n );\n }\n}\n\n","import type {\n SlyConfig,\n SettlementQuoteRequest,\n SettlementQuote,\n CreateSettlementRequest,\n Settlement,\n ComplianceCheckRequest,\n ComplianceCheckResponse,\n CapabilitiesResponse,\n} from './types';\nimport { getEnvironmentConfig, inferEnvironmentFromKey } from './config';\n\n/**\n * Base API client for Sly\n *\n * Note: EVM key validation is intentionally NOT done here.\n * The base client only makes REST API calls (Bearer token auth).\n * Protocol-specific clients (x402, etc.) that need EVM signing\n * validate the key themselves.\n */\nexport class SlyClient {\n private apiKey: string;\n private apiUrl: string;\n\n constructor(config: SlyConfig) {\n this.apiKey = config.apiKey;\n\n // Resolve environment: explicit > inferred from key > default to sandbox\n const environment = config.environment\n ?? inferEnvironmentFromKey(config.apiKey)\n ?? 'sandbox';\n\n // Use custom API URL if provided, otherwise use environment default\n const envConfig = getEnvironmentConfig(environment);\n this.apiUrl = config.apiUrl || envConfig.apiUrl;\n }\n\n /**\n * Make an authenticated API request\n */\n public async request<T>(\n path: string,\n options: RequestInit = {}\n ): Promise<T> {\n const url = `${this.apiUrl}${path}`;\n \n const response = await fetch(url, {\n ...options,\n headers: {\n 'Authorization': `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n const errorData: any = await response.json().catch(() => ({ \n message: response.statusText \n }));\n const error = new Error(errorData.error || errorData.message || `HTTP ${response.status}`);\n (error as any).status = response.status;\n (error as any).data = errorData;\n throw error;\n }\n\n return response.json() as Promise<T>;\n }\n\n /**\n * Get a settlement quote\n */\n async getSettlementQuote(\n request: SettlementQuoteRequest\n ): Promise<SettlementQuote> {\n return this.request<SettlementQuote>('/v1/settlements/quote', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Create a settlement\n */\n async createSettlement(\n request: CreateSettlementRequest\n ): Promise<Settlement> {\n return this.request<Settlement>('/v1/settlements', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Get settlement status\n */\n async getSettlement(settlementId: string): Promise<Settlement> {\n return this.request<Settlement>(`/v1/settlements/${settlementId}`);\n }\n\n /**\n * Check compliance for a recipient\n */\n async checkCompliance(\n request: ComplianceCheckRequest\n ): Promise<ComplianceCheckResponse> {\n return this.request<ComplianceCheckResponse>('/v1/compliance/check', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Get API capabilities\n */\n async getCapabilities(): Promise<CapabilitiesResponse> {\n return this.request<CapabilitiesResponse>('/v1/capabilities');\n }\n}\n\n// Backward compatibility alias\nexport { SlyClient as PayOSClient };\n\n","import type {\n SandboxFacilitatorConfig,\n X402Payment,\n VerifyRequest,\n VerifyResponse,\n SettleRequest,\n SettleResponse,\n SupportedResponse,\n} from './types';\n\n/**\n * Sandbox Facilitator for x402 protocol\n * \n * Provides a mock blockchain facilitator that implements the x402\n * facilitator interface but skips actual blockchain verification.\n * \n * This enables local development and testing without:\n * - Gas fees\n * - Real USDC\n * - Network delays\n * - EVM private keys\n */\nexport class SandboxFacilitator {\n private config: Required<SandboxFacilitatorConfig>;\n\n constructor(config: SandboxFacilitatorConfig) {\n this.config = {\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n settlementDelayMs: config.settlementDelayMs ?? 0,\n failureRate: config.failureRate ?? 0,\n debug: config.debug ?? false,\n supportedSchemes: config.supportedSchemes ?? [\n {\n scheme: 'exact-evm',\n networks: ['eip155:8453', 'eip155:84532'], // Base mainnet and Sepolia\n },\n ],\n };\n\n if (this.config.debug) {\n console.log('[SandboxFacilitator] Initialized with config:', {\n apiUrl: this.config.apiUrl,\n settlementDelayMs: this.config.settlementDelayMs,\n failureRate: this.config.failureRate,\n });\n }\n }\n\n /**\n * Verify a payment payload\n * \n * In sandbox mode, this validates the structure but skips signature verification\n */\n async verify(request: VerifyRequest): Promise<VerifyResponse> {\n const { payment } = request;\n\n if (this.config.debug) {\n console.log('[SandboxFacilitator] Verifying payment:', payment);\n }\n\n // Validate required fields\n const requiredFields = ['scheme', 'network', 'amount', 'token', 'from', 'to'];\n for (const field of requiredFields) {\n if (!payment[field]) {\n return {\n valid: false,\n reason: `Missing required field: ${field}`,\n };\n }\n }\n\n // Validate scheme is supported\n const schemeSupported = this.config.supportedSchemes.some(\n (s) => s.scheme === payment.scheme\n );\n if (!schemeSupported) {\n return {\n valid: false,\n reason: `Unsupported scheme: ${payment.scheme}`,\n details: {\n supportedSchemes: this.config.supportedSchemes.map((s) => s.scheme),\n },\n };\n }\n\n // Validate network is supported for scheme\n const scheme = this.config.supportedSchemes.find(\n (s) => s.scheme === payment.scheme\n );\n if (scheme && !scheme.networks.includes(payment.network)) {\n return {\n valid: false,\n reason: `Unsupported network: ${payment.network} for scheme: ${payment.scheme}`,\n details: {\n supportedNetworks: scheme.networks,\n },\n };\n }\n\n // Validate amount is a valid number\n const amount = parseFloat(payment.amount);\n if (isNaN(amount) || amount <= 0) {\n return {\n valid: false,\n reason: `Invalid amount: ${payment.amount}`,\n };\n }\n\n // In sandbox mode, we skip signature verification\n // In production, this would verify the EIP-3009 signature\n\n return {\n valid: true,\n };\n }\n\n /**\n * Settle a payment\n * \n * In sandbox mode, this generates a mock transaction hash and\n * optionally records the payment in PayOS\n */\n async settle(request: SettleRequest): Promise<SettleResponse> {\n const { payment } = request;\n\n if (this.config.debug) {\n console.log('[SandboxFacilitator] Settling payment:', payment);\n }\n\n // First verify the payment\n const verification = await this.verify({ payment });\n if (!verification.valid) {\n throw new Error(`Payment verification failed: ${verification.reason}`);\n }\n\n // Simulate random failures if configured\n if (this.config.failureRate > 0) {\n const random = Math.random() * 100;\n if (random < this.config.failureRate) {\n throw new Error('Simulated settlement failure');\n }\n }\n\n // Simulate settlement delay if configured\n if (this.config.settlementDelayMs > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.config.settlementDelayMs)\n );\n }\n\n // Generate mock transaction hash\n const txHash = this.generateMockTxHash();\n\n // Record payment in PayOS (optional - may not be needed in pure sandbox)\n // This would call the PayOS API to create a transfer record\n // For now, we'll skip this to keep the facilitator independent\n\n if (this.config.debug) {\n console.log('[SandboxFacilitator] Settlement complete:', {\n txHash,\n amount: payment.amount,\n from: payment.from,\n to: payment.to,\n });\n }\n\n return {\n transactionHash: txHash,\n settled: true,\n timestamp: new Date().toISOString(),\n };\n }\n\n /**\n * Get supported schemes and networks\n */\n async supported(): Promise<SupportedResponse> {\n return {\n schemes: this.config.supportedSchemes,\n };\n }\n\n /**\n * Generate a realistic-looking mock transaction hash\n */\n private generateMockTxHash(): string {\n const chars = '0123456789abcdef';\n let hash = '0x';\n for (let i = 0; i < 64; i++) {\n hash += chars[Math.floor(Math.random() * chars.length)];\n }\n return hash;\n }\n}\n\n","import type {\n X402ClientConfig,\n X402ClientStatus,\n X402PaymentInfo,\n X402SettlementInfo,\n X402Response,\n} from './types';\nimport { getEnvironmentConfig, validateEnvironment } from '../../config';\nimport { SandboxFacilitator } from '../../facilitator/sandbox-facilitator';\n\n/**\n * x402 Client for making payments\n *\n * Automatically handles 402 responses by creating payments and retrying.\n * Supports sandbox mode (no blockchain) and production mode (real EVM).\n */\nexport class SlyX402Client {\n private config: Required<Omit<X402ClientConfig, 'evmPrivateKey' | 'onPayment' | 'onSettlement' | 'settleToRail'>> & {\n evmPrivateKey?: string;\n onPayment?: (payment: X402PaymentInfo) => void | Promise<void>;\n onSettlement?: (settlement: X402SettlementInfo) => void | Promise<void>;\n settleToRail?: 'pix' | 'spei' | 'none';\n };\n private dailySpent: number = 0;\n private lastResetDate: string;\n private sandboxFacilitator?: SandboxFacilitator;\n\n constructor(config: X402ClientConfig) {\n validateEnvironment(config.environment, config.evmPrivateKey);\n\n const envConfig = getEnvironmentConfig(config.environment);\n\n this.config = {\n apiKey: config.apiKey,\n environment: config.environment,\n evmPrivateKey: config.evmPrivateKey,\n facilitatorUrl: config.facilitatorUrl || envConfig.facilitatorUrl || '',\n maxAutoPayAmount: config.maxAutoPayAmount || '1.00',\n maxDailySpend: config.maxDailySpend || '100.00',\n onPayment: config.onPayment,\n onSettlement: config.onSettlement,\n settleToRail: config.settleToRail,\n };\n\n this.lastResetDate = new Date().toISOString().split('T')[0];\n\n // Initialize sandbox facilitator if in sandbox mode\n if (this.config.environment === 'sandbox') {\n this.sandboxFacilitator = new SandboxFacilitator({\n apiUrl: envConfig.apiUrl,\n apiKey: this.config.apiKey,\n });\n }\n }\n\n /**\n * Fetch a resource with automatic 402 payment handling\n */\n async fetch(url: string, options: RequestInit & { maxPayment?: string } = {}): Promise<Response> {\n const { maxPayment, ...fetchOptions } = options;\n\n // Make initial request\n let response = await fetch(url, fetchOptions);\n\n // If not 402, return response\n if (response.status !== 402) {\n return response;\n }\n\n // Parse 402 response\n const paymentRequired = await this.parse402Response(response);\n\n // Find acceptable payment option\n const acceptedOption = paymentRequired.accepts[0];\n if (!acceptedOption) {\n throw new Error('No acceptable payment options in 402 response');\n }\n\n // Check payment amount against limits\n const amount = parseFloat(acceptedOption.amount);\n const maxAmount = parseFloat(maxPayment || this.config.maxAutoPayAmount);\n\n if (amount > maxAmount) {\n throw new Error(\n `Payment amount ${acceptedOption.amount} exceeds max auto-pay amount ${maxPayment || this.config.maxAutoPayAmount}`\n );\n }\n\n // Check daily limit\n this.resetDailySpendIfNeeded();\n if (this.dailySpent + amount > parseFloat(this.config.maxDailySpend)) {\n throw new Error(\n `Payment would exceed daily limit. Spent: ${this.dailySpent}, Limit: ${this.config.maxDailySpend}`\n );\n }\n\n // Create payment\n const payment = await this.createPayment(acceptedOption);\n\n // Fire onPayment callback\n if (this.config.onPayment) {\n await this.config.onPayment({\n amount: acceptedOption.amount,\n currency: acceptedOption.token,\n from: payment.from,\n to: payment.to,\n scheme: acceptedOption.scheme,\n network: acceptedOption.network,\n timestamp: new Date().toISOString(),\n });\n }\n\n // Update daily spend\n this.dailySpent += amount;\n\n // Retry request with payment header\n response = await fetch(url, {\n ...fetchOptions,\n headers: {\n ...fetchOptions.headers,\n 'X-Payment': JSON.stringify(payment),\n },\n });\n\n // Fire onSettlement callback\n if (this.config.onSettlement && payment.transactionHash) {\n await this.config.onSettlement({\n transactionHash: payment.transactionHash,\n amount: acceptedOption.amount,\n currency: acceptedOption.token,\n timestamp: new Date().toISOString(),\n });\n }\n\n return response;\n }\n\n /**\n * Get client status\n */\n getStatus(): X402ClientStatus {\n this.resetDailySpendIfNeeded();\n\n return {\n environment: this.config.environment,\n dailySpent: this.dailySpent.toFixed(2),\n dailyLimit: this.config.maxDailySpend,\n walletAddress: this.getWalletAddress(),\n };\n }\n\n /**\n * Parse 402 response\n */\n private async parse402Response(response: Response): Promise<X402Response> {\n const body: any = await response.json();\n \n if (!body.accepts || !Array.isArray(body.accepts)) {\n throw new Error('Invalid 402 response: missing accepts array');\n }\n\n return {\n statusCode: 402,\n accepts: body.accepts,\n };\n }\n\n /**\n * Create payment based on environment\n */\n private async createPayment(option: X402Response['accepts'][0]): Promise<any> {\n if (this.config.environment === 'sandbox') {\n return this.createSandboxPayment(option);\n } else {\n return this.createBlockchainPayment(option);\n }\n }\n\n /**\n * Create sandbox payment (mock)\n */\n private async createSandboxPayment(option: X402Response['accepts'][0]): Promise<any> {\n if (!this.sandboxFacilitator) {\n throw new Error('Sandbox facilitator not initialized');\n }\n\n const payment = {\n scheme: option.scheme,\n network: option.network,\n amount: option.amount,\n token: option.token,\n from: '0x0000000000000000000000000000000000000001', // Mock address\n to: '0x0000000000000000000000000000000000000002', // Mock address\n };\n\n // Settle through sandbox facilitator\n const settlement = await this.sandboxFacilitator.settle({ payment });\n\n return {\n ...payment,\n transactionHash: settlement.transactionHash,\n };\n }\n\n /**\n * Create blockchain payment (real EVM)\n */\n private async createBlockchainPayment(_option: X402Response['accepts'][0]): Promise<any> {\n if (!this.config.evmPrivateKey) {\n throw new Error('EVM private key required for blockchain payments');\n }\n\n // In a real implementation, this would:\n // 1. Use @x402/evm to create an EIP-3009 transfer\n // 2. Sign with the private key\n // 3. Submit to the facilitator\n // 4. Return the payment proof\n\n // For now, throw an error as this requires the full @x402 integration\n throw new Error('Blockchain payments not yet implemented - use sandbox mode');\n }\n\n /**\n * Get wallet address based on environment\n */\n private getWalletAddress(): string | undefined {\n if (this.config.environment === 'sandbox') {\n return '0x0000000000000000000000000000000000000001';\n }\n\n // In production, derive from private key\n return undefined;\n }\n\n /**\n * Reset daily spend if date has changed\n */\n private resetDailySpendIfNeeded(): void {\n const today = new Date().toISOString().split('T')[0];\n if (today !== this.lastResetDate) {\n this.dailySpent = 0;\n this.lastResetDate = today;\n }\n }\n}\n\n// Backward compatibility alias\nexport { SlyX402Client as PayOSX402Client };\n\n","import type { Request, Response, NextFunction, RequestHandler } from 'express';\nimport type { SlyEnvironment } from '../../types';\nimport { getEnvironmentConfig } from '../../config';\nimport { SandboxFacilitator } from '../../facilitator/sandbox-facilitator';\n\n/**\n * x402 Provider configuration\n */\nexport interface X402ProviderConfig {\n /**\n * Sly API key\n */\n apiKey: string;\n\n /**\n * Environment (sandbox, testnet, production)\n */\n environment: SlyEnvironment;\n\n /**\n * Route configuration\n * Maps route patterns to prices\n */\n routes: Record<string, {\n price: string;\n description?: string;\n token?: string;\n }>;\n\n /**\n * Custom facilitator URL (overrides environment default)\n */\n facilitatorUrl?: string;\n}\n\n/**\n * x402 Provider for accepting payments\n *\n * Express middleware that returns 402 responses for protected routes\n * and verifies payments before serving content.\n */\nexport class SlyX402Provider {\n private config: Required<Omit<X402ProviderConfig, 'facilitatorUrl'>> & {\n facilitatorUrl?: string;\n };\n private sandboxFacilitator?: SandboxFacilitator;\n\n constructor(config: X402ProviderConfig) {\n const envConfig = getEnvironmentConfig(config.environment);\n\n this.config = {\n apiKey: config.apiKey,\n environment: config.environment,\n routes: config.routes,\n facilitatorUrl: config.facilitatorUrl || envConfig.facilitatorUrl,\n };\n\n // Initialize sandbox facilitator if in sandbox mode\n if (this.config.environment === 'sandbox') {\n this.sandboxFacilitator = new SandboxFacilitator({\n apiUrl: envConfig.apiUrl,\n apiKey: this.config.apiKey,\n });\n }\n }\n\n /**\n * Create Express middleware\n */\n middleware(): RequestHandler {\n return async (req: Request, res: Response, next: NextFunction) => {\n try {\n // Check if route is protected\n const routeConfig = this.getRouteConfig(req);\n if (!routeConfig) {\n // Route not protected, continue\n return next();\n }\n\n // Check for payment header\n const paymentHeader = req.headers['x-payment'] as string | undefined;\n\n if (!paymentHeader) {\n // No payment, return 402\n return this.return402(req, res, routeConfig);\n }\n\n // Verify payment\n const isValid = await this.verifyPayment(paymentHeader, routeConfig);\n\n if (!isValid) {\n // Invalid payment, return 402\n return this.return402(req, res, routeConfig);\n }\n\n // Payment valid, continue to route handler\n next();\n } catch (error: any) {\n res.status(500).json({\n error: 'Payment verification failed',\n message: error.message,\n });\n }\n };\n }\n\n /**\n * Get route configuration for request\n */\n private getRouteConfig(req: Request): X402ProviderConfig['routes'][string] | null {\n const routeKey = `${req.method} ${req.path}`;\n \n // Exact match\n if (this.config.routes[routeKey]) {\n return this.config.routes[routeKey];\n }\n\n // Pattern match (simple wildcard support)\n for (const [pattern, config] of Object.entries(this.config.routes)) {\n if (this.matchRoute(pattern, routeKey)) {\n return config;\n }\n }\n\n return null;\n }\n\n /**\n * Simple route pattern matching\n */\n private matchRoute(pattern: string, route: string): boolean {\n // Convert pattern to regex\n const regexPattern = pattern\n .replace(/\\*/g, '.*')\n .replace(/\\//g, '\\\\/');\n \n const regex = new RegExp(`^${regexPattern}$`);\n return regex.test(route);\n }\n\n /**\n * Return 402 Payment Required response\n */\n private return402(\n _req: Request,\n res: Response,\n routeConfig: X402ProviderConfig['routes'][string]\n ): void {\n const scheme = 'exact-evm';\n const network = this.config.environment === 'sandbox' \n ? 'eip155:8453' // Base mainnet (mock)\n : 'eip155:8453'; // Base mainnet (real)\n\n res.status(402).json({\n statusCode: 402,\n message: 'Payment Required',\n accepts: [\n {\n scheme,\n network,\n token: routeConfig.token || 'USDC',\n amount: routeConfig.price,\n facilitator: this.config.facilitatorUrl,\n description: routeConfig.description,\n },\n ],\n });\n }\n\n /**\n * Verify payment\n */\n private async verifyPayment(\n paymentHeader: string,\n routeConfig: X402ProviderConfig['routes'][string]\n ): Promise<boolean> {\n try {\n const payment = JSON.parse(paymentHeader);\n\n // Check amount matches\n if (payment.amount !== routeConfig.price) {\n return false;\n }\n\n // Check token matches\n const expectedToken = routeConfig.token || 'USDC';\n if (payment.token !== expectedToken) {\n return false;\n }\n\n // Verify with facilitator\n if (this.config.environment === 'sandbox') {\n return this.verifySandboxPayment(payment);\n } else {\n return this.verifyBlockchainPayment(payment);\n }\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Verify sandbox payment\n */\n private async verifySandboxPayment(payment: any): Promise<boolean> {\n if (!this.sandboxFacilitator) {\n return false;\n }\n\n const result = await this.sandboxFacilitator.verify({ payment });\n return result.valid;\n }\n\n /**\n * Verify blockchain payment\n */\n private async verifyBlockchainPayment(_payment: any): Promise<boolean> {\n // In production, this would:\n // 1. Call the real facilitator to verify the payment\n // 2. Check the signature\n // 3. Verify the transaction on-chain\n\n // For now, throw an error as this requires full @x402 integration\n throw new Error('Blockchain payment verification not yet implemented - use sandbox mode');\n }\n}\n\n// Backward compatibility alias\nexport { SlyX402Provider as PayOSX402Provider };\n\n","/**\n * AP2 Client - Google Agent-to-Agent Protocol\n * \n * Wraps PayOS AP2 API endpoints for mandate-based payments.\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n Mandate,\n MandateWithExecutions,\n CreateMandateRequest,\n ExecuteMandateRequest,\n ExecuteMandateResponse,\n ListMandatesOptions,\n ListMandatesResponse,\n} from './types';\n\nexport class AP2Client {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Create a new AP2 mandate\n * \n * @example\n * ```typescript\n * const mandate = await payos.ap2.createMandate({\n * mandate_id: 'mdt_unique_123',\n * mandate_type: 'payment',\n * agent_id: 'agent_ai_assistant',\n * account_id: 'acct_uuid',\n * authorized_amount: 100.00,\n * currency: 'USD',\n * });\n * ```\n */\n public async createMandate(request: CreateMandateRequest): Promise<Mandate> {\n const response = await this.client.request<{ data: Mandate }>(\n '/v1/ap2/mandates',\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * List mandates with optional filtering\n * \n * @example\n * ```typescript\n * const { data, pagination } = await payos.ap2.listMandates({\n * status: 'active',\n * agent_id: 'agent_ai_assistant',\n * limit: 50,\n * });\n * ```\n */\n public async listMandates(options: ListMandatesOptions = {}): Promise<ListMandatesResponse> {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\n if (options.agent_id) params.append('agent_id', options.agent_id);\n if (options.account_id) params.append('account_id', options.account_id);\n if (options.page) params.append('page', options.page.toString());\n if (options.limit) params.append('limit', options.limit.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/ap2/mandates?${queryString}` : '/v1/ap2/mandates';\n\n return this.client.request<ListMandatesResponse>(path);\n }\n\n /**\n * Get mandate details with execution history\n * \n * @example\n * ```typescript\n * const mandate = await payos.ap2.getMandate('mdt_id');\n * console.log(mandate.remaining_amount);\n * console.log(mandate.executions.length);\n * ```\n */\n public async getMandate(mandateId: string): Promise<MandateWithExecutions> {\n const response = await this.client.request<{ data: MandateWithExecutions }>(\n `/v1/ap2/mandates/${mandateId}`\n );\n return response.data;\n }\n\n /**\n * Execute a payment against a mandate\n * \n * @example\n * ```typescript\n * const result = await payos.ap2.executeMandate('mdt_id', {\n * amount: 25.00,\n * currency: 'USD',\n * description: 'Monthly subscription',\n * });\n * \n * console.log(result.transfer_id);\n * console.log(result.mandate.remaining_amount);\n * ```\n */\n public async executeMandate(\n mandateId: string,\n request: ExecuteMandateRequest\n ): Promise<ExecuteMandateResponse> {\n const response = await this.client.request<{ data: ExecuteMandateResponse }>(\n `/v1/ap2/mandates/${mandateId}/execute`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * Cancel an active mandate\n * \n * @example\n * ```typescript\n * const result = await payos.ap2.cancelMandate('mdt_id');\n * console.log(result.status); // 'cancelled'\n * ```\n */\n public async cancelMandate(mandateId: string): Promise<Mandate> {\n const response = await this.client.request<{ data: Mandate }>(\n `/v1/ap2/mandates/${mandateId}/cancel`,\n {\n method: 'PATCH',\n }\n );\n return response.data;\n }\n\n /**\n * Get AP2 analytics\n * \n * @example\n * ```typescript\n * const analytics = await payos.ap2.getAnalytics('30d');\n * console.log(analytics.summary.totalRevenue);\n * console.log(analytics.summary.activeMandates);\n * ```\n */\n public async getAnalytics(period: '24h' | '7d' | '30d' | '90d' | '1y' = '30d') {\n const response = await this.client.request<{ data: any }>(\n `/v1/ap2/analytics?period=${period}`\n );\n return response.data;\n }\n}\n\n","/**\n * ACP Client - Agentic Commerce Protocol (Stripe/OpenAI)\n * \n * Wraps PayOS ACP API endpoints for checkout-based payments.\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n Checkout,\n CheckoutWithItems,\n CreateCheckoutRequest,\n CompleteCheckoutRequest,\n CompleteCheckoutResponse,\n ListCheckoutsOptions,\n ListCheckoutsResponse,\n} from './types';\n\nexport class ACPClient {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Create a new ACP checkout session\n * \n * @example\n * ```typescript\n * const checkout = await payos.acp.createCheckout({\n * checkout_id: 'checkout_unique_123',\n * agent_id: 'agent_shopping_assistant',\n * account_id: 'acct_uuid',\n * merchant_id: 'merchant_store',\n * items: [\n * {\n * name: 'Product 1',\n * quantity: 2,\n * unit_price: 50.00,\n * total_price: 100.00,\n * },\n * ],\n * tax_amount: 10.00,\n * shipping_amount: 5.00,\n * });\n * ```\n */\n public async createCheckout(request: CreateCheckoutRequest): Promise<CheckoutWithItems> {\n const response = await this.client.request<{ data: CheckoutWithItems }>(\n '/v1/acp/checkouts',\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * List checkouts with optional filtering\n * \n * @example\n * ```typescript\n * const { data, pagination } = await payos.acp.listCheckouts({\n * status: 'pending',\n * agent_id: 'agent_shopping_assistant',\n * limit: 20,\n * });\n * ```\n */\n public async listCheckouts(options: ListCheckoutsOptions = {}): Promise<ListCheckoutsResponse> {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\n if (options.agent_id) params.append('agent_id', options.agent_id);\n if (options.merchant_id) params.append('merchant_id', options.merchant_id);\n if (options.customer_id) params.append('customer_id', options.customer_id);\n if (options.limit) params.append('limit', options.limit.toString());\n if (options.offset) params.append('offset', options.offset.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/acp/checkouts?${queryString}` : '/v1/acp/checkouts';\n\n return this.client.request<ListCheckoutsResponse>(path);\n }\n\n /**\n * Get checkout details with items\n * \n * @example\n * ```typescript\n * const checkout = await payos.acp.getCheckout('checkout_id');\n * console.log(checkout.items);\n * console.log(checkout.total_amount);\n * ```\n */\n public async getCheckout(checkoutId: string): Promise<CheckoutWithItems> {\n const response = await this.client.request<{ data: CheckoutWithItems }>(\n `/v1/acp/checkouts/${checkoutId}`\n );\n return response.data;\n }\n\n /**\n * Complete a checkout with SharedPaymentToken\n * \n * @example\n * ```typescript\n * const result = await payos.acp.completeCheckout('checkout_id', {\n * shared_payment_token: 'spt_...',\n * payment_method: 'card',\n * });\n * \n * console.log(result.transfer_id);\n * console.log(result.status); // 'completed'\n * ```\n */\n public async completeCheckout(\n checkoutId: string,\n request: CompleteCheckoutRequest\n ): Promise<CompleteCheckoutResponse> {\n const response = await this.client.request<{ data: CompleteCheckoutResponse }>(\n `/v1/acp/checkouts/${checkoutId}/complete`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n return response.data;\n }\n\n /**\n * Cancel a checkout\n * \n * @example\n * ```typescript\n * const result = await payos.acp.cancelCheckout('checkout_id');\n * console.log(result.status); // 'cancelled'\n * ```\n */\n public async cancelCheckout(checkoutId: string): Promise<Checkout> {\n const response = await this.client.request<{ data: Checkout }>(\n `/v1/acp/checkouts/${checkoutId}/cancel`,\n {\n method: 'PATCH',\n }\n );\n return response.data;\n }\n\n /**\n * Get ACP analytics\n * \n * @example\n * ```typescript\n * const analytics = await payos.acp.getAnalytics('30d');\n * console.log(analytics.summary.totalRevenue);\n * console.log(analytics.summary.averageOrderValue);\n * ```\n */\n public async getAnalytics(period: '24h' | '7d' | '30d' | '90d' | '1y' = '30d') {\n const response = await this.client.request<{ data: any }>(\n `/v1/acp/analytics?period=${period}`\n );\n return response.data;\n }\n}\n\n","/**\n * UCP Client - Universal Commerce Protocol\n *\n * Wraps PayOS UCP API endpoints for settlement and merchant discovery.\n *\n * @see Story 43.9: UCP Client Module\n * @see https://ucp.dev/specification/overview/\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n UCPProfile,\n UCPCorridor,\n UCPQuoteRequest,\n UCPQuote,\n UCPTokenRequest,\n UCPToken,\n UCPSettleRequest,\n UCPSettlement,\n ListSettlementsOptions,\n ListSettlementsResponse,\n UCPHandlerInfo,\n UCPCheckoutRequest,\n UCPCheckout,\n UCPCompleteCheckoutRequest,\n UCPOrder,\n // PayOS-hosted types (Phases 2-4)\n PayOSCheckout,\n CreatePayOSCheckoutRequest,\n UpdatePayOSCheckoutRequest,\n PayOSOrder,\n PayOSOrderStatus,\n ListPayOSOrdersOptions,\n ListPayOSOrdersResponse,\n PayOSExpectation,\n PayOSFulfillmentEvent,\n PayOSAdjustment,\n RegisterOAuthClientRequest,\n RegisterOAuthClientResponse,\n UCPLinkedAccount,\n UCPTokenResponse,\n UCPAuthorizationInfo,\n UCPConsentRequest,\n UCPConsentResponse,\n UCPScopeInfo,\n} from './types';\n\n// Profile cache for discovered merchants\nconst profileCache = new Map<string, { profile: UCPProfile; fetchedAt: number }>();\nconst PROFILE_CACHE_TTL_MS = 60 * 60 * 1000; // 1 hour\n\nexport class UCPClient {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n // ===========================================================================\n // Discovery\n // ===========================================================================\n\n /**\n * Discover a UCP merchant's capabilities\n *\n * Fetches and caches the merchant's UCP profile from /.well-known/ucp\n *\n * @example\n * ```typescript\n * const merchant = await payos.ucp.discover('https://shop.example.com');\n * console.log(merchant.ucp.version);\n * console.log(merchant.payment?.handlers);\n * ```\n */\n public async discover(merchantUrl: string): Promise<UCPProfile> {\n // Normalize URL\n const baseUrl = merchantUrl.replace(/\\/$/, '');\n const profileUrl = `${baseUrl}/.well-known/ucp`;\n\n // Check cache\n const cached = profileCache.get(profileUrl);\n if (cached && Date.now() - cached.fetchedAt < PROFILE_CACHE_TTL_MS) {\n return cached.profile;\n }\n\n // Fetch profile\n const response = await fetch(profileUrl, {\n headers: {\n Accept: 'application/json',\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to discover UCP profile: ${response.status} ${response.statusText}`);\n }\n\n const profile = (await response.json()) as UCPProfile;\n\n // Validate basic structure\n if (!profile.ucp?.version) {\n throw new Error('Invalid UCP profile: missing ucp.version');\n }\n\n // Cache the profile\n profileCache.set(profileUrl, {\n profile,\n fetchedAt: Date.now(),\n });\n\n return profile;\n }\n\n /**\n * Get PayOS's own UCP profile\n *\n * @example\n * ```typescript\n * const profile = await payos.ucp.getProfile();\n * console.log(profile.payment?.handlers);\n * ```\n */\n public async getProfile(): Promise<UCPProfile> {\n return this.client.request<UCPProfile>('/.well-known/ucp');\n }\n\n /**\n * Get available settlement corridors\n *\n * @example\n * ```typescript\n * const corridors = await payos.ucp.getCorridors();\n * console.log(corridors.find(c => c.rail === 'pix'));\n * ```\n */\n public async getCorridors(): Promise<UCPCorridor[]> {\n const response = await this.client.request<{ corridors: UCPCorridor[] }>(\n '/v1/ucp/corridors'\n );\n return response.corridors;\n }\n\n /**\n * Get UCP handler info\n *\n * @example\n * ```typescript\n * const info = await payos.ucp.getHandlerInfo();\n * console.log(info.handler.name); // com.payos.latam_settlement\n * ```\n */\n public async getHandlerInfo(): Promise<UCPHandlerInfo> {\n return this.client.request<UCPHandlerInfo>('/v1/ucp/info');\n }\n\n // ===========================================================================\n // Quotes\n // ===========================================================================\n\n /**\n * Get an FX quote for a settlement corridor\n *\n * @example\n * ```typescript\n * const quote = await payos.ucp.getQuote({\n * corridor: 'pix',\n * amount: 100,\n * currency: 'USD',\n * });\n * console.log(`${quote.from_amount} USD = ${quote.to_amount} BRL`);\n * ```\n */\n public async getQuote(request: UCPQuoteRequest): Promise<UCPQuote> {\n return this.client.request<UCPQuote>('/v1/ucp/quote', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n // ===========================================================================\n // Token Acquisition (Payment Handler flow)\n // ===========================================================================\n\n /**\n * Acquire a settlement token for completing a UCP checkout\n *\n * Tokens are valid for 15 minutes and lock in the FX rate.\n *\n * @example\n * ```typescript\n * const token = await payos.ucp.acquireToken({\n * corridor: 'pix',\n * amount: 100,\n * currency: 'USD',\n * recipient: {\n * type: 'pix',\n * pix_key: '12345678901',\n * pix_key_type: 'cpf',\n * name: 'Maria Silva',\n * },\n * });\n *\n * console.log(token.token); // ucp_tok_...\n * console.log(token.quote.to_amount); // 595.00 BRL\n * ```\n */\n public async acquireToken(request: UCPTokenRequest): Promise<UCPToken> {\n return this.client.request<UCPToken>('/v1/ucp/tokens', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n // ===========================================================================\n // Settlement Execution\n // ===========================================================================\n\n /**\n * Complete settlement using a previously acquired token\n *\n * @example\n * ```typescript\n * const settlement = await payos.ucp.settle({\n * token: 'ucp_tok_...',\n * idempotency_key: 'checkout_12345',\n * });\n *\n * console.log(settlement.status); // pending\n * console.log(settlement.id); // Use this to track status\n * ```\n */\n public async settle(request: UCPSettleRequest): Promise<UCPSettlement> {\n return this.client.request<UCPSettlement>('/v1/ucp/settle', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Get settlement status by ID\n *\n * @example\n * ```typescript\n * const settlement = await payos.ucp.getSettlement('uuid');\n * if (settlement.status === 'completed') {\n * console.log(`Completed at ${settlement.completed_at}`);\n * }\n * ```\n */\n public async getSettlement(settlementId: string): Promise<UCPSettlement> {\n return this.client.request<UCPSettlement>(`/v1/ucp/settlements/${settlementId}`);\n }\n\n /**\n * List settlements with optional filtering\n *\n * @example\n * ```typescript\n * const { data, pagination } = await payos.ucp.listSettlements({\n * status: 'completed',\n * corridor: 'pix',\n * limit: 50,\n * });\n * ```\n */\n public async listSettlements(\n options: ListSettlementsOptions = {}\n ): Promise<ListSettlementsResponse> {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\n if (options.corridor) params.append('corridor', options.corridor);\n if (options.limit) params.append('limit', options.limit.toString());\n if (options.offset) params.append('offset', options.offset.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/ucp/settlements?${queryString}` : '/v1/ucp/settlements';\n\n return this.client.request<ListSettlementsResponse>(path);\n }\n\n // ===========================================================================\n // Checkout (Consuming UCP Merchants)\n // ===========================================================================\n\n /**\n * Create a checkout session with a UCP merchant\n *\n * @example\n * ```typescript\n * const checkout = await payos.ucp.createCheckout('https://shop.example.com', {\n * line_items: [\n * { product_id: 'prod_123', quantity: 2 },\n * ],\n * buyer: { email: 'buyer@example.com' },\n * });\n *\n * console.log(checkout.totals.total);\n * ```\n */\n public async createCheckout(\n merchantUrl: string,\n request: UCPCheckoutRequest\n ): Promise<UCPCheckout> {\n // Discover merchant to get checkout endpoint\n const profile = await this.discover(merchantUrl);\n\n if (!profile.checkout?.endpoint) {\n throw new Error('Merchant does not support UCP checkout');\n }\n\n const response = await fetch(profile.checkout.endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({}));\n throw new Error(`Failed to create checkout: ${response.status} - ${JSON.stringify(error)}`);\n }\n\n return (await response.json()) as UCPCheckout;\n }\n\n /**\n * Complete a checkout with PayOS LATAM settlement\n *\n * This is a convenience method that:\n * 1. Acquires a settlement token\n * 2. Completes the checkout with the merchant\n *\n * @example\n * ```typescript\n * const order = await payos.ucp.completeCheckout(\n * 'https://shop.example.com',\n * checkout.id,\n * {\n * corridor: 'pix',\n * recipient: {\n * type: 'pix',\n * pix_key: '12345678901',\n * pix_key_type: 'cpf',\n * name: 'Maria Silva',\n * },\n * }\n * );\n *\n * console.log(order.id);\n * console.log(order.payment.settlement_id);\n * ```\n */\n public async completeCheckout(\n merchantUrl: string,\n checkoutId: string,\n settlement: {\n corridor: 'pix' | 'spei';\n recipient: UCPTokenRequest['recipient'];\n }\n ): Promise<UCPOrder> {\n // Get checkout details to know the amount\n const profile = await this.discover(merchantUrl);\n\n if (!profile.checkout?.endpoint) {\n throw new Error('Merchant does not support UCP checkout');\n }\n\n // Fetch checkout to get amount\n const checkoutResponse = await fetch(`${profile.checkout.endpoint}/${checkoutId}`, {\n headers: {\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n });\n\n if (!checkoutResponse.ok) {\n throw new Error(`Failed to fetch checkout: ${checkoutResponse.status}`);\n }\n\n const checkout = (await checkoutResponse.json()) as UCPCheckout;\n\n // Acquire settlement token\n const token = await this.acquireToken({\n corridor: settlement.corridor,\n amount: checkout.totals.total,\n currency: checkout.totals.currency as 'USD' | 'USDC',\n recipient: settlement.recipient,\n });\n\n // Complete checkout with merchant\n const completeRequest: UCPCompleteCheckoutRequest = {\n payment_handler: 'payos_latam',\n payment_data: {\n token: token.token,\n },\n };\n\n const completeResponse = await fetch(`${profile.checkout.endpoint}/${checkoutId}/complete`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n body: JSON.stringify(completeRequest),\n });\n\n if (!completeResponse.ok) {\n const error = await completeResponse.json().catch(() => ({}));\n throw new Error(`Failed to complete checkout: ${completeResponse.status} - ${JSON.stringify(error)}`);\n }\n\n return (await completeResponse.json()) as UCPOrder;\n }\n\n // ===========================================================================\n // Utilities\n // ===========================================================================\n\n /**\n * Clear the profile cache (useful for testing)\n */\n public clearCache(): void {\n profileCache.clear();\n }\n\n /**\n * Check if PayOS supports a specific corridor\n *\n * @example\n * ```typescript\n * if (await payos.ucp.supportsCorridors('USD', 'BRL', 'pix')) {\n * // Can settle via Pix\n * }\n * ```\n */\n public async supportsCorridor(\n sourceCurrency: string,\n destinationCurrency: string,\n rail: string\n ): Promise<boolean> {\n const corridors = await this.getCorridors();\n return corridors.some(\n (c) =>\n c.source_currency === sourceCurrency &&\n c.destination_currency === destinationCurrency &&\n c.rail === rail\n );\n }\n\n /**\n * Create Pix recipient helper\n *\n * @example\n * ```typescript\n * const recipient = payos.ucp.createPixRecipient({\n * pix_key: '12345678901',\n * pix_key_type: 'cpf',\n * name: 'Maria Silva',\n * });\n * ```\n */\n public createPixRecipient(params: {\n pix_key: string;\n pix_key_type: 'cpf' | 'cnpj' | 'email' | 'phone' | 'evp';\n name: string;\n tax_id?: string;\n }): UCPTokenRequest['recipient'] {\n return {\n type: 'pix',\n ...params,\n };\n }\n\n /**\n * Create SPEI recipient helper\n *\n * @example\n * ```typescript\n * const recipient = payos.ucp.createSpeiRecipient({\n * clabe: '012345678901234567',\n * name: 'Juan Garcia',\n * });\n * ```\n */\n public createSpeiRecipient(params: {\n clabe: string;\n name: string;\n rfc?: string;\n }): UCPTokenRequest['recipient'] {\n return {\n type: 'spei',\n ...params,\n };\n }\n\n // ===========================================================================\n // PayOS-Hosted Checkout Sessions (Phase 2)\n // ===========================================================================\n\n /**\n * Create a PayOS-hosted checkout session\n *\n * @example\n * ```typescript\n * const checkout = await payos.ucp.checkouts.create({\n * currency: 'USD',\n * line_items: [\n * { id: 'item_1', name: 'Product', quantity: 1, unit_price: 1000, total_price: 1000, currency: 'USD' }\n * ],\n * buyer: { email: 'buyer@example.com' },\n * });\n * ```\n */\n public get checkouts() {\n return {\n create: async (request: CreatePayOSCheckoutRequest): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>('/v1/ucp/checkouts', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n },\n\n get: async (checkoutId: string): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}`);\n },\n\n update: async (checkoutId: string, request: UpdatePayOSCheckoutRequest): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}`, {\n method: 'PUT',\n body: JSON.stringify(request),\n });\n },\n\n complete: async (checkoutId: string): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}/complete`, {\n method: 'POST',\n });\n },\n\n cancel: async (checkoutId: string): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}/cancel`, {\n method: 'POST',\n });\n },\n\n addPaymentInstrument: async (\n checkoutId: string,\n instrument: { id: string; handler: string; type: string; last4?: string; brand?: string }\n ): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}/instruments`, {\n method: 'POST',\n body: JSON.stringify(instrument),\n });\n },\n };\n }\n\n // ===========================================================================\n // PayOS Orders (Phase 3)\n // ===========================================================================\n\n /**\n * Manage PayOS orders\n *\n * @example\n * ```typescript\n * const order = await payos.ucp.orders.get('ord_123');\n * const orders = await payos.ucp.orders.list({ status: 'processing' });\n * ```\n */\n public get orders() {\n return {\n get: async (orderId: string): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}`);\n },\n\n list: async (options: ListPayOSOrdersOptions = {}): Promise<ListPayOSOrdersResponse> => {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\n if (options.limit) params.append('limit', options.limit.toString());\n if (options.offset) params.append('offset', options.offset.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/ucp/orders?${queryString}` : '/v1/ucp/orders';\n\n return this.client.request<ListPayOSOrdersResponse>(path);\n },\n\n updateStatus: async (orderId: string, status: PayOSOrderStatus): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/status`, {\n method: 'PUT',\n body: JSON.stringify({ status }),\n });\n },\n\n cancel: async (orderId: string, reason?: string): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/cancel`, {\n method: 'POST',\n body: JSON.stringify({ reason }),\n });\n },\n\n addExpectation: async (\n orderId: string,\n expectation: Omit<PayOSExpectation, 'id'>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/expectations`, {\n method: 'POST',\n body: JSON.stringify(expectation),\n });\n },\n\n updateExpectation: async (\n orderId: string,\n expectationId: string,\n updates: Partial<Omit<PayOSExpectation, 'id'>>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(\n `/v1/ucp/orders/${orderId}/expectations/${expectationId}`,\n {\n method: 'PUT',\n body: JSON.stringify(updates),\n }\n );\n },\n\n addEvent: async (\n orderId: string,\n event: Omit<PayOSFulfillmentEvent, 'id' | 'timestamp'>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/events`, {\n method: 'POST',\n body: JSON.stringify(event),\n });\n },\n\n getEvents: async (orderId: string): Promise<{ data: PayOSFulfillmentEvent[] }> => {\n return this.client.request<{ data: PayOSFulfillmentEvent[] }>(\n `/v1/ucp/orders/${orderId}/events`\n );\n },\n\n addAdjustment: async (\n orderId: string,\n adjustment: Omit<PayOSAdjustment, 'id' | 'created_at'>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/adjustments`, {\n method: 'POST',\n body: JSON.stringify(adjustment),\n });\n },\n };\n }\n\n // ===========================================================================\n // Identity Linking (Phase 4)\n // ===========================================================================\n\n /**\n * OAuth 2.0 identity linking for AI agents/platforms\n *\n * @example\n * ```typescript\n * // Register an OAuth client\n * const { client, client_secret } = await payos.ucp.identity.registerClient({\n * name: 'My AI Agent',\n * redirect_uris: ['https://myagent.com/callback'],\n * });\n *\n * // List linked accounts\n * const accounts = await payos.ucp.identity.listLinkedAccounts({ buyer_id: 'buyer_123' });\n * ```\n */\n public get identity() {\n return {\n /**\n * Register an OAuth client (platform/agent)\n */\n registerClient: async (request: RegisterOAuthClientRequest): Promise<RegisterOAuthClientResponse> => {\n return this.client.request<RegisterOAuthClientResponse>('/v1/ucp/identity/clients', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n },\n\n /**\n * Get authorization info for consent screen\n */\n getAuthorizationInfo: async (params: {\n response_type: 'code';\n client_id: string;\n redirect_uri: string;\n scope: string;\n state: string;\n code_challenge?: string;\n code_challenge_method?: 'S256' | 'plain';\n }): Promise<UCPAuthorizationInfo> => {\n const searchParams = new URLSearchParams();\n searchParams.append('response_type', params.response_type);\n searchParams.append('client_id', params.client_id);\n searchParams.append('redirect_uri', params.redirect_uri);\n searchParams.append('scope', params.scope);\n searchParams.append('state', params.state);\n if (params.code_challenge) {\n searchParams.append('code_challenge', params.code_challenge);\n }\n if (params.code_challenge_method) {\n searchParams.append('code_challenge_method', params.code_challenge_method);\n }\n\n return this.client.request<UCPAuthorizationInfo>(\n `/v1/ucp/identity/authorize?${searchParams.toString()}`\n );\n },\n\n /**\n * Submit consent decision (after user authenticates)\n */\n submitConsent: async (request: UCPConsentRequest): Promise<UCPConsentResponse> => {\n return this.client.request<UCPConsentResponse>('/v1/ucp/identity/authorize/consent', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n },\n\n /**\n * Exchange authorization code for tokens\n */\n exchangeCode: async (params: {\n client_id: string;\n client_secret?: string;\n code: string;\n redirect_uri: string;\n code_verifier?: string;\n }): Promise<UCPTokenResponse> => {\n return this.client.request<UCPTokenResponse>('/v1/ucp/identity/token', {\n method: 'POST',\n body: JSON.stringify({\n grant_type: 'authorization_code',\n ...params,\n }),\n });\n },\n\n /**\n * Refresh tokens\n */\n refreshTokens: async (params: {\n client_id: string;\n client_secret?: string;\n refresh_token: string;\n }): Promise<UCPTokenResponse> => {\n return this.client.request<UCPTokenResponse>('/v1/ucp/identity/token', {\n method: 'POST',\n body: JSON.stringify({\n grant_type: 'refresh_token',\n ...params,\n }),\n });\n },\n\n /**\n * Revoke a token\n */\n revokeToken: async (params: {\n token: string;\n token_type_hint?: 'access_token' | 'refresh_token';\n client_id: string;\n client_secret?: string;\n }): Promise<{ success: boolean }> => {\n return this.client.request<{ success: boolean }>('/v1/ucp/identity/revoke', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n },\n\n /**\n * List linked accounts\n */\n listLinkedAccounts: async (params: {\n buyer_id?: string;\n platform_id?: string;\n limit?: number;\n offset?: number;\n }): Promise<{ data: UCPLinkedAccount[]; pagination?: { limit: number; offset: number; total: number } }> => {\n const searchParams = new URLSearchParams();\n if (params.buyer_id) searchParams.append('buyer_id', params.buyer_id);\n if (params.platform_id) searchParams.append('platform_id', params.platform_id);\n if (params.limit) searchParams.append('limit', params.limit.toString());\n if (params.offset) searchParams.append('offset', params.offset.toString());\n\n return this.client.request<{ data: UCPLinkedAccount[]; pagination?: { limit: number; offset: number; total: number } }>(\n `/v1/ucp/identity/linked-accounts?${searchParams.toString()}`\n );\n },\n\n /**\n * Unlink an account\n */\n unlinkAccount: async (accountId: string, buyerId: string): Promise<{ success: boolean }> => {\n return this.client.request<{ success: boolean }>(\n `/v1/ucp/identity/linked-accounts/${accountId}?buyer_id=${buyerId}`,\n { method: 'DELETE' }\n );\n },\n\n /**\n * Get available scopes\n */\n getScopes: async (): Promise<{ data: UCPScopeInfo[] }> => {\n return this.client.request<{ data: UCPScopeInfo[] }>('/v1/ucp/identity/scopes');\n },\n };\n }\n}\n","/**\n * Formatters for converting PayOS capabilities to AI agent tool formats\n * - OpenAI function-calling format\n * - Claude tool format\n */\n\nimport { Capability, CapabilitiesResponse } from '../types';\n\n/**\n * OpenAI function-calling schema\n * https://platform.openai.com/docs/guides/function-calling\n */\nexport interface OpenAIFunction {\n name: string;\n description: string;\n parameters: {\n type: 'object';\n properties: Record<string, {\n type: string;\n description?: string;\n enum?: string[];\n }>;\n required: string[];\n };\n}\n\n/**\n * Claude tool schema (Anthropic Messages API)\n * https://docs.anthropic.com/claude/docs/tool-use\n */\nexport interface ClaudeTool {\n name: string;\n description: string;\n input_schema: {\n type: 'object';\n properties: Record<string, {\n type: string;\n description?: string;\n enum?: string[];\n }>;\n required: string[];\n };\n}\n\n/**\n * LangChain tool schema\n * https://js.langchain.com/docs/modules/agents/tools/\n */\nexport interface LangChainTool {\n name: string;\n description: string;\n schema: {\n type: 'object';\n properties: Record<string, {\n type: string;\n description?: string;\n enum?: string[];\n }>;\n required: string[];\n };\n}\n\n/**\n * Extract JSON schema from parameter string\n * Capabilities store parameters as type names like \"SettlementQuoteRequest\"\n * This creates a simple schema representation\n */\nfunction createSchemaFromParameterType(paramType: string): {\n properties: Record<string, any>;\n required: string[];\n} {\n // For now, create a simple generic schema\n // In a full implementation, this would introspect the actual type definitions\n return {\n properties: {\n data: {\n type: 'object',\n description: `${paramType} object`,\n },\n },\n required: ['data'],\n };\n}\n\n/**\n * Convert a PayOS capability to OpenAI function format\n */\nexport function toOpenAIFunction(capability: Capability): OpenAIFunction {\n const schema = typeof capability.parameters === 'string' \n ? createSchemaFromParameterType(capability.parameters)\n : { properties: {}, required: [] };\n\n return {\n name: capability.name,\n description: `${capability.description}. Endpoint: ${capability.endpoint}. Errors: ${capability.errors.join(', ')}`,\n parameters: {\n type: 'object',\n properties: schema.properties,\n required: schema.required,\n },\n };\n}\n\n/**\n * Convert a PayOS capability to Claude tool format\n */\nexport function toClaudeTool(capability: Capability): ClaudeTool {\n const schema = typeof capability.parameters === 'string' \n ? createSchemaFromParameterType(capability.parameters)\n : { properties: {}, required: [] };\n\n return {\n name: capability.name,\n description: `${capability.description}. Endpoint: ${capability.endpoint}. Possible errors: ${capability.errors.join(', ')}`,\n input_schema: {\n type: 'object',\n properties: schema.properties,\n required: schema.required,\n },\n };\n}\n\n/**\n * Convert a PayOS capability to LangChain tool format\n */\nexport function toLangChainTool(capability: Capability): LangChainTool {\n const schema = typeof capability.parameters === 'string' \n ? createSchemaFromParameterType(capability.parameters)\n : { properties: {}, required: [] };\n\n return {\n name: capability.name,\n description: `${capability.description}. Endpoint: ${capability.endpoint}`,\n schema: {\n type: 'object',\n properties: schema.properties,\n required: schema.required,\n },\n };\n}\n\n/**\n * Convert all capabilities to OpenAI function format\n */\nexport function toOpenAIFunctions(capabilities: Capability[] | CapabilitiesResponse): OpenAIFunction[] {\n const caps = Array.isArray(capabilities) ? capabilities : capabilities.capabilities;\n return caps.map(toOpenAIFunction);\n}\n\n/**\n * Convert all capabilities to Claude tool format\n */\nexport function toClaudeTools(capabilities: Capability[] | CapabilitiesResponse): ClaudeTool[] {\n const caps = Array.isArray(capabilities) ? capabilities : capabilities.capabilities;\n return caps.map(toClaudeTool);\n}\n\n/**\n * Convert all capabilities to LangChain tool format\n */\nexport function toLangChainTools(capabilities: Capability[] | CapabilitiesResponse): any[] {\n const caps = Array.isArray(capabilities) ? capabilities : capabilities.capabilities;\n return caps.map(toLangChainTool);\n}\n\n/**\n * Get OpenAI function-calling system message\n */\nexport function getOpenAISystemMessage(): string {\n return `You are a helpful AI assistant with access to PayOS payment operations. You can help users:\n- Get settlement quotes for cross-border payments\n- Create settlements and transfers\n- Check account balances\n- Verify compliance for recipients\n\nWhen a user asks about payments or transfers, use the available functions to help them. Always confirm important actions before executing them.`;\n}\n\n/**\n * Get Claude system message\n */\nexport function getClaudeSystemMessage(): string {\n return `You are a helpful AI assistant with access to PayOS payment operations. You can help users:\n- Get settlement quotes for cross-border payments\n- Create settlements and transfers\n- Check account balances\n- Verify compliance for recipients\n\nWhen a user asks about payments or transfers, use the available tools to help them. Always confirm important actions before executing them.`;\n}\n\n","/**\n * Capabilities Client - Tool Discovery for AI Agents\n */\n\nimport { PayOSClient } from '../client';\nimport { CapabilitiesResponse, CapabilitiesFilter, Capability } from './types';\n\nexport class CapabilitiesClient {\n private client: PayOSClient;\n private cachedCapabilities: CapabilitiesResponse | null = null;\n private cacheTimestamp: number = 0;\n private cacheTTL: number = 3600000; // 1 hour\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Get all PayOS capabilities\n * Results are cached for 1 hour by default\n */\n public async getAll(forceFresh = false): Promise<CapabilitiesResponse> {\n const now = Date.now();\n \n if (!forceFresh && this.cachedCapabilities && (now - this.cacheTimestamp < this.cacheTTL)) {\n return this.cachedCapabilities;\n }\n\n const capabilities = await this.client.getCapabilities();\n this.cachedCapabilities = capabilities;\n this.cacheTimestamp = now;\n \n return capabilities;\n }\n\n /**\n * Get capabilities filtered by category or name\n */\n public async filter(filter: CapabilitiesFilter): Promise<Capability[]> {\n const all = await this.getAll();\n \n return all.capabilities.filter(cap => {\n if (filter.category && cap.category !== filter.category) {\n return false;\n }\n if (filter.name && cap.name !== filter.name) {\n return false;\n }\n return true;\n });\n }\n\n /**\n * Get a single capability by name\n */\n public async get(name: string): Promise<Capability | undefined> {\n const all = await this.getAll();\n return all.capabilities.find(cap => cap.name === name);\n }\n\n /**\n * Get all available categories\n */\n public async getCategories(): Promise<string[]> {\n const all = await this.getAll();\n const categories = new Set(all.capabilities.map(cap => cap.category));\n return Array.from(categories);\n }\n\n /**\n * Clear the capabilities cache\n */\n public clearCache(): void {\n this.cachedCapabilities = null;\n this.cacheTimestamp = 0;\n }\n\n /**\n * Get capabilities in OpenAI function-calling format\n */\n public async toOpenAI() {\n const response = await this.getAll();\n const { toOpenAIFunctions, getOpenAISystemMessage } = await import('./formatters');\n return {\n functions: toOpenAIFunctions(response.capabilities),\n systemMessage: getOpenAISystemMessage(),\n };\n }\n\n /**\n * Get capabilities in OpenAI function-calling format (alias)\n */\n public async toOpenAIFunctions() {\n const response = await this.getAll();\n const { toOpenAIFunctions } = await import('./formatters');\n return toOpenAIFunctions(response.capabilities);\n }\n\n /**\n * Get capabilities in Claude tool format\n */\n public async toClaude() {\n const response = await this.getAll();\n const { toClaudeTools, getClaudeSystemMessage } = await import('./formatters');\n return {\n tools: toClaudeTools(response.capabilities),\n systemMessage: getClaudeSystemMessage(),\n };\n }\n\n /**\n * Get capabilities in Claude tool format (alias)\n */\n public async toClaudeTools() {\n const response = await this.getAll();\n const { toClaudeTools } = await import('./formatters');\n return toClaudeTools(response.capabilities);\n }\n\n /**\n * Get capabilities in LangChain tool format\n */\n public async toLangChain() {\n const response = await this.getAll();\n const { toLangChainTools } = await import('./formatters');\n return toLangChainTools(response.capabilities);\n }\n}\n\n","/**\n * Types for PayOS Capabilities API\n * Re-exports from main types + additional client-specific types\n */\n\nexport type { \n Capability, \n CapabilitiesResponse \n} from '../types';\n\nexport interface CapabilitiesFilter {\n category?: string;\n name?: string;\n}\n\n","/**\n * Tool discovery and capabilities API\n * \n * Provides machine-readable definitions of PayOS operations\n * for AI agents and developer tools.\n */\n\nexport * from './client';\nexport * from './types';\nexport * from './formatters';\n\n","/**\n * LangChain Tools Wrapper for PayOS SDK\n */\n\nimport { PayOS } from '../index';\n\nexport class LangChainTools {\n private payos: PayOS;\n\n constructor(payos: PayOS) {\n this.payos = payos;\n }\n\n /**\n * Get all PayOS capabilities as LangChain tools\n */\n public async getTools() {\n return this.payos.capabilities.toLangChain();\n }\n\n /**\n * Get a specific tool by name\n */\n public async getTool(name: string) {\n const tools = await this.getTools();\n return tools.find(tool => tool.name === name);\n }\n}\n","/**\n * Card Network Types\n *\n * Type definitions for Visa VIC and Mastercard Agent Pay integration\n */\n\n/**\n * Supported card networks\n */\nexport type CardNetwork = 'visa' | 'mastercard';\n\n/**\n * Card network status\n */\nexport type NetworkStatus = 'active' | 'inactive' | 'not_configured';\n\n/**\n * Agent signature verification request\n */\nexport interface VerifyAgentSignatureRequest {\n /** HTTP method (GET, POST, etc.) */\n method: string;\n /** Request path */\n path: string;\n /** Request headers */\n headers: Record<string, string>;\n /** Signature-Input header value */\n signatureInput: string;\n /** Signature header value */\n signature: string;\n /** Optional: specify which network to verify against */\n network?: CardNetwork;\n}\n\n/**\n * Agent signature verification result\n */\nexport interface VerifyAgentSignatureResult {\n /** Whether the signature is valid */\n valid: boolean;\n /** Detected card network */\n network?: CardNetwork;\n /** Key ID from the signature */\n keyId?: string;\n /** AI agent provider (e.g., 'anthropic', 'openai') */\n agentProvider?: string;\n /** Error message if verification failed */\n error?: string;\n /** Verification timestamp */\n verifiedAt?: string;\n}\n\n/**\n * Individual network configuration\n */\nexport interface NetworkConfig {\n /** Whether the network is configured */\n configured: boolean;\n /** Network status */\n status: NetworkStatus;\n /** Connected account ID */\n accountId: string | null;\n /** Whether using sandbox mode */\n sandbox: boolean;\n /** When the network was connected */\n connectedAt: string | null;\n}\n\n/**\n * Card networks response\n */\nexport interface CardNetworksResponse {\n /** Network configurations */\n networks: {\n visa: NetworkConfig;\n mastercard: NetworkConfig;\n };\n /** Available capabilities based on configuration */\n capabilities: {\n webBotAuth: boolean;\n paymentInstructions: boolean;\n agentRegistration: boolean;\n tokenization: boolean;\n };\n}\n\n/**\n * Verification statistics\n */\nexport interface VerificationStats {\n /** Total verification attempts */\n total: number;\n /** Successful verifications */\n successful: number;\n /** Failed verifications */\n failed: number;\n /** Breakdown by network */\n byNetwork: {\n visa: number;\n mastercard: number;\n };\n /** Breakdown by AI provider */\n byProvider: Record<string, number>;\n}\n\n/**\n * Transaction statistics\n */\nexport interface TransactionStats {\n /** Total transactions */\n total: number;\n /** Total volume in USD */\n volume: number;\n /** Breakdown by status */\n byStatus: {\n completed: number;\n pending: number;\n failed: number;\n };\n /** Breakdown by network */\n byNetwork: {\n visa: number;\n mastercard: number;\n };\n}\n\n/**\n * Recent transaction\n */\nexport interface RecentTransaction {\n id: string;\n network: CardNetwork;\n amount: number;\n currency: string;\n merchantName: string;\n status: string;\n createdAt: string;\n}\n\n/**\n * Card analytics response\n */\nexport interface CardAnalyticsResponse {\n /** Verification statistics */\n verifications: VerificationStats & { successRate: number };\n /** Transaction statistics */\n transactions: TransactionStats;\n /** Recent transactions */\n recentTransactions: RecentTransaction[];\n /** Analytics period */\n period: {\n days: number;\n from: string;\n to: string;\n };\n}\n\n/**\n * Merchant information for Visa instructions\n */\nexport interface VisaMerchant {\n /** Merchant name */\n name: string;\n /** MCC code */\n categoryCode: string;\n /** Country code (default: US) */\n country?: string;\n /** Merchant URL */\n url?: string;\n}\n\n/**\n * Payment restrictions for Visa instructions\n */\nexport interface VisaRestrictions {\n /** Maximum transaction amount */\n maxAmount?: number;\n /** Allowed merchant categories */\n allowedCategories?: string[];\n /** Blocked merchant categories */\n blockedCategories?: string[];\n /** Allowed countries */\n allowedCountries?: string[];\n}\n\n/**\n * Create Visa payment instruction request\n */\nexport interface CreateVisaInstructionRequest {\n /** Payment amount */\n amount: number;\n /** Currency code */\n currency: string;\n /** Merchant information */\n merchant: VisaMerchant;\n /** Payment restrictions */\n restrictions?: VisaRestrictions;\n /** Expiration time in seconds (default: 900) */\n expiresInSeconds?: number;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Visa payment instruction\n */\nexport interface VisaPaymentInstruction {\n /** Instruction ID */\n instructionId: string;\n /** Merchant reference */\n merchantRef: string;\n /** Payment amount */\n amount: number;\n /** Currency code */\n currency: string;\n /** Merchant information */\n merchant: VisaMerchant;\n /** Payment restrictions */\n restrictions?: VisaRestrictions;\n /** Instruction status */\n status: string;\n /** Expiration timestamp */\n expiresAt: string;\n /** Creation timestamp */\n createdAt: string;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Paginated list response\n */\nexport interface PaginatedResponse<T> {\n data: T[];\n pagination: {\n total: number;\n limit: number;\n offset: number;\n };\n}\n\n/**\n * Create Visa token request\n */\nexport interface CreateVisaTokenRequest {\n /** Payment instruction ID */\n instructionId: string;\n /** Card token */\n cardToken: string;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Visa token\n */\nexport interface VisaToken {\n /** VTS token ID */\n tokenId: string;\n /** Instruction ID */\n instructionId: string;\n /** Last 4 digits of card */\n cardLastFour: string;\n /** Token status */\n status: string;\n /** Expiration timestamp */\n expiresAt?: string;\n /** Provisioned timestamp */\n provisionedAt: string;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Register Mastercard agent request\n */\nexport interface RegisterMastercardAgentRequest {\n /** PayOS agent ID */\n agentId: string;\n /** Agent display name */\n agentName?: string;\n /** Agent's public key for signing */\n publicKey: string;\n /** Agent capabilities */\n capabilities?: string[];\n /** AI provider name */\n provider?: string;\n /** Callback URL for notifications */\n callbackUrl?: string;\n}\n\n/**\n * Mastercard agent registration\n */\nexport interface MastercardAgentRegistration {\n /** PayOS agent ID */\n agentId: string;\n /** Mastercard agent ID */\n mcAgentId: string;\n /** Agent display name */\n agentName: string;\n /** Agent's public key */\n publicKey: string;\n /** Agent capabilities */\n capabilities: string[];\n /** Registration status */\n status: string;\n /** AI provider name */\n provider?: string;\n /** Callback URL */\n callbackUrl?: string;\n /** Registration timestamp */\n registeredAt: string;\n}\n\n/**\n * Create Mastercard token request\n */\nexport interface CreateMastercardTokenRequest {\n /** PayOS agent ID */\n agentId: string;\n /** Card token */\n cardToken: string;\n /** Expiration time in seconds (default: 3600) */\n expiresInSeconds?: number;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Mastercard agentic token\n */\nexport interface MastercardToken {\n /** Token reference */\n tokenReference: string;\n /** Mastercard agent ID */\n mcAgentId: string;\n /** Dynamic Transaction Verification Code */\n dtvc: string;\n /** Last 4 digits of card */\n cardLastFour: string;\n /** Token status */\n status: string;\n /** Expiration timestamp */\n expiresAt: string;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Card network transaction\n */\nexport interface CardTransaction {\n id: string;\n network: CardNetwork;\n status: string;\n amount: number;\n currency: string;\n merchantName?: string;\n createdAt: string;\n}\n\n/**\n * Network test result\n */\nexport interface NetworkTestResult {\n success: boolean;\n error?: string;\n}\n\n/**\n * Network configure request\n */\nexport interface ConfigureVisaRequest {\n api_key: string;\n shared_secret?: string;\n sandbox?: boolean;\n}\n\n/**\n * Network configure request\n */\nexport interface ConfigureMastercardRequest {\n consumer_key: string;\n private_key_pem?: string;\n sandbox?: boolean;\n}\n\n/**\n * Configure result\n */\nexport interface ConfigureResult {\n id: string;\n message: string;\n}\n\n// ============================================\n// Agent Signing Types\n// ============================================\n\n/**\n * Generate signing key request\n */\nexport interface GenerateSigningKeyRequest {\n /** Signing algorithm (default: ed25519) */\n algorithm?: 'ed25519' | 'rsa-sha256';\n}\n\n/**\n * Generated signing key result\n */\nexport interface GenerateSigningKeyResult {\n /** Public key identifier used in signatures */\n keyId: string;\n /** Base64 encoded public key */\n publicKey: string;\n /** Signing algorithm */\n algorithm: 'ed25519' | 'rsa-sha256';\n /** Key status */\n status: 'active' | 'suspended' | 'revoked';\n /** Networks where public key is registered */\n registeredNetworks: string[];\n /** When the key was created */\n createdAt: string;\n}\n\n/**\n * Signing key status result\n */\nexport interface SigningKeyStatus {\n /** Whether the agent has a signing key */\n hasKey: boolean;\n /** Public key identifier */\n keyId?: string;\n /** Base64 encoded public key */\n publicKey?: string;\n /** Signing algorithm */\n algorithm?: 'ed25519' | 'rsa-sha256';\n /** Key status */\n status?: 'active' | 'suspended' | 'revoked';\n /** Networks where public key is registered */\n registeredNetworks?: string[];\n /** Usage statistics */\n stats?: {\n useCount: number;\n lastUsedAt?: string;\n };\n /** When the key was created */\n createdAt?: string;\n}\n\n/**\n * Payment information for signing request\n */\nexport interface SigningPaymentInfo {\n /** Payment amount */\n amount: number;\n /** Currency code (default: USD) */\n currency?: string;\n /** Merchant name for audit trail */\n merchantName?: string;\n}\n\n/**\n * Sign request input\n */\nexport interface SignRequestInput {\n /** HTTP method */\n method: string;\n /** Request path */\n path: string;\n /** Host header value */\n host?: string;\n /** Request headers (lowercase keys) */\n headers?: Record<string, string>;\n /** Request body */\n body?: string;\n /** Payment info for spending limit check */\n payment?: SigningPaymentInfo;\n}\n\n/**\n * Sign request result\n */\nexport interface SignRequestResult {\n /** The Signature-Input header value */\n signatureInput: string;\n /** The Signature header value */\n signature: string;\n /** The Content-Digest header value (if body was provided) */\n contentDigest?: string;\n /** All headers to add to the request */\n headers: Record<string, string>;\n /** When the signature expires */\n expiresAt: string;\n /** ID of the signing request for audit trail */\n signingRequestId?: string;\n}\n\n/**\n * Delete signing key result\n */\nexport interface DeleteSigningKeyResult {\n success: boolean;\n message: string;\n keyId: string;\n}\n","/**\n * Card Networks Module\n *\n * Provides SDK integration for Visa VIC and Mastercard Agent Pay\n * for accepting payments from AI agents.\n */\n\nimport { PayOSClient } from '../client';\nimport type {\n VerifyAgentSignatureRequest,\n VerifyAgentSignatureResult,\n CardNetworksResponse,\n CardAnalyticsResponse,\n VerificationStats,\n CreateVisaInstructionRequest,\n VisaPaymentInstruction,\n PaginatedResponse,\n CreateVisaTokenRequest,\n VisaToken,\n RegisterMastercardAgentRequest,\n MastercardAgentRegistration,\n CreateMastercardTokenRequest,\n MastercardToken,\n CardTransaction,\n NetworkTestResult,\n ConfigureVisaRequest,\n ConfigureMastercardRequest,\n ConfigureResult,\n GenerateSigningKeyRequest,\n GenerateSigningKeyResult,\n SigningKeyStatus,\n SignRequestInput,\n SignRequestResult,\n DeleteSigningKeyResult,\n} from './types';\n\nexport * from './types';\n\n/**\n * Visa-specific operations\n */\nexport class VisaClient {\n constructor(private client: PayOSClient) {}\n\n /**\n * Create a Visa VIC payment instruction\n */\n async createInstruction(\n params: CreateVisaInstructionRequest\n ): Promise<VisaPaymentInstruction> {\n return this.client.request<VisaPaymentInstruction>('/v1/cards/visa/instructions', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n /**\n * Get a specific Visa payment instruction\n */\n async getInstruction(instructionId: string): Promise<VisaPaymentInstruction> {\n return this.client.request<VisaPaymentInstruction>(\n `/v1/cards/visa/instructions/${instructionId}`\n );\n }\n\n /**\n * List Visa payment instructions\n */\n async listInstructions(options?: {\n status?: string;\n limit?: number;\n offset?: number;\n }): Promise<PaginatedResponse<VisaPaymentInstruction>> {\n const params = new URLSearchParams();\n if (options?.status) params.set('status', options.status);\n if (options?.limit) params.set('limit', String(options.limit));\n if (options?.offset) params.set('offset', String(options.offset));\n const query = params.toString();\n return this.client.request<PaginatedResponse<VisaPaymentInstruction>>(\n `/v1/cards/visa/instructions${query ? `?${query}` : ''}`\n );\n }\n\n /**\n * Provision a VTS token for an instruction\n */\n async createToken(params: CreateVisaTokenRequest): Promise<VisaToken> {\n return this.client.request<VisaToken>('/v1/cards/visa/tokens', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n /**\n * Get a specific Visa token\n */\n async getToken(tokenId: string): Promise<VisaToken> {\n return this.client.request<VisaToken>(`/v1/cards/visa/tokens/${tokenId}`);\n }\n\n /**\n * List Visa tokens\n */\n async listTokens(options?: {\n status?: string;\n limit?: number;\n offset?: number;\n }): Promise<PaginatedResponse<VisaToken>> {\n const params = new URLSearchParams();\n if (options?.status) params.set('status', options.status);\n if (options?.limit) params.set('limit', String(options.limit));\n if (options?.offset) params.set('offset', String(options.offset));\n const query = params.toString();\n return this.client.request<PaginatedResponse<VisaToken>>(\n `/v1/cards/visa/tokens${query ? `?${query}` : ''}`\n );\n }\n\n /**\n * Suspend a Visa token\n */\n async suspendToken(tokenId: string): Promise<{ success: boolean; message: string }> {\n return this.client.request<{ success: boolean; message: string }>(\n `/v1/cards/visa/tokens/${tokenId}`,\n { method: 'DELETE' }\n );\n }\n}\n\n/**\n * Mastercard-specific operations\n */\nexport class MastercardClient {\n constructor(private client: PayOSClient) {}\n\n /**\n * Register an agent with Mastercard Agent Pay\n */\n async registerAgent(\n params: RegisterMastercardAgentRequest\n ): Promise<MastercardAgentRegistration> {\n return this.client.request<MastercardAgentRegistration>('/v1/cards/mastercard/agents', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n /**\n * Get a specific Mastercard agent registration\n */\n async getAgent(agentId: string): Promise<MastercardAgentRegistration> {\n return this.client.request<MastercardAgentRegistration>(\n `/v1/cards/mastercard/agents/${agentId}`\n );\n }\n\n /**\n * List registered Mastercard agents\n */\n async listAgents(): Promise<{ data: MastercardAgentRegistration[] }> {\n return this.client.request<{ data: MastercardAgentRegistration[] }>(\n '/v1/cards/mastercard/agents'\n );\n }\n\n /**\n * Create a Mastercard agentic token with DTVC\n */\n async createToken(params: CreateMastercardTokenRequest): Promise<MastercardToken> {\n return this.client.request<MastercardToken>('/v1/cards/mastercard/tokens', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n /**\n * Get a Mastercard token, optionally refreshing the DTVC\n */\n async getToken(tokenReference: string, options?: { refresh?: boolean }): Promise<MastercardToken> {\n const query = options?.refresh ? '?refresh=true' : '';\n return this.client.request<MastercardToken>(\n `/v1/cards/mastercard/tokens/${tokenReference}${query}`\n );\n }\n\n /**\n * List Mastercard tokens\n */\n async listTokens(options?: {\n status?: string;\n limit?: number;\n offset?: number;\n }): Promise<PaginatedResponse<MastercardToken>> {\n const params = new URLSearchParams();\n if (options?.status) params.set('status', options.status);\n if (options?.limit) params.set('limit', String(options.limit));\n if (options?.offset) params.set('offset', String(options.offset));\n const query = params.toString();\n return this.client.request<PaginatedResponse<MastercardToken>>(\n `/v1/cards/mastercard/tokens${query ? `?${query}` : ''}`\n );\n }\n\n /**\n * Revoke a Mastercard token\n */\n async revokeToken(tokenReference: string): Promise<{ success: boolean; message: string }> {\n return this.client.request<{ success: boolean; message: string }>(\n `/v1/cards/mastercard/tokens/${tokenReference}`,\n { method: 'DELETE' }\n );\n }\n}\n\n/**\n * Cards Module - Main client for card network operations\n *\n * Provides unified access to:\n * - Web Bot Auth signature verification\n * - Network configuration and status\n * - Visa VIC payment instructions and tokens\n * - Mastercard Agent Pay registration and tokens\n * - Analytics and transactions\n */\nexport class CardsClient {\n /** Visa-specific operations */\n public readonly visa: VisaClient;\n /** Mastercard-specific operations */\n public readonly mastercard: MastercardClient;\n\n constructor(private client: PayOSClient) {\n this.visa = new VisaClient(client);\n this.mastercard = new MastercardClient(client);\n }\n\n /**\n * Verify an AI agent's Web Bot Auth signature\n *\n * @example\n * ```typescript\n * const result = await payos.cards.verifyAgentSignature({\n * method: 'POST',\n * path: '/checkout',\n * headers: req.headers,\n * signatureInput: req.headers['signature-input'],\n * signature: req.headers['signature'],\n * });\n *\n * if (result.valid) {\n * console.log(`Verified ${result.network} agent from ${result.agentProvider}`);\n * }\n * ```\n */\n async verifyAgentSignature(\n params: VerifyAgentSignatureRequest\n ): Promise<VerifyAgentSignatureResult> {\n return this.client.request<VerifyAgentSignatureResult>('/v1/cards/verify', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n /**\n * Get configured card networks and their status\n *\n * @example\n * ```typescript\n * const { networks, capabilities } = await payos.cards.getNetworks();\n *\n * if (networks.visa.configured) {\n * console.log(`Visa: ${networks.visa.status}`);\n * }\n * ```\n */\n async getNetworks(): Promise<CardNetworksResponse> {\n return this.client.request<CardNetworksResponse>('/v1/cards/networks');\n }\n\n /**\n * Test connection to a card network\n */\n async testNetwork(network: 'visa' | 'mastercard'): Promise<NetworkTestResult> {\n return this.client.request<NetworkTestResult>(`/v1/cards/networks/${network}/test`, {\n method: 'POST',\n });\n }\n\n /**\n * Configure Visa VIC credentials\n */\n async configureVisa(params: ConfigureVisaRequest): Promise<ConfigureResult> {\n return this.client.request<ConfigureResult>('/v1/cards/networks/visa/configure', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n /**\n * Configure Mastercard Agent Pay credentials\n */\n async configureMastercard(params: ConfigureMastercardRequest): Promise<ConfigureResult> {\n return this.client.request<ConfigureResult>('/v1/cards/networks/mastercard/configure', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n /**\n * Disconnect a card network\n */\n async disconnectNetwork(network: 'visa' | 'mastercard'): Promise<{ success: boolean; message: string }> {\n return this.client.request<{ success: boolean; message: string }>(\n `/v1/cards/networks/${network}/disconnect`,\n { method: 'DELETE' }\n );\n }\n\n /**\n * Get comprehensive card network analytics\n *\n * @param days - Number of days to analyze (default: 30)\n *\n * @example\n * ```typescript\n * const analytics = await payos.cards.getAnalytics(30);\n *\n * console.log(`Success rate: ${analytics.verifications.successRate}%`);\n * console.log(`Total volume: $${analytics.transactions.volume}`);\n * ```\n */\n async getAnalytics(days = 30): Promise<CardAnalyticsResponse> {\n return this.client.request<CardAnalyticsResponse>(`/v1/cards/analytics?days=${days}`);\n }\n\n /**\n * Get verification statistics\n *\n * @param days - Number of days to analyze (default: 30)\n */\n async getVerificationStats(days = 30): Promise<VerificationStats> {\n return this.client.request<VerificationStats>(`/v1/cards/verifications/stats?days=${days}`);\n }\n\n /**\n * List card network transactions\n */\n async listTransactions(options?: {\n network?: 'visa' | 'mastercard';\n status?: string;\n limit?: number;\n offset?: number;\n }): Promise<PaginatedResponse<CardTransaction>> {\n const params = new URLSearchParams();\n if (options?.network) params.set('network', options.network);\n if (options?.status) params.set('status', options.status);\n if (options?.limit) params.set('limit', String(options.limit));\n if (options?.offset) params.set('offset', String(options.offset));\n const query = params.toString();\n return this.client.request<PaginatedResponse<CardTransaction>>(\n `/v1/cards/transactions${query ? `?${query}` : ''}`\n );\n }\n\n /**\n * Get a specific transaction\n */\n async getTransaction(transactionId: string): Promise<CardTransaction> {\n return this.client.request<CardTransaction>(`/v1/cards/transactions/${transactionId}`);\n }\n\n // ============================================\n // Agent Signing Methods\n // ============================================\n\n /**\n * Generate a signing key for an agent\n *\n * Creates an Ed25519 or RSA-SHA256 key pair for the agent to sign\n * payment requests according to RFC 9421 (HTTP Message Signatures).\n *\n * @example\n * ```typescript\n * const key = await payos.cards.generateSigningKey('agent_123');\n * console.log(`Public key: ${key.publicKey}`);\n * // Register this public key with card networks (Visa TAP, MC Agent Pay)\n * ```\n */\n async generateSigningKey(\n agentId: string,\n options?: GenerateSigningKeyRequest\n ): Promise<GenerateSigningKeyResult> {\n return this.client.request<GenerateSigningKeyResult>(\n `/v1/agents/${agentId}/signing-keys`,\n {\n method: 'POST',\n body: JSON.stringify(options || {}),\n }\n );\n }\n\n /**\n * Get the signing key status for an agent\n *\n * @example\n * ```typescript\n * const status = await payos.cards.getSigningKey('agent_123');\n * if (status.hasKey) {\n * console.log(`Key: ${status.keyId}, Uses: ${status.stats.useCount}`);\n * }\n * ```\n */\n async getSigningKey(agentId: string): Promise<SigningKeyStatus> {\n return this.client.request<SigningKeyStatus>(`/v1/agents/${agentId}/signing-keys`);\n }\n\n /**\n * Revoke an agent's signing key\n *\n * After revocation, the agent will need a new key to sign requests.\n */\n async revokeSigningKey(agentId: string): Promise<DeleteSigningKeyResult> {\n return this.client.request<DeleteSigningKeyResult>(\n `/v1/agents/${agentId}/signing-keys`,\n { method: 'DELETE' }\n );\n }\n\n /**\n * Sign a payment request for an agent\n *\n * Signs an HTTP request according to RFC 9421 so the agent can\n * authenticate with merchants and card networks.\n *\n * Requirements:\n * - Agent must have KYA tier >= 1\n * - Agent must be active\n * - Agent must have a signing key\n * - Payment must be within spending limits\n *\n * @example\n * ```typescript\n * // Sign a payment request\n * const signed = await payos.cards.signRequest('agent_123', {\n * method: 'POST',\n * path: '/api/checkout',\n * host: 'merchant.com',\n * body: JSON.stringify({ items: [...], total: 99.99 }),\n * payment: {\n * amount: 99.99,\n * currency: 'USD',\n * merchantName: 'Acme Store',\n * },\n * });\n *\n * // Agent uses signed headers to call merchant\n * const response = await fetch('https://merchant.com/api/checkout', {\n * method: 'POST',\n * headers: {\n * ...signed.headers,\n * 'Content-Type': 'application/json',\n * },\n * body: JSON.stringify({ items: [...], total: 99.99 }),\n * });\n * ```\n */\n async signRequest(\n agentId: string,\n request: SignRequestInput\n ): Promise<SignRequestResult> {\n return this.client.request<SignRequestResult>(\n `/v1/agents/${agentId}/sign-request`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n }\n}\n","/**\n * A2A Client - Google Agent-to-Agent Protocol\n *\n * SDK client for sending tasks to Sly-hosted agents, discovering agent\n * capabilities, and managing task lifecycle.\n *\n * @see Epic 57: Google A2A Protocol Integration\n * @see Epic 58: A2A Task Processor Worker (Story 58.11)\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n A2AAgentCard,\n A2ATask,\n A2AListTasksOptions,\n A2AListTasksResponse,\n A2AConfiguration,\n A2APart,\n A2ACustomTool,\n A2ACreateCustomToolRequest,\n} from '@sly/types';\n\nexport class A2AClient {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Discover an agent's capabilities via its Agent Card.\n *\n * @example\n * ```typescript\n * const card = await sly.a2a.discover('agent-uuid');\n * console.log(card.skills);\n * ```\n */\n async discover(agentId: string): Promise<A2AAgentCard> {\n return this.client.request<A2AAgentCard>(\n `/v1/a2a/${agentId}/.well-known/agent.json`,\n );\n }\n\n /**\n * Send a message to an agent, creating or continuing a task.\n *\n * @example\n * ```typescript\n * const task = await sly.a2a.sendMessage('agent-uuid', {\n * message: 'Check my wallet balance',\n * });\n * console.log(task.status.state); // 'submitted' or 'completed'\n * ```\n */\n async sendMessage(\n agentId: string,\n params: {\n message: string | A2APart[];\n contextId?: string;\n configuration?: A2AConfiguration;\n metadata?: Record<string, unknown>;\n skillId?: string;\n },\n ): Promise<A2ATask> {\n const parts: A2APart[] =\n typeof params.message === 'string'\n ? [{ text: params.message }]\n : params.message;\n\n const body = {\n jsonrpc: '2.0' as const,\n method: 'message/send',\n params: {\n message: { role: 'user', parts, metadata: params.metadata },\n ...(params.contextId && { contextId: params.contextId }),\n ...(params.configuration && { configuration: params.configuration }),\n ...(params.skillId && { skill_id: params.skillId }),\n },\n id: crypto.randomUUID(),\n };\n\n const response = await this.client.request<{ result: A2ATask }>(\n `/v1/a2a/${agentId}`,\n { method: 'POST', body: JSON.stringify(body) },\n );\n return response.result;\n }\n\n /**\n * Get a task by ID.\n *\n * @example\n * ```typescript\n * const task = await sly.a2a.getTask('agent-uuid', 'task-uuid');\n * console.log(task.status.state);\n * ```\n */\n async getTask(\n agentId: string,\n taskId: string,\n historyLength?: number,\n ): Promise<A2ATask> {\n const body = {\n jsonrpc: '2.0' as const,\n method: 'tasks/get',\n params: { id: taskId, ...(historyLength && { historyLength }) },\n id: crypto.randomUUID(),\n };\n\n const response = await this.client.request<{ result: A2ATask }>(\n `/v1/a2a/${agentId}`,\n { method: 'POST', body: JSON.stringify(body) },\n );\n return response.result;\n }\n\n /**\n * Cancel a task.\n */\n async cancelTask(agentId: string, taskId: string): Promise<A2ATask> {\n const body = {\n jsonrpc: '2.0' as const,\n method: 'tasks/cancel',\n params: { id: taskId },\n id: crypto.randomUUID(),\n };\n\n const response = await this.client.request<{ result: A2ATask }>(\n `/v1/a2a/${agentId}`,\n { method: 'POST', body: JSON.stringify(body) },\n );\n return response.result;\n }\n\n /**\n * List tasks for an agent (REST endpoint).\n *\n * @example\n * ```typescript\n * const { data, pagination } = await sly.a2a.listTasks({\n * agentId: 'agent-uuid',\n * state: 'completed',\n * limit: 20,\n * });\n * ```\n */\n async listTasks(options: A2AListTasksOptions = {}): Promise<A2AListTasksResponse> {\n const params = new URLSearchParams();\n if (options.agentId) params.append('agent_id', options.agentId);\n if (options.state) params.append('state', options.state);\n if (options.direction) params.append('direction', options.direction);\n if (options.contextId) params.append('context_id', options.contextId);\n if (options.page) params.append('page', options.page.toString());\n if (options.limit) params.append('limit', options.limit.toString());\n\n const qs = params.toString();\n return this.client.request<A2AListTasksResponse>(\n qs ? `/v1/a2a/tasks?${qs}` : '/v1/a2a/tasks',\n );\n }\n\n /**\n * Respond to a task in input-required state (human-in-the-loop).\n */\n async respond(taskId: string, message: string): Promise<{ status: string }> {\n return this.client.request<{ status: string }>(\n `/v1/a2a/tasks/${taskId}/respond`,\n { method: 'POST', body: JSON.stringify({ message }) },\n );\n }\n\n // =========================================================================\n // Custom Tools (Story 58.15)\n // =========================================================================\n\n /**\n * Register a custom tool for an agent.\n *\n * @example\n * ```typescript\n * const tool = await sly.a2a.createCustomTool('agent-uuid', {\n * toolName: 'lookup_inventory',\n * description: 'Check product inventory levels',\n * inputSchema: {\n * type: 'object',\n * properties: { sku: { type: 'string' } },\n * required: ['sku'],\n * },\n * handlerUrl: 'https://api.example.com/inventory',\n * });\n * ```\n */\n async createCustomTool(\n agentId: string,\n request: A2ACreateCustomToolRequest,\n ): Promise<A2ACustomTool> {\n const response = await this.client.request<{ data: A2ACustomTool }>(\n `/v1/a2a/agents/${agentId}/tools`,\n { method: 'POST', body: JSON.stringify(request) },\n );\n return response.data;\n }\n\n /**\n * List custom tools for an agent.\n */\n async listCustomTools(agentId: string): Promise<A2ACustomTool[]> {\n const response = await this.client.request<{ data: A2ACustomTool[] }>(\n `/v1/a2a/agents/${agentId}/tools`,\n );\n return response.data;\n }\n\n /**\n * Delete a custom tool.\n */\n async deleteCustomTool(agentId: string, toolId: string): Promise<void> {\n await this.client.request<void>(\n `/v1/a2a/agents/${agentId}/tools/${toolId}`,\n { method: 'DELETE' },\n );\n }\n}\n","/**\n * Agent Wallets Client\n *\n * Epic 18: Agent Wallets & Contract Policies\n * Story 18.6: SDK Methods\n *\n * Provides:\n * - evaluatePolicy() — dry-run contract policy evaluation\n * - getExposures() — list counterparty exposures\n * - getEvaluations() — audit log of policy decisions\n * - getWallet() — get agent's wallet\n * - freezeWallet() — freeze agent's wallet\n * - unfreezeWallet() — reactivate agent's wallet\n * - setContractPolicy() — set contract policy on agent's wallet\n */\n\nimport type { PayOSClient } from '../../client';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ContractPolicy {\n counterpartyBlocklist?: string[];\n counterpartyAllowlist?: string[];\n minCounterpartyKyaTier?: number;\n minCounterpartyReputation?: number;\n allowedContractTypes?: string[];\n blockedContractTypes?: string[];\n maxExposure24h?: number;\n maxExposure7d?: number;\n maxExposure30d?: number;\n maxActiveContracts?: number;\n maxActiveEscrows?: number;\n escalateAbove?: number;\n}\n\nexport interface SpendingPolicy {\n dailySpendLimit?: number;\n monthlySpendLimit?: number;\n requiresApprovalAbove?: number;\n approvedVendors?: string[];\n approvedCategories?: string[];\n approvedEndpoints?: string[];\n contractPolicy?: ContractPolicy;\n}\n\nexport interface PolicyEvaluateRequest {\n amount: number;\n currency?: string;\n actionType:\n | 'payment'\n | 'escrow_create'\n | 'escrow_release'\n | 'contract_sign'\n | 'negotiation_check'\n | 'counterparty_check';\n contractType?: string;\n counterpartyAgentId?: string;\n counterpartyAddress?: string;\n protocol?: string;\n}\n\nexport interface PolicyCheckDetail {\n check: string;\n result: 'pass' | 'fail' | 'skip';\n detail: string;\n}\n\nexport interface PolicyEvaluateResponse {\n decision: 'approve' | 'escalate' | 'deny';\n reasons: string[];\n checks: PolicyCheckDetail[];\n suggestedCounterOffer: {\n maxAmount: number;\n reason: string;\n } | null;\n evaluationMs: number;\n}\n\nexport interface CounterpartyExposure {\n id: string;\n walletId: string;\n counterpartyAgentId: string | null;\n counterpartyAddress: string | null;\n exposure24h: number;\n exposure7d: number;\n exposure30d: number;\n activeContracts: number;\n activeEscrows: number;\n totalVolume: number;\n transactionCount: number;\n currency: string;\n}\n\nexport interface PolicyEvaluation {\n id: string;\n actionType: string;\n amount: number;\n currency: string;\n contractType: string | null;\n counterpartyAgentId: string | null;\n counterpartyAddress: string | null;\n decision: string;\n decisionReasons: string[];\n suggestedCounterOffer: any;\n checksPerformed: PolicyCheckDetail[];\n evaluationMs: number;\n createdAt: string;\n}\n\n// ============================================\n// Client\n// ============================================\n\nexport class AgentWalletsClient {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Evaluate a contract policy in dry-run mode (negotiation guardrails).\n *\n * @example\n * ```typescript\n * const result = await sly.agentWallets.evaluatePolicy('agent-uuid', {\n * amount: 150,\n * actionType: 'payment',\n * counterpartyAgentId: 'other-agent-uuid',\n * });\n * console.log(result.decision); // 'approve' | 'escalate' | 'deny'\n * ```\n */\n async evaluatePolicy(\n agentId: string,\n request: PolicyEvaluateRequest,\n ): Promise<PolicyEvaluateResponse> {\n const response = await this.client.request<{ data: any }>(\n `/v1/agents/${agentId}/wallet/policy/evaluate`,\n {\n method: 'POST',\n body: JSON.stringify({\n amount: request.amount,\n currency: request.currency || 'USDC',\n action_type: request.actionType,\n contract_type: request.contractType,\n counterparty_agent_id: request.counterpartyAgentId,\n counterparty_address: request.counterpartyAddress,\n protocol: request.protocol,\n }),\n },\n );\n const d = response.data || response;\n return {\n decision: d.decision,\n reasons: d.reasons,\n checks: d.checks,\n suggestedCounterOffer: d.suggested_counter_offer\n ? {\n maxAmount: d.suggested_counter_offer.max_amount,\n reason: d.suggested_counter_offer.reason,\n }\n : null,\n evaluationMs: d.evaluation_ms,\n };\n }\n\n /**\n * List counterparty exposures for an agent's wallet.\n *\n * @example\n * ```typescript\n * const exposures = await sly.agentWallets.getExposures('agent-uuid');\n * for (const exp of exposures) {\n * console.log(`${exp.counterpartyAgentId}: ${exp.exposure24h} (24h)`);\n * }\n * ```\n */\n async getExposures(agentId: string): Promise<CounterpartyExposure[]> {\n const response = await this.client.request<{ data: any[] }>(\n `/v1/agents/${agentId}/wallet/exposures`,\n );\n const items = response.data || [];\n return items.map((e: any) => ({\n id: e.id,\n walletId: e.wallet_id,\n counterpartyAgentId: e.counterparty_agent_id,\n counterpartyAddress: e.counterparty_address,\n exposure24h: e.exposure_24h,\n exposure7d: e.exposure_7d,\n exposure30d: e.exposure_30d,\n activeContracts: e.active_contracts,\n activeEscrows: e.active_escrows,\n totalVolume: e.total_volume,\n transactionCount: e.transaction_count,\n currency: e.currency,\n }));\n }\n\n /**\n * Get policy evaluation audit log for an agent's wallet.\n */\n async getEvaluations(\n agentId: string,\n options?: { page?: number; limit?: number },\n ): Promise<{ data: PolicyEvaluation[]; pagination: any }> {\n const params = new URLSearchParams();\n if (options?.page) params.set('page', options.page.toString());\n if (options?.limit) params.set('limit', options.limit.toString());\n const qs = params.toString();\n\n const response = await this.client.request<{ data: any[]; pagination: any }>(\n `/v1/agents/${agentId}/wallet/policy/evaluations${qs ? `?${qs}` : ''}`,\n );\n return {\n data: (response.data || []).map((e: any) => ({\n id: e.id,\n actionType: e.action_type,\n amount: e.amount,\n currency: e.currency,\n contractType: e.contract_type,\n counterpartyAgentId: e.counterparty_agent_id,\n counterpartyAddress: e.counterparty_address,\n decision: e.decision,\n decisionReasons: e.decision_reasons,\n suggestedCounterOffer: e.suggested_counter_offer,\n checksPerformed: e.checks_performed,\n evaluationMs: e.evaluation_ms,\n createdAt: e.created_at,\n })),\n pagination: response.pagination,\n };\n }\n\n /**\n * Get an agent's wallet details.\n */\n async getWallet(agentId: string): Promise<any> {\n const response = await this.client.request<{ data: any }>(\n `/v1/agents/${agentId}/wallet`,\n );\n return response.data || response;\n }\n\n /**\n * Freeze an agent's wallet (disables all payments).\n */\n async freezeWallet(agentId: string): Promise<any> {\n const response = await this.client.request<{ data: any }>(\n `/v1/agents/${agentId}/wallet/freeze`,\n { method: 'POST' },\n );\n return response.data || response;\n }\n\n /**\n * Unfreeze an agent's wallet (re-enables payments).\n */\n async unfreezeWallet(agentId: string): Promise<any> {\n const response = await this.client.request<{ data: any }>(\n `/v1/agents/${agentId}/wallet/unfreeze`,\n { method: 'POST' },\n );\n return response.data || response;\n }\n\n /**\n * Set or update the contract policy on an agent's wallet.\n *\n * @example\n * ```typescript\n * await sly.agentWallets.setContractPolicy('agent-uuid', {\n * dailySpendLimit: 500,\n * contractPolicy: {\n * counterpartyBlocklist: ['bad-agent-id'],\n * maxExposure24h: 200,\n * escalateAbove: 100,\n * },\n * });\n * ```\n */\n async setContractPolicy(\n agentId: string,\n policy: SpendingPolicy,\n ): Promise<any> {\n const response = await this.client.request<{ data: any }>(\n `/v1/agents/${agentId}/wallet/policy`,\n {\n method: 'PUT',\n body: JSON.stringify(policy),\n },\n );\n return response.data || response;\n }\n}\n","/**\n * MPP Client - Machine Payments Protocol\n *\n * Wraps PayOS MPP API endpoints for governed machine payments and sessions.\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n MppPayRequest,\n MppPayResponse,\n MppOpenSessionRequest,\n MppSession,\n MppSessionDetail,\n MppListSessionsOptions,\n MppListSessionsResponse,\n MppListTransfersOptions,\n MppListTransfersResponse,\n MppReceiptVerification,\n MppProvisionWalletRequest,\n} from './types';\n\nexport class MPPClient {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n /**\n * Make a one-shot MPP payment to a service\n *\n * @example\n * ```typescript\n * const result = await sly.mpp.pay({\n * service_url: 'https://api.example.com',\n * amount: 0.50,\n * agent_id: 'agent-uuid',\n * });\n * ```\n */\n public async pay(request: MppPayRequest): Promise<MppPayResponse> {\n return this.client.request<MppPayResponse>('/v1/mpp/pay', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Open a streaming payment session\n *\n * @example\n * ```typescript\n * const session = await sly.mpp.openSession({\n * service_url: 'https://api.example.com',\n * deposit_amount: 10.00,\n * agent_id: 'agent-uuid',\n * wallet_id: 'wallet-uuid',\n * });\n * ```\n */\n public async openSession(request: MppOpenSessionRequest): Promise<MppSession> {\n return this.client.request<MppSession>('/v1/mpp/sessions', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Get session details with voucher history\n */\n public async getSession(sessionId: string): Promise<MppSessionDetail> {\n return this.client.request<MppSessionDetail>(`/v1/mpp/sessions/${sessionId}`);\n }\n\n /**\n * List MPP sessions with optional filtering\n */\n public async listSessions(options: MppListSessionsOptions = {}): Promise<MppListSessionsResponse> {\n const params = new URLSearchParams();\n if (options.agent_id) params.append('agent_id', options.agent_id);\n if (options.status) params.append('status', options.status);\n if (options.limit) params.append('limit', options.limit.toString());\n if (options.offset) params.append('offset', options.offset.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/mpp/sessions?${queryString}` : '/v1/mpp/sessions';\n\n return this.client.request<MppListSessionsResponse>(path);\n }\n\n /**\n * Close an active session\n */\n public async closeSession(sessionId: string): Promise<MppSession> {\n return this.client.request<MppSession>(`/v1/mpp/sessions/${sessionId}/close`, {\n method: 'POST',\n });\n }\n\n /**\n * List MPP payment transfers\n */\n public async listTransfers(options: MppListTransfersOptions = {}): Promise<MppListTransfersResponse> {\n const params = new URLSearchParams();\n if (options.service_url) params.append('service_url', options.service_url);\n if (options.session_id) params.append('session_id', options.session_id);\n if (options.limit) params.append('limit', options.limit.toString());\n if (options.offset) params.append('offset', options.offset.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/mpp/transfers?${queryString}` : '/v1/mpp/transfers';\n\n return this.client.request<MppListTransfersResponse>(path);\n }\n\n /**\n * Verify an MPP payment receipt\n */\n public async verifyReceipt(receiptId: string): Promise<MppReceiptVerification> {\n return this.client.request<MppReceiptVerification>('/v1/mpp/receipts/verify', {\n method: 'POST',\n body: JSON.stringify({ receipt_id: receiptId }),\n });\n }\n\n /**\n * Provision a wallet for MPP payments\n */\n public async provisionWallet(request: MppProvisionWalletRequest): Promise<any> {\n return this.client.request<any>('/v1/mpp/wallets/provision', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Browse the MPP service directory\n */\n public async browseServices(options?: { category?: string; limit?: number }): Promise<any> {\n const params = new URLSearchParams();\n if (options?.category) params.append('category', options.category);\n if (options?.limit) params.append('limit', options.limit.toString());\n\n const queryString = params.toString();\n const path = queryString ? `/v1/mpp/services?${queryString}` : '/v1/mpp/services';\n\n return this.client.request<any>(path);\n }\n\n /**\n * Get pricing info for a service\n */\n public async getServicePricing(domain: string): Promise<any> {\n return this.client.request<any>(`/v1/mpp/services/${domain}/pricing`);\n }\n}\n","/**\n * Core type definitions for the Sly SDK\n */\n\n/**\n * SDK environment configuration\n */\nexport type SlyEnvironment = 'sandbox' | 'testnet' | 'production';\n\n// Backward compatibility alias\nexport type PayOSEnvironment = SlyEnvironment;\n\n/**\n * Environment-specific configuration\n */\nexport interface EnvironmentConfig {\n apiUrl: string;\n facilitatorUrl?: string;\n}\n\n/**\n * Sly SDK configuration options\n */\nexport interface SlyConfig {\n /**\n * Sly API key\n */\n apiKey: string;\n\n /**\n * Environment to connect to (optional — auto-inferred from API key prefix)\n * - sandbox: Base Sepolia testnet (pk_test_* / pk_sandbox_*)\n * - testnet: Alias for sandbox\n * - production: Base mainnet (pk_live_*)\n *\n * If omitted, inferred from apiKey prefix. Explicit value overrides inference.\n */\n environment?: SlyEnvironment;\n\n /**\n * EVM private key (required for testnet/production x402)\n * Not needed for sandbox mode\n */\n evmPrivateKey?: string;\n\n /**\n * Custom API URL (overrides environment default)\n */\n apiUrl?: string;\n\n /**\n * Custom facilitator URL for x402 (overrides environment default)\n */\n facilitatorUrl?: string;\n}\n\n// Backward compatibility alias\nexport type PayOSConfig = SlyConfig;\n\n/**\n * Payment protocol types supported by PayOS\n */\nexport type PaymentProtocol = 'x402' | 'ap2' | 'acp' | 'direct';\n\n/**\n * Settlement rail types\n */\nexport type SettlementRail = 'pix' | 'spei' | 'wire' | 'usdc';\n\n/**\n * Supported currencies\n */\nexport type Currency = 'USD' | 'BRL' | 'MXN' | 'USDC';\n\n/**\n * Settlement quote request\n */\nexport interface SettlementQuoteRequest {\n fromCurrency: Currency;\n toCurrency: Currency;\n amount: string;\n rail?: SettlementRail;\n}\n\n/**\n * Settlement quote response\n */\nexport interface SettlementQuote {\n id: string;\n fromCurrency: Currency;\n toCurrency: Currency;\n fromAmount: string;\n toAmount: string;\n fxRate: string;\n fees: {\n platformFee: string;\n fxFee: string;\n railFee: string;\n total: string;\n };\n rail: SettlementRail;\n expiresAt: string;\n estimatedSettlementSeconds: number;\n}\n\n/**\n * Settlement creation request\n */\nexport interface CreateSettlementRequest {\n quoteId: string;\n destinationAccountId: string;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Settlement status\n */\nexport type SettlementStatus = \n | 'pending'\n | 'processing'\n | 'completed'\n | 'failed'\n | 'cancelled';\n\n/**\n * Settlement response\n */\nexport interface Settlement {\n id: string;\n quoteId: string;\n status: SettlementStatus;\n fromAmount: string;\n fromCurrency: Currency;\n toAmount: string;\n toCurrency: Currency;\n rail: SettlementRail;\n destinationAccountId: string;\n createdAt: string;\n completedAt?: string;\n failureReason?: string;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Compliance check request\n */\nexport interface ComplianceCheckRequest {\n recipientAccountId: string;\n amount: string;\n currency: Currency;\n}\n\n/**\n * Compliance check response\n */\nexport interface ComplianceCheckResponse {\n approved: boolean;\n flags: string[];\n requiredActions: string[];\n message?: string;\n}\n\n/**\n * API capability definition\n */\nexport interface Capability {\n name: string;\n description: string;\n category: string;\n endpoint: string;\n parameters: Record<string, unknown>;\n returns: Record<string, unknown>;\n errors: string[];\n supportsSimulation: boolean;\n supportsIdempotency: boolean;\n}\n\n/**\n * Capabilities response\n */\nexport interface CapabilitiesResponse {\n apiVersion: string;\n capabilities: Capability[];\n limits: {\n rateLimit: string;\n maxTransfer: string;\n };\n supportedCurrencies: Currency[];\n supportedRails: SettlementRail[];\n webhookEvents: string[];\n}\n\n","/**\n * Authentication helpers for PayOS SDK\n * \n * Supports both API key and username/password authentication\n */\n\nexport interface LoginCredentials {\n email: string;\n password: string;\n}\n\nexport interface LoginResponse {\n access_token: string;\n refresh_token: string;\n expires_in: number;\n user: {\n id: string;\n email: string;\n tenant_id: string;\n };\n}\n\n/**\n * Authenticate with email and password to get an access token\n * \n * @param credentials - Email and password\n * @param apiUrl - PayOS API URL (default: http://localhost:4000)\n * @returns Login response with access token\n * \n * @example\n * ```ts\n * const auth = await loginWithPassword({\n * email: 'user@example.com',\n * password: 'mypassword'\n * });\n * \n * const payos = new PayOS({\n * apiKey: auth.access_token,\n * environment: 'sandbox'\n * });\n * ```\n */\nexport async function loginWithPassword(\n credentials: LoginCredentials,\n apiUrl: string = 'http://localhost:4000'\n): Promise<LoginResponse> {\n const response = await fetch(`${apiUrl}/v1/auth/login`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(credentials),\n });\n\n if (!response.ok) {\n const error: any = await response.json().catch(() => ({ \n error: response.statusText \n }));\n throw new Error(error.error || `Login failed: ${response.status}`);\n }\n\n return response.json() as Promise<LoginResponse>;\n}\n\n/**\n * Create a PayOS SDK instance with username/password authentication\n * \n * @param credentials - Email and password\n * @param environment - Environment to connect to\n * @param apiUrl - PayOS API URL (default: http://localhost:4000)\n * @returns PayOS instance authenticated with the user's session\n * \n * @example\n * ```ts\n * import { PayOS, createWithPassword } from '@sly/sdk';\n * \n * const payos = await createWithPassword({\n * email: 'user@example.com',\n * password: 'mypassword',\n * }, 'sandbox');\n * \n * // Now use payos normally\n * const mandate = await payos.ap2.createMandate({...});\n * ```\n */\nexport async function createWithPassword(\n credentials: LoginCredentials,\n environment: 'sandbox' | 'testnet' | 'production' = 'sandbox',\n apiUrl?: string\n): Promise<any> {\n // Dynamic import to avoid circular dependency\n const { PayOS } = await import('./index');\n \n const auth = await loginWithPassword(credentials, apiUrl);\n \n return new PayOS({\n apiKey: auth.access_token,\n environment,\n apiUrl,\n });\n}\n\n/**\n * Verify if an API key is valid\n * \n * @param apiKey - API key to verify\n * @param apiUrl - PayOS API URL\n * @returns True if valid, false otherwise\n */\nexport async function verifyApiKey(\n apiKey: string,\n apiUrl: string = 'http://localhost:4000'\n): Promise<boolean> {\n try {\n const response = await fetch(`${apiUrl}/v1/auth/me`, {\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n },\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n","/**\n * @sly/sdk - Unified SDK for Sly multi-protocol settlement\n *\n * This SDK provides:\n * - x402 micropayments (Coinbase/Cloudflare)\n * - AP2 agent mandates (Google)\n * - ACP checkout (Stripe/OpenAI)\n * - Direct settlement API\n * - Pix/SPEI local rails\n *\n * @example Auto-routing (environment inferred from key prefix)\n * ```ts\n * const sly = new Sly({ apiKey: 'pk_test_...' }); // → sandbox.getsly.ai\n * const sly = new Sly({ apiKey: 'pk_live_...' }); // → api.getsly.ai\n * ```\n *\n * @example Explicit environment\n * ```ts\n * const sly = new Sly({\n * apiKey: 'pk_live_...',\n * environment: 'production',\n * evmPrivateKey: '0x...',\n * });\n * ```\n */\n\nimport type { SlyConfig } from './types';\nimport { SlyClient } from './client';\nimport { inferEnvironmentFromKey } from './config';\nimport { SlyX402Client } from './protocols/x402/client';\nimport { SlyX402Provider } from './protocols/x402/provider';\nimport { AP2Client } from './protocols/ap2/client';\nimport { ACPClient } from './protocols/acp/client';\nimport { UCPClient } from './protocols/ucp/client';\nimport { CapabilitiesClient } from './capabilities';\nimport { LangChainTools } from './langchain/tools';\nimport { CardsClient } from './cards';\nimport { A2AClient } from './protocols/a2a/client';\nimport { AgentWalletsClient } from './protocols/agent-wallets/client';\nimport { MPPClient } from './protocols/mpp/client';\n\n/**\n * Main Sly SDK class\n *\n * Provides unified access to all Sly settlement protocols:\n * - x402 (micropayments)\n * - AP2 (agent mandates)\n * - ACP (checkout)\n * - UCP (universal commerce - Google+Shopify)\n * - Direct settlement API\n * - Capabilities discovery for AI agents\n */\nexport class Sly extends SlyClient {\n /**\n * x402 protocol client\n * Create x402 payments with automatic 402 handling\n */\n public readonly x402: {\n /**\n * Create an x402 client for making payments\n */\n createClient: (config?: Partial<SlyConfig>) => SlyX402Client;\n\n /**\n * Create an x402 provider for accepting payments\n */\n createProvider: (routes: Record<string, { price: string; description?: string; token?: string }>) => SlyX402Provider;\n };\n\n /**\n * AP2 (Agent-to-Agent Protocol) client\n * Google's mandate-based payment protocol\n */\n public readonly ap2: AP2Client;\n\n /**\n * ACP (Agentic Commerce Protocol) client\n * Stripe/OpenAI's checkout-based payment protocol\n */\n public readonly acp: ACPClient;\n\n /**\n * UCP (Universal Commerce Protocol) client\n * Google+Shopify's agentic commerce protocol\n */\n public readonly ucp: UCPClient;\n\n /**\n * Capabilities client for tool discovery\n * Enables AI agents to discover available Sly operations\n */\n public readonly capabilities: CapabilitiesClient;\n\n /**\n * LangChain tools integration\n */\n public readonly langchain: LangChainTools;\n\n /**\n * Card network integration (Visa VIC, Mastercard Agent Pay)\n * Accept payments from AI agents using Web Bot Auth\n */\n public readonly cards: CardsClient;\n\n /**\n * A2A (Agent-to-Agent Protocol) client\n * Google's task-based protocol for inter-agent communication\n */\n public readonly a2a: A2AClient;\n\n /**\n * Agent Wallets client\n * Contract policy evaluation, exposure tracking, wallet management\n */\n public readonly agentWallets: AgentWalletsClient;\n\n /**\n * MPP (Machine Payments Protocol) client\n * Governed machine-to-machine payments and streaming sessions\n */\n public readonly mpp: MPPClient;\n\n constructor(config: SlyConfig) {\n // Validate API key\n if (!config.apiKey || config.apiKey.trim() === '') {\n throw new Error('API key is required');\n }\n\n // Resolve environment: explicit > inferred from key > default to sandbox\n const resolvedEnvironment = config.environment\n ?? inferEnvironmentFromKey(config.apiKey)\n ?? 'sandbox';\n const resolvedConfig = { ...config, environment: resolvedEnvironment };\n\n super(resolvedConfig);\n\n // Initialize x402 protocol helpers\n this.x402 = {\n createClient: (overrides?: Partial<SlyConfig>) => {\n return new SlyX402Client({\n ...resolvedConfig,\n ...overrides,\n });\n },\n createProvider: (routes) => {\n return new SlyX402Provider({\n apiKey: config.apiKey,\n environment: resolvedEnvironment,\n routes,\n facilitatorUrl: config.facilitatorUrl,\n });\n },\n };\n\n // Initialize protocol clients\n this.ap2 = new AP2Client(this);\n this.acp = new ACPClient(this);\n this.ucp = new UCPClient(this);\n\n // Initialize capabilities client\n this.capabilities = new CapabilitiesClient(this);\n\n // Initialize LangChain tools\n this.langchain = new LangChainTools(this);\n\n // Initialize Cards client\n this.cards = new CardsClient(this);\n\n // Initialize A2A client\n this.a2a = new A2AClient(this);\n\n // Initialize Agent Wallets client (Epic 18)\n this.agentWallets = new AgentWalletsClient(this);\n\n // Initialize MPP client (Epic 71)\n this.mpp = new MPPClient(this);\n }\n}\n\n// Backward compatibility alias\nexport { Sly as PayOS };\n\n// Export types\nexport * from './types';\nexport * from './config';\nexport * from './client';\nexport * from './auth';\n\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { L as LangChainTools } from './index.mjs';
|
|
2
|
+
import './types-df1EICn_.mjs';
|
|
3
|
+
import './client-Cwe2CLU7.mjs';
|
|
4
|
+
import './x402.mjs';
|
|
5
|
+
import 'express';
|
|
6
|
+
import './ap2.mjs';
|
|
7
|
+
import './acp.mjs';
|
|
8
|
+
import './ucp.mjs';
|
|
9
|
+
import './cards.mjs';
|
|
10
|
+
import './a2a.mjs';
|
|
11
|
+
import '@sly/types';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { L as LangChainTools } from './index.js';
|
|
2
|
+
import './types-df1EICn_.js';
|
|
3
|
+
import './client-CyJe3uWO.js';
|
|
4
|
+
import './x402.js';
|
|
5
|
+
import 'express';
|
|
6
|
+
import './ap2.js';
|
|
7
|
+
import './acp.js';
|
|
8
|
+
import './ucp.js';
|
|
9
|
+
import './cards.js';
|
|
10
|
+
import './a2a.js';
|
|
11
|
+
import '@sly/types';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/langchain/tools.ts
|
|
4
|
+
var LangChainTools = class {
|
|
5
|
+
constructor(payos) {
|
|
6
|
+
this.payos = payos;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get all PayOS capabilities as LangChain tools
|
|
10
|
+
*/
|
|
11
|
+
async getTools() {
|
|
12
|
+
return this.payos.capabilities.toLangChain();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get a specific tool by name
|
|
16
|
+
*/
|
|
17
|
+
async getTool(name) {
|
|
18
|
+
const tools = await this.getTools();
|
|
19
|
+
return tools.find((tool) => tool.name === name);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
exports.LangChainTools = LangChainTools;
|
|
24
|
+
//# sourceMappingURL=langchain.js.map
|
|
25
|
+
//# sourceMappingURL=langchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/langchain/tools.ts"],"names":[],"mappings":";;;AAMO,IAAM,iBAAN,MAAqB;AAAA,EAG1B,YAAY,KAAA,EAAc;AACxB,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,QAAA,GAAW;AACtB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,WAAA,EAAY;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,QAAQ,IAAA,EAAc;AACjC,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAA,EAAS;AAClC,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,EAC9C;AACF","file":"langchain.js","sourcesContent":["/**\n * LangChain Tools Wrapper for PayOS SDK\n */\n\nimport { PayOS } from '../index';\n\nexport class LangChainTools {\n private payos: PayOS;\n\n constructor(payos: PayOS) {\n this.payos = payos;\n }\n\n /**\n * Get all PayOS capabilities as LangChain tools\n */\n public async getTools() {\n return this.payos.capabilities.toLangChain();\n }\n\n /**\n * Get a specific tool by name\n */\n public async getTool(name: string) {\n const tools = await this.getTools();\n return tools.find(tool => tool.name === name);\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/langchain/tools.ts
|
|
2
|
+
var LangChainTools = class {
|
|
3
|
+
constructor(payos) {
|
|
4
|
+
this.payos = payos;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Get all PayOS capabilities as LangChain tools
|
|
8
|
+
*/
|
|
9
|
+
async getTools() {
|
|
10
|
+
return this.payos.capabilities.toLangChain();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get a specific tool by name
|
|
14
|
+
*/
|
|
15
|
+
async getTool(name) {
|
|
16
|
+
const tools = await this.getTools();
|
|
17
|
+
return tools.find((tool) => tool.name === name);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { LangChainTools };
|
|
22
|
+
//# sourceMappingURL=langchain.mjs.map
|
|
23
|
+
//# sourceMappingURL=langchain.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/langchain/tools.ts"],"names":[],"mappings":";AAMO,IAAM,iBAAN,MAAqB;AAAA,EAG1B,YAAY,KAAA,EAAc;AACxB,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,QAAA,GAAW;AACtB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,WAAA,EAAY;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,QAAQ,IAAA,EAAc;AACjC,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAA,EAAS;AAClC,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,EAC9C;AACF","file":"langchain.mjs","sourcesContent":["/**\n * LangChain Tools Wrapper for PayOS SDK\n */\n\nimport { PayOS } from '../index';\n\nexport class LangChainTools {\n private payos: PayOS;\n\n constructor(payos: PayOS) {\n this.payos = payos;\n }\n\n /**\n * Get all PayOS capabilities as LangChain tools\n */\n public async getTools() {\n return this.payos.capabilities.toLangChain();\n }\n\n /**\n * Get a specific tool by name\n */\n public async getTool(name: string) {\n const tools = await this.getTools();\n return tools.find(tool => tool.name === name);\n }\n}\n"]}
|